使用php

时间:2017-11-09 06:01:59

标签: php session

我在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);
}
?>

1 个答案:

答案 0 :(得分:0)

根据新的connection.php代码::

更新了答案

您似乎没有在代码中包含mysqli类,因此您实例化的尝试将失败,您应该获得白页或某种错误,具体取决于您的php.ini配置。在任何代码中,我假设你没有那个类。如果是这种情况,您需要将代码转换为直接使用mysqli_函数或创建/安装mysqli类。您将使用的直接函数如下:

$conn = mysqli_connect // etc...    

--------------上一个答案--------------

PASSWORD是mysql中的保留字

PASSWORD=

应该(注意反引号)

`PASSWORD`=

或者更好的是,将列的名称更改为user_password,pass或任何您想要的名称。

我相信这样可以解决问题。

这里有一个完整的mysql保留字列表:

Mysql Keywords/Reserved Words List