[英]Session is destroyed on page refresh in PHP
我正在使用PHP開發一個Web應用程序,用戶最初必須登錄並查看其內容。 我正在使用PHP會話來維護狀態。 我遇到了以下問題:
我是PHP的新手,所以我不知道如何解決這些問題。 我在stackoverflow中提到了幾個問題,但他們都說會話不會在頁面刷新時被銷毀。 我無法理解我的頁面出了什么問題。 非常感謝任何有解釋的解決方案。
登錄頁面
<?php
session_start();
class Sessions{
public static function setSessionState($userdata){
unset($userdata['password']);
unset($userdata['timestamp']);
$_SESSION['user']=$userdata;
}
}
if(isset($_POST['username']) && isset($_POST['password'])){
$dbcon = new DBConnection();
$dbcon->connect();
$username= strip_tags(stripslashes(trim($_POST['username'])));
$password = strip_tags(stripcslashes($_POST['password']));
echo "<script>alert($username);</script>";
$result = $dbcon->getUser($username,$password);
if(mysqli_num_rows($result)==1){
$user = $dbcon->getUserData($result); #getUserData function accepts mysqli result as an input and returns a row(array) of user details.
if(isset($user)){
Sessions::setSessionState($user);
header("location:index.php");
}
else{
echo "user variable is not set!!!";
}
}
else if(mysqli_num_rows($result)==0){
echo "Login error! Username or Password incorrect!";
}
else{
die("Unknown Error occured!");
}
}
............
索引頁面(用戶的私有內容可見)
<?php
session_start();
if(isset($_SESSION['user'])){
print_r($_SESSION['user']);
}
else{
echo "session variable not set";
}
?>
謝謝。
我終於找到了答案,這實際上是我的壞事。 我沒有提到index.php文件的最后一部分,因為我雖然那部分是無關緊要的。在那部分我有一個部分,
<form action="<?php session_destroy(); ?>">
在評論session_destroy()方法調用之后,我可以解決我的問題並使會話保持活動狀態。
對不起,代碼不全。
嘗試這個
class Sessions{
public static function setSessionState($userdata){
if ( !isset($_SESSION['user']) ) {
$_SESSION['user'] = $userdata;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.