Php $\在刷新或等待几次后才会更新会话
因此,当我登录并执行location.reload()时,$\u会话不会更新,直到我刷新几次或等待30-60秒。Php $\在刷新或等待几次后才会更新会话,php,ajax,session,Php,Ajax,Session,因此,当我登录并执行location.reload()时,$\u会话不会更新,直到我刷新几次或等待30-60秒。 它看起来更像是基于时间的,但不能确定 因此,我一直在检查stackoverflow,但通过从非www.到www.执行301到解决了许多问题。(我在.htaccess中执行了此操作)。 我还将我的会话设置为启动();在身体的顶部 if(!isset($_SESSION['username'])): ?> <div class="right"><s
它看起来更像是基于时间的,但不能确定 因此,我一直在检查stackoverflow,但通过从非www.到www.执行301到解决了许多问题。(我在.htaccess中执行了此操作)。
我还将我的会话设置为启动();在身体的顶部
if(!isset($_SESSION['username'])): ?>
<div class="right"><span class="button menuButton dropdownTrigger" data-dropdown-id="1"><a>Logga In</a></div>
<?php else: ?>
<div class="right"><span class="button menuButton"><a>Profil</a></div>
<?php endif; ?>
不要将
会话\u start()
放入if
块中。正如我在你帖子的评论中多次提到的那样,你需要在每个请求上运行一次并且只运行一次session\u start()
。如果您仅在密码\u验证()
成功时运行它,则不会在任何其他请求上使用您的会话。那是你的问题
发件人:
session_start()根据通过GET或POST请求传递的会话标识符,或通过cookie传递的会话标识符,创建会话,或恢复当前会话
为了安全起见,将其作为每次加载页面时执行的第一行代码,除非您正在做一些非常花哨的事情(您不是),并且确切地知道您正在做什么
为了更加清楚,您的代码应该如下所示:
<?php
session_start(); // PUT THIS HERE
//If max attempts not exceeded, continue
// Checks password entered against db password hash
if (password_verify($mypassword, $result['password']) && $result['verified'] == '1') {
//Success! Register $myusername, $mypassword and return "true"
$success = 'true';
$_SESSION['username'] = $myusername;
}
所以我测试了关闭缓存,然后它工作了。已经与我的主机交谈过,他们认为这是他们的问题,而不是我的问题。你的可能重复写道,“我还将我的会话_start();放在了正文的顶部。”不要将其放在
标记的顶部。将它放在每个脚本的顶部,在任何类型的输出之前,包括
开始标记。您希望在任何输出之前,每个请求只运行一次。@EdCottrell您的意思是这样吗?检查我的update@MrNaitX对请参阅。@EdCottrell请在文本中检查我的更新!:)
<?php
session_start();
?>
<!doctype html>
<html>
//If max attempts not exceeded, continue
// Checks password entered against db password hash
if (password_verify($mypassword, $result['password']) && $result['verified'] == '1') {
//Success! Register $myusername, $mypassword and return "true"
$success = 'true';
session_start();
$_SESSION['username'] = $myusername;
}
<?php
session_start(); // PUT THIS HERE
//If max attempts not exceeded, continue
// Checks password entered against db password hash
if (password_verify($mypassword, $result['password']) && $result['verified'] == '1') {
//Success! Register $myusername, $mypassword and return "true"
$success = 'true';
$_SESSION['username'] = $myusername;
}