Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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,我是PHP新手,所以有一个非常基本的问题 我正在创建一个页面我正在创建一个最初带有用户id和密码的页面,一旦输入了用户id和密码并单击了提交,就会调用AJAX来根据数据库验证这一点。 验证完成后,我想刷新页面,向用户显示更多选项 我正在考虑使用会话 但每次我刷新页面时,都会创建一个新会话 我把它放在页面顶部作为测试,每次按下F5时,我都会在页面顶部看到“新建会话” <?php if (!isset($_SESSION)){ session_start(); echo("ne

我是PHP新手,所以有一个非常基本的问题 我正在创建一个页面我正在创建一个最初带有用户id和密码的页面,一旦输入了用户id和密码并单击了提交,就会调用AJAX来根据数据库验证这一点。 验证完成后,我想刷新页面,向用户显示更多选项 我正在考虑使用会话 但每次我刷新页面时,都会创建一个新会话 我把它放在页面顶部作为测试,每次按下F5时,我都会在页面顶部看到“新建会话”

<?php
if (!isset($_SESSION)){
    session_start();
    echo("new session");
}
else
{
    echo("old session");
}
?>

会话\u start
必须始终在与会话相关的任何操作之前调用。调用它后,可以获取或设置
$\u会话
变量的值

您的代码应该是:

<?php
session_start(); // always call this at top
if (!isset($_SESSION['has_been_here'])){
    $_SESSION['has_been_here'] = true;
    echo("new session");
}
else
{
    echo("already been here");
}
?>

来自php.net:

session_start — Start new or resume existing session
这意味着您必须从

session_start();

在每一页的第一行,它将开始或继续它。查看php.net,它将帮助您了解如何正确处理和检查会话

我想你误解了
session\u start
的作用。从文档中可以看到:“session_start()根据通过GET或POST请求传递的会话标识符或通过cookie传递的会话标识符创建会话或恢复当前会话。”
$\u session
在调用
session_start()
之前将永远不会被设置。您应该在每个启用会话的页面顶部调用
session\u start()
。它不会覆盖现有会话。相反,它将允许您访问用户的当前会话,如果还不存在,则创建一个会话。如果要显式启动新会话,请先使用
session\u destroy()
,然后使用
session\u start()
。非常感谢,这回答了我的问题。现在我遇到了一个新问题。我有一个在提交后调用的AJAX。开始另一个问题