Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $\在刷新或等待几次后才会更新会话_Php_Ajax_Session - Fatal编程技术网

Php $\在刷新或等待几次后才会更新会话

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

因此,当我登录并执行location.reload()时,$\u会话不会更新,直到我刷新几次或等待30-60秒。
它看起来更像是基于时间的,但不能确定

因此,我一直在检查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;
}