PHP 登录脚本生成会话但不生成 header(( 移动到主页。
<?php
session_start();
$message="";
if(isset($_REQUEST['submit'])) {
if(count($_POST)>0) {
$username=$_POST["user_name"];
$password=$_POST["password"];
if(!empty($username) && !empty($password)){
//include connection file
require_once "connection.php";
$sql="SELECT * FROM `admin_users` WHERE `admin_user` LIKE 'username' AND `admin_pass`LIKE'$password'";
$result = mysqli_query($con,$sql);
$row=mysqli_fetch_row($result);
if(is_array($row)) {
$_SESSION["user_id"] = $row[0];
$_SESSION["admin_name"] = $row[1];
$_SESSION["type"]="admin_map";
mysql_close($dbhandle);
} else {
$message = "Invalid Username or Password!";
}
}
if(isset($_SESSION["user_id"]) && isset($_SESSION["admin_name"]) && isset($_SESSION["admin_name"])=="admin@map") {
header("Location:user_dashboard.php");
}
}
else{
$message = "Fill All Fields!";
}
}
?>
首先在查询中添加空格。并且您在用户名 $username
之前缺少 $ 符号。
$sql="SELECT * FROM `admin_users` WHERE `admin_user` LIKE '$username' AND `admin_pass` LIKE '$password'";
我不知道你为什么在登录表单中使用 LIKE。这必须使用 = 运算符进行检查。(只是建议(
代码中的主要问题是使用扩展mysqli_*
并使用mysql_close()
关闭数据库连接。
mysql_close($dbhandle);
这应该是
mysqli_close($dbhandle);
但是在 PHP 脚本的末尾使用连接关闭,而不是在两者之间。
更改
header("Location:user_dashboard.php");
自
echo "<script>window.locaion='user_dashboard.php'</script>"
或在代码的第一行中添加ob_start()