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

回到顶部