簡體   English   中英

為什么我的PHP會話變量不起作用?

[英]Why are my PHP session variables not working?

突然,我的PHP會話變量停止存儲了。 以前,它可以正常工作,但沒有任何明顯的變化,變量不再存儲。

我嘗試在adminlogin.php上使用代碼來顯示所有現有的會話變量,實際上,使用登錄表單時並未存儲它們。 重新加載頁面后,將不再存儲它們。

我還創建了一個新文件random.php,其中將一個隨機數存儲到$ _SESSION ['Number']。 完成之后,我回到adminlogin.php,填寫該頁面上的表單,然后重新加載該頁面。 再次,該表單應該存儲的會話變量不在會話數組中,但是顯示了隨機數$ _SESSION ['Number']。

connect.php(標題)

<?php 

session_start();

$user = 'root';
$password = 'root';
$db = 'sharkcard';
$host = 'localhost';
$port = 3306;

$link = mysqli_init();
$connection = new mysqli(

   $host, 
   $user, 
   $password, 
   $db
);

if(!(empty($_SESSION['LoggedIn'])) && !empty($_SESSION['StudentID']))
{
    $loggedin = 1;
}
else{
    $loggedin = 0;
}


?>

adminlogin.php

<?php include 'connect.php';
    if($_SESSION['LoggedIn'] == 1)
{
        echo "Welcome back! You are: " . $_SESSION['StudentID'] . " " . $_SESSION['Row']['FirstName'] . " " . $_SESSION['Row']['LastName'] . "<br>";
    }

else{

if(!($_SERVER["REQUEST_METHOD"] == "POST")){
?>

<form action="adminlogin.php" method="POST">
    Password: <input type="password" name="password" autofocus="autofocus"><br>
    sharkcard ID: <input type="text" name="id"><br>
    <input type="submit">
</form>

<?php
}

else if(empty($_POST['id']) || empty($_POST['password'])){
    echo "You left something blank! Reload the page and try again.";
}

else {

    $id = ($_POST['id']);
    $password = md5($_POST['password']);
    $checklogin = $connection->query("SELECT * FROM students WHERE StudentID = '".$id."' AND AdminPassword = '".$password."' AND AdminPrivileges = 1");
    $num = mysqli_num_rows($checklogin);
    if(mysqli_num_rows($checklogin) == 1)
    {
        $row = mysqli_fetch_array($checklogin);

        $_SESSION['StudentID'] = $id;
        $_SESSION['Row'] = $row; // added
        $_SESSION['LoggedIn'] = 1;


        echo "<h1><font color=\"green\">Success</font></h1>";

        echo "<b>Account Information</b><br>" . $_SESSION['StudentID'] . " " . $_SESSION['Row']['FirstName'] . " ". $_SESSION['Row']['LastName'];

    }
    else
    {
        echo "<h1><font color=\"red\">Failure</font></h1>";
        echo "<p>Sorry, your account could not be found. Please reload and try again.</a>.</p>";
    }
}
}
?>

我相信問題是adminlogin.php的第2行if($_SESSION['LoggedIn'] == 1)應該是if($loggedin)

$_SESSION['LoggedIn']$_SESSION['StudentID']也不是數組,因此您應該在第19行的connect.php中使用isset()而不是empty()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM