我遇到了一個我試圖創建的簡單登錄系統的問題。這裏是我的設置:PHP登錄腳本會話不存活
的index.php
<?php if(!isset($_SESSION['username'])){
session_start();
//present login form with action=login.php
} else {
//display actual page
}
?>
的login.php
<?php
if(!empty($_SESSION['username'])){
echo $_SESSION['username'];
} else {
$username=$_POST['username'];
$password=sha1($_POST['password']);
$link=mysqli_connect("localhost","root","password","database",3306,"/tmp/mysql.sock");
$query="SELECT * FROM login WHERE `name`='".$username."' AND `passwordhash`='".$password."' LIMIT 1";
$result=mysqli_query($link,$query);
if(mysqli_num_rows($result)==1){
session_start();
$_SESSION['username']=$username;
$row=mysqli_fetch_assoc($result);
$_SESSION['firstname']=$row['firstname'];
$_SESSION['lastname']=$row['lastname'];
echo "Username: ". $_SESSION['username']." Name: ".$_SESSION['firstname']." ".$_SESSION['lastname']; //this is just here as POC. If I redirect to index.php (using header()), it shows the login form (claims $_SESSION['username'] is unset).
}
}
?>
一次我登錄,它顯示了我的用戶名和姓氏和名字只是正常的login.php(不是數據庫問題)。但是如果我重定向到index.php,它會立即顯示登錄表單。有什麼問題? 編輯:即使添加session_start()login.php後,結果相同。
您還必須調用'在session_start()'的所有文件。 –
調用'session_start();'在使用'$ _SESSION'之前 – Musa