【发布时间】:2017-01-04 17:54:56
【问题描述】:
我正在尝试制作登录表单,从数据库中检查用户名是否存在,如果为真,那么它将我重定向到另一个显示欢迎 + 用户名的页面,我想知道是否需要会话来实现条件或不是?因为我的代码没有错误,也没有显示欢迎信息。
让我解释一下,我在 login.php 中有一个名为“$welcome”的变量,假设在使用有效的用户名和密码提交登录表单时会回显它,然后它将我重定向到 admin-panel.php 并回显变量“$欢迎”。这是我的工作
login.php
<?php
session_start();
include "connection.php";
?>
<?php
if(isset($_POST['submit'])){
$admin_user = isset($_POST['username']) ? $_POST['username'] : '';
$admin_pass = isset($_POST['password']) ? $_POST['password'] : '';
$sql = mysqli_stmt_init($conn);
if ($sql = mysqli_prepare($conn, "SELECT username, password FROM account WHERE username = ? AND password = ?")){
mysqli_stmt_bind_param($sql, "ss", $admin_user, $admin_pass);
mysqli_stmt_execute($sql);
mysqli_stmt_bind_result($sql, $username,$password);
mysqli_stmt_fetch($sql);
mysqli_stmt_close($sql);
}
global $username, $password;
if(empty($admin_user) || empty($admin_pass)){
$msg = "<span class='text-danger'> Username or Password Can't be empty </span>";
} elseif($admin_user != $username || $admin_pass != $password){
$msg = "<span class='text-danger'> Username or Password is not valid </span>";
} else{
header("location:admin-panel.php");
$welcome = "<h2>Welcome ". $admin_user ."!!!</h2>";
$_SESSION['welcome'] = $welcome;
}
mysqli_close($conn);
}
?>
index.php
<?php
include "login.php";
global $msg;
?>
<!DOCTYPE html>
<html>
<head>
<title>Admin Panel</title>
</head>
<body>
<form method="post">
<?php if(isset($msg)){ ?>
<div>
<?php echo $msg; ?>
</div>
<?php } ?>
<div>
<label for="username">Username:</label>
<input type="text" name="username">
</div>
<div>
<label for="password">Password:</label>
<input type="password" name="password">
</div>
<div>
<input type="submit" name="submit">
</div>
</form>
admin-panel.php
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>Welcome Admin</title>
</head>
<body>
<div>
<?php
echo $_SESSION['welcome'];
?>
</div>
</body>
</html>
【问题讨论】:
-
这正是会话的用途
-
希望您也计划对密码进行哈希处理,以及准备好的声明。
-
...并使用参数化查询。
-
@RiggsFolly 刚刚用准备好的语句更新了代码......干杯人!