我在php中使用此脚本作为我的登录系统,而我处理的会话值却无法正常工作
案例是当我没有验证测试页面中的会话值时,这些会话值从索引页面传递,登录有效并在成功登录后进入测试页面,但是当我使用会话值在测试页面中验证登录时不成功,输入凭证后页面不会转到test.php,它只停留在index.php上
我能知道我做了什么错吗?提前致谢
登录页面
<?php
require 'connection.php';
error_reporting(0);
$employee_id = $connection->real_escape_string($_POST['EMPLOYEE_ID']);
$password = $connection->real_escape_string($_POST['PASSWORD']);
$sql = "SELECT EMPLOYEE_ID,EMP_NAME,DESG FROM EMPLOYEELOGIN WHERE EMPLOYEE_ID='" . $employee_id . "' AND PASSWORD='" . $password . "'";
$result = $connection->query($sql);
session_start();
if ($result->num_rows == 1) {
$row = $result->fetch_row();
// print_r($row);
$_SESSION['EMPLOYEE_ID'] = $row[0];
$_SESSION['EMPNAME'] = $row[1];
$_SESSION['DESG'] = $row[2];
header('Location: test.php');
}
?>
// The form used
<form role="form" method="post" action='index.php' class="m-t-20">
<input class="form-control" type="text" name="EMPLOYEE_ID" required="" placeholder="Username">
<input class="form-control" type="password" name="PASSWORD" required="" placeholder="Password">
<input type="submit" class="btn btn-primary" name="submit" value="Login">
</form>
测试页面
<?php
session_start();
// error_reporting(0);
if (isset($_SESSION['EMPLOYEE_ID'])) {
if ($_SESSION['EMP_NAME'] != 1) {
header("Location: index.php");
} else {
require 'connection.php';
}
} else {
header("Location: index.php");
}
?>
connection.php
<?php
$connection = new mysqli("localhost","root","123","testdatabase");
if($connection->connect_error){
die("Connection Failed<br>".$connection->connect_error);
}
?>
答案 0 :(得分:0)
根据新的connection.php代码::
更新了答案您似乎没有在代码中包含mysqli类,因此您实例化的尝试将失败,您应该获得白页或某种错误,具体取决于您的php.ini配置。在任何代码中,我假设你没有那个类。如果是这种情况,您需要将代码转换为直接使用mysqli_函数或创建/安装mysqli类。您将使用的直接函数如下:
$conn = mysqli_connect // etc...
--------------上一个答案--------------
PASSWORD是mysql中的保留字
PASSWORD=
应该(注意反引号)
`PASSWORD`=
或者更好的是,将列的名称更改为user_password,pass或任何您想要的名称。
我相信这样可以解决问题。
这里有一个完整的mysql保留字列表: