php用户登录界面代码
时间: 2023-10-21 07:04:02 浏览: 38
以下是一个简单的 PHP 用户登录界面的代码示例:
```php
<?php
session_start(); // 启动会话
// 检查用户是否已经登录,如果已经登录,则重定向到主页
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
header("location: index.php");
exit;
}
// 引入数据库连接文件
require_once "config.php";
$username = $password = "";
$username_err = $password_err = "";
// 处理表单提交数据
if($_SERVER["REQUEST_METHOD"] == "POST"){
// 检查用户名是否为空
if(empty(trim($_POST["username"]))){
$username_err = "请输入用户名.";
} else{
$username = trim($_POST["username"]);
}
// 检查密码是否为空
if(empty(trim($_POST["password"]))){
$password_err = "请输入密码.";
} else{
$password = trim($_POST["password"]);
}
// 验证用户登录信息
if(empty($username_err) && empty($password_err)){
$sql = "SELECT id, username, password FROM users WHERE username = ?";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, "s", $param_username);
$param_username = $username;
if(mysqli_stmt_execute($stmt)){
mysqli_stmt_store_result($stmt);
// 检查用户名是否存在,如果存在,则验证密码
if(mysqli_stmt_num_rows($stmt) == 1){
mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);
if(mysqli_stmt_fetch($stmt)){
if(password_verify($password, $hashed_password)){
// 密码正确,启动新会话
session_start();
// 存储数据到会话中
$_SESSION["loggedin"] = true;
$_SESSION["id"] = $id;
$_SESSION["username"] = $username;
// 重定向到主页
header("location: index.php");
} else{
// 密码错误,显示错误消息
$password_err = "密码错误.";
}
}
} else{
// 用户名不存在,显示错误消息
$username_err = "无此用户名.";
}
} else{
echo "出现了一些错误,请稍后再试.";
}
// 关闭声明
mysqli_stmt_close($stmt);
}
}
// 关闭数据库连接
mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
<style type="text/css">
body{ font: 14px sans-serif; }
.wrapper{ width: 350px; padding: 20px; }
</style>
</head>
<body>
<div class="wrapper">
<h2>登录</h2>
<p>请输入您的登录凭据.</p>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
<label>用户名</label>
<input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
<span class="help-block"><?php echo $username_err; ?></span>
</div>
<div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
<label>密码</label>
<input type="password" name="password" class="form-control">
<span class="help-block"><?php echo $password_err; ?></span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="登录">
</div>
<p>没有账户?<a href="register.php">点击此处注册账户</a>.</p>
</form>
</div>
</body>
</html>
```
以上代码包括用户输入验证和数据库查询操作,同时也包含了 HTML 和 CSS 样式,可以在浏览器中运行并测试。但是需要注意以下几点:
1. 没有定义 `$link` 变量,需要在代码中定义数据库连接,或者使用自己的数据库连接方式。
2. 在提交表单之前需要验证输入字段是否为空,否则可能会导致 SQL 注入攻击。
3. 在此代码示例中,密码只是使用了 PHP 的 `password_hash()` 函数进行了哈希处理,但是需要注意的是,密码应该使用更安全的方法进行加密处理,例如使用 `bcrypt` 或 `scrypt` 等密码哈希算法。