session_destroy()没有记录我出去
每当我运行logout.php脚本,然后再回到那个没有被登录,将无我还在session_destroy()没有记录我出去
logout.php登录保护的网页上
<?php session_start();
session_unset();
session_destroy();
header("Location: ../index.php");
exit();
?>
的login.php
$userlogin = user_login($email, $password.$salt); if ($userlogin==false){
$errors[]='Wrong email/password combination.';
} else {
//set the user session
$_SESSION['UserId']=$userlogin;
$_SESSION['LoginIP']=$_SERVER['REMOTE_ADDR'];
$db->query("UPDATE users SET ipadd='".$_SERVER['REMOTE_ADDR']."' WHERE user_id=".$_SESSION['UserId']."");
echo '<meta http-equiv="refresh" content="0; URL=index.php">';
检查记录在片段
/* Check if user is logged in or not */ function loggedin(){
return (isset($_SESSION['UserId'])) ? true : false;
}
if (loggedin()==true){
$session_user_id = $_SESSION['UserId'];
$user_data = user_data($session_user_id,'full_name','username');
$rezult =$db->query("SELECT ipadd FROM users WHERE user_id=".$_SESSION['UserId']."");
while($rez = $rezult->fetch_assoc()){
if ($rez['ipadd']==$_SERVER['REMOTE_ADDR']) {
} else {
echo '<meta http-equiv="refresh" content="0; URL=logout2.php">';
}
}
}
一直在看同一问题的帖子,但无论我尝试仍然得到相同的问题。任何建议将非常感激!
回答:
我总是喜欢破坏服务器会话和客户端的cookie,如有任何错误,请尝试手动覆盖所有选项。
你可以摧毁PHP饼干:
setcookie(session_name(), '', time() - 3600, $cookie_path, $cookie_domain, $cookie_secure, $cookie_httponly); <?php
$cookie_path = "...";
$cookie_domain = "...";
$cookie_secure = "...";
$cookie_httponly = "...";
session_start();
session_unset();
session_destroy();
setcookie(session_name(), '', time() - 3600, $cookie_path, $cookie_domain,$cookie_secure, $cookie_httponly);
header("Location: ../index.php");
exit();
time() - 3600
使得当前的时间,这使得它无效之前Cookie的到期时间。
调查的另一个选项是登出页面上的session_regenerate_id()
。有些参考页面下方:
php.net - session-regenerate-id
https://stackoverflow.com/a/22965580/1246494
回答:
我想在你的index.php文件应该有这些行:
if(!isset($_SESSION["session_name"])){ header("Location: somewhere_mainpage.php");
}
这是更好地使所有网页有这些线。如果没有会话开始,这些行将发送标题到另一个页面。
回答:
这是从php.net http://php.net/manual/en/function.session-destroy.php 注意:您不必从通常的代码中调用session_destroy()。清理$ _SESSION数组而不是销毁会话数据。
所以你只需要$ _SESSION = null,并且注销应该发生。
回答:
<?php session_unset();
session_destroy();
header("Location: ../index.php");
?>
应该工作,否则你可能会取消设置值
<?php unset($_SESSION['UserId']); // Unsets the UserId Variable reuse for each variable
session_destroy();
header("Location: ../index.php");
?>
你尝试过session_destroy()?
也是我不知道无论您需要在session_start()当你在会议闭幕,从内存中你只需要启动会议
回答:
我相信session_start();
函数调用应该是你的登录页面上,当用户登录数据是正确的,并在注销PHP代码,你应该设置
session_destroy();
或unset($_SESSION['UserId'];
注销。php:
<?php session_destroy();
/* * OR * */
//unset($_SESSION['UserId'];
header("Location: ../index.php");
exit();
?>
以上是 session_destroy()没有记录我出去 的全部内容, 来源链接: utcz.com/qa/260168.html