我正在使用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";
}
?>
谢谢。
答案 0 :(得分:2)
我终于找到了答案,这实际上是我的坏事。我没有提到index.php文件的最后一部分,因为我虽然那部分是无关紧要的。在那部分我有一个部分,
<form action="<?php session_destroy(); ?>">
在评论session_destroy()方法调用之后,我可以解决我的问题并使会话保持活动状态。
抱歉代码不完整。
答案 1 :(得分:0)
试试这个
class Sessions{
public static function setSessionState($userdata){
if ( !isset($_SESSION['user']) ) {
$_SESSION['user'] = $userdata;
}
}
}