$ _SESSION变量验证导致空白PHP页面/无内容

时间:2015-05-26 07:54:10

标签: php validation session

我的登录页面上的成功登录应该直接指向主页(它会这样做 - 我仔细查看是否设置了变量,并且输入了正确的用户名/密码)。否则,登录页面应该是私有的。

登录PHP(工作正常)

<?php
session_start();
require_once("../inc_files/Lesson_5_DB_Connection.php"); 
error_reporting(E_ALL);
ini_set('display_errors', 1);

    $error_message= "";
    $user_name = "";
    $user_password= "";
    $_SESSION['username']="";
    $_SESSION['employeeNumber']="";

    if (isset($_POST['submit'])) {

        $user_name = $_POST['user'];
        $user_password= $_POST['pass'];



        // ADD QUERY TO CHECK IF USER/PASS COMBO IS CORRECT
        if(!empty($user_name) && !empty($user_password)) {

        $query = "SELECT * FROM employees WHERE username='$user_name' and password='$user_password'";

        $result = mysqli_query($dbc, $query)
            or die ('Error querying username/password request');

            if(mysqli_num_rows($result) == 1) {

             while ($row = mysqli_fetch_array($result)) {
                $_SESSION['username'] = $row['username'];
                $_SESSION['employeeNumber'] = $row['employeeNumber'];
             }

                 header("Location: /LESSON5/3%20-%20HOMEPAGE%20:%20WELCOME.php");
                exit;

            } // end if rows

            else {
                $error_message = "You were not able to log in";
            } // end else

        // Direct to other webpage

        } // end query

    } // end isset
?>

只有设置了$ _SESSION变量,才能看到主页。如果用户未登录(未设置会话变量),则主页应重定向到登录页面。现在,我添加了一个验证,以查看是否未设置变量(!isset)。此验证可防止页面显示任何内容。当我删除此验证时,HTML显示正常。当我删除验证并回显变量值时,我得到返回的值。

只是if(!isset($_SESSION['username']) && !isset($_SESSION['employeeNumber'])不会在页面上显示任何内容。

首页

<?php
    session_start();
    require_once("../inc_files/Lesson_5_DB_Connection.php");

    if(!isset($_SESSION['username']) && !isset($_SESSION['employeeNumber']) {

        header("Location: /LESSON5/1%20-%20LOGIN.php");
    }
?>

    <!DOCTYPE html>
    <head>
        <title></title>
          <meta charset="utf-8">
          <link type="text/css" rel="stylesheet" href="/LESSON5/5_Signup_CSS.css">
    </head>

    <body>
        <p><span id="logout"><a href="/LESSON5/4%20-%20LOGOUT%20PAGE.PHP">Logout</a></span></p>
        <hr>
        <h1>Welcome to my homepage! <br> You have successfully logged in.</h1>

    <?php
        mysqli_close($dbc);
    ?>

    </body>

    </html>

为什么验证会使PHP显示HTML(如果用户登录正确)或重定向页面(如果用户未登录),是否有任何理由?

1 个答案:

答案 0 :(得分:1)

基本上错误出现在你的if条件中。缺少一个括号。改变如下: -

if(!isset($_SESSION['username']) && !isset($_SESSION['employeeNumber']))

注意: - 尝试在所有php页面的顶部添加error_reporing,以便在发生错误时可以获得php错误。查看php网站上的error_reporing手册。感谢。

如果您使用的是本地服务器,则可以更改php.ini设置。

您可以轻松了解如何在Google上更改php.ini设置。

ini_set是php的功能是为了这个目的,如果你想以编程方式而不是直接使用php.ini。