2017-06-25 14 views
0

突然、私のPHPセッション変数が保存されなくなりました。以前はうまくいきましたが、目立った変更がなければ、変数はもう格納されません。PHPセッション変数が機能しないのはなぜですか?

adminlogin.phpのコードを使用して既存のセッション変数をすべて表示しようとしましたが、実際にはログインフォームの使用時に保存されませんでした。ページがリロードされると、それらはもう格納されません。

また、$ _SESSION ['Number']に乱数を格納したrandom.phpという新しいファイルを作成しました。それを行った後、私は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>"; 
    } 
} 
} 
?> 
+0

なぜパスワードを保存するのにMD5を使用していますか?私はあなたがこれで生きていないことを願っています。 –

答えて

0

私は問題もif($loggedin)

$_SESSION['LoggedIn']なければならないadminlogin.php if($_SESSION['LoggedIn'] == 1)のライン2であると信じ$_SESSION['StudentID']は配列ではないため、を使用する必要がありますempty()がconnect.phpの19行目にあります。

関連する問題