php 用户登录页面,验证用户和密码是否匹配,并产生验证码;
时间: 2023-08-04 09:04:27 浏览: 52
以下是一个简单的 PHP 用户登录页面示例,包括验证用户名和密码以及生成验证码:
```php
<?php
session_start(); // 启动会话
// 定义用户名和密码
$username = "admin";
$password = "123456";
// 验证用户输入的用户名和密码是否匹配
if(isset($_POST['submit'])) {
if($_POST['username'] === $username && $_POST['password'] === $password) {
// 用户名和密码匹配,设置 session 变量并跳转到欢迎页面
$_SESSION['username'] = $username;
header("Location: welcome.php");
exit;
} else {
// 用户名和密码不匹配,显示错误信息
$error = "用户名或密码错误!";
}
}
// 生成验证码
$verify_code = rand(1000,9999); // 随机生成 4 位数的验证码
$_SESSION['verify_code'] = $verify_code; // 将验证码存入 session
?>
<!DOCTYPE html>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<h2>用户登录</h2>
<?php if(isset($error)) echo "<p>$error</p>"; ?>
<form method="post" action="">
<label for="username">用户名:</label>
<input type="text" name="username" id="username" required><br><br>
<label for="password">密码:</label>
<input type="password" name="password" id="password" required><br><br>
<label for="verify_code">验证码:</label>
<input type="text" name="verify_code" id="verify_code" required>
<img src="verify_code.php" alt="验证码"><br><br>
<input type="submit" name="submit" value="登录">
</form>
</body>
</html>
```
上述代码中,通过 `session_start()` 启动会话,定义了一个用户名和密码,然后在提交表单时验证用户输入的用户名和密码是否匹配。如果匹配,则设置 `$_SESSION['username']` 变量并跳转到欢迎页面;如果不匹配,则显示错误信息。
同时,该页面还生成了一个验证码,生成的验证码存储在 `$_SESSION['verify_code']` 中。用户输入验证码后,可以在后台验证验证码是否正确。验证码的生成代码可以放在另一个 PHP 文件中,例如 `verify_code.php`:
```php
<?php
session_start(); // 启动会话
// 生成验证码
$verify_code = rand(1000,9999); // 随机生成 4 位数的验证码
$_SESSION['verify_code'] = $verify_code; // 将验证码存入 session
// 生成验证码图片
header("Content-Type: image/png"); // 设置 HTTP 响应头,告诉浏览器输出的是 PNG 图片
$image = imagecreate(60, 30); // 创建一个 60x30 的图片
$color = imagecolorallocate($image, 0, 0, 0); // 设置颜色
imagestring($image, 5, 10, 8, $verify_code, $color); // 在图片上写入验证码
imagepng($image); // 输出 PNG 格式的图片
imagedestroy($image); // 释放图片内存
?>
```
上述代码中,首先启动会话,然后生成一个 4 位数的验证码,并将其存入 `$_SESSION['verify_code']` 中。接着,使用 `header()` 函数设置 HTTP 响应头,告诉浏览器输出的是 PNG 图片。然后创建一个 60x30 的图片,设置颜色,并在图片上写入验证码。最后,使用 `imagepng()` 函数输出 PNG 格式的图片,并使用 `imagedestroy()` 函数释放图片内存。在登录页面中,使用 `<img>` 标签引用该验证码图片即可。
需要注意的是,该验证码实现简单,仅供参考,实际应用中需要更加严谨和安全的验证码机制。