我的php代码有点问题......你能帮帮我吗? 问题是,当我在我的logout.php中,取消设置并销毁会话时,它第一次加载我的其他页面时工作..但是当我立即刷新后,会话再次启动,我真的不明白?因为我有我的页面来查找具有特定名称的会话。这是我的代码:
的login.php:
<?php session_start();
//Get username and password
$email = $_POST['email'];
$password = $_POST['password'];
//Sorting special characters away, with exception of "-" and "."
stripslashes($email);
$email = preg_replace('/[^A-Za-z0-9@\.\-]/','', $email);
//Getting the password from the database
$link = mysqli_connect("****", "****", "****", "****");
if (mysqli_connect_errno($connect))
{
echo "Connection Failed!";
mysqli_close($connect);
}
$sql = "SELECT * FROM admins WHERE email = '". $email . "'";
if ($result = mysqli_query($link, $sql))
{
while ($row = mysqli_fetch_row($result))
{
$db_password = $row[2];
}
mysqli_free_result($result);
}
mysqli_close($connect);
//Compare DB-password to entered password
if ($db_password == $password)
{
$_SESSION['admin'] = $email;
header("Location: ../index.php");
exit();
}
header("Location: index.php");
exit();
?>
Logout.php:
if(!isset($_SESSION['admin']))
{
header("Location: ../index.php");
exit();
}
else
{
session_unset();
session_destroy();
echo '<h1>You have been succesfully logged out!</h>';
exit();
}
的index.php:
if (isset($_SESSION['admin']))
{
echo '<div id="admin"><br>
<h3>'.$_SESSION["admin"].'</h3>
<a href="http://www.mysite.com/admin"><span>Admin panel</span></a><br>
<a href="http://www.mysite.com/admin/logout.php"><span>Log out</span></a>
</div>';
}
是的,我在每个页面上都有session_start()
。
正如您在index.php中看到的那样,如果设置了$_SESSION['admin']
,我想要编写一些代码。当我在我的logout.php中销毁会话,并转到index.php时,它第一次加载页面时工作。但是我刷新了,代码重新出现,这意味着必须以某种方式重新设置会话!但我不知道为什么?请帮忙!
答案 0 :(得分:1)
可能是因为PHPSESSID cookie。只需从浏览器
中删除PHPSESSID cookie即可尝试if(!isset($_SESSION['admin']))
{
header("Location: ../index.php");
exit();
}
else
{
session_unset();
session_destroy();
setcookie('phpsessid','value',time()-1);
echo '<h1>You have been succesfully logged out!</h>';
exit();
}
答案 1 :(得分:0)
刷新后,您满足以下条件:
if ($db_password == $password)
连接建立,会话已创建,您将从login.php重定向到index.php。
更改此条件并使您的脚本正常工作