打开多个窗口选项卡时出现php会话问题
我有一个以session_start()开头的php页面,它将用户信息存储在session变量中。之后,它进入(1)长循环脚本进行计算或(2)数据查询部分,具体取决于上一个表单提交中的_POST数据 我想做一些查询,即使脚本仍然在另一个窗口中循环和获取数据。因此,我将有两个窗口选项卡,它们与分别执行(1)、(2)的php页面相同 问题是,除非在执行(1)和循环脚本之前使用session_destroy(),否则无法执行此操作。否则(2)将加载且无法打开。我真的不想破坏会话,否则用户将不得不一次又一次地登录。可能吗?谢谢 p、 s:当我这样做(1)和我打开一个匿名窗口做(2)。即使没有session\u destory(),我也没有这个问题 代码如下所示:打开多个窗口选项卡时出现php会话问题,php,session,Php,Session,我有一个以session_start()开头的php页面,它将用户信息存储在session变量中。之后,它进入(1)长循环脚本进行计算或(2)数据查询部分,具体取决于上一个表单提交中的_POST数据 我想做一些查询,即使脚本仍然在另一个窗口中循环和获取数据。因此,我将有两个窗口选项卡,它们与分别执行(1)、(2)的php页面相同 问题是,除非在执行(1)和循环脚本之前使用session_destroy(),否则无法执行此操作。否则(2)将加载且无法打开。我真的不想破坏会话,否则用户将不得不一次又
<?php
session_start();
echo "<form method='post'>
<input type='submit' id='one' name='one' value='one'>
<input type='submit' id='two' name='two' value='two'>
</form>";
$if_one = $_POST["one"];
$if_two = $_POST["two"];
if ($if_one) loop();
if ($if_two) query();
function loop()
{
//session_destroy();
$y = 0;
for ($i=0; $i<20000000; $i++)
{
$y += ($i * $i) % 5;
}
echo $y;
}
function query()
{
echo '222';
}
?>
你不需要这样做 当你调用session_start()时;创建了一个会话,它一直处于活动状态,直到php.ini中的超时或调用session_destroy()
您的错误在其他地方,是否在echo或print之后调用session_start?听起来问题不在于多个窗口中的会话,而在于第一个脚本在输出任何标题之前运行长循环,特别是其他页面需要使用同一会话的会话ID cookie。您可能应该启动会话并存储变量,然后将用户重定向到另一个页面进行长循环,或者输出某种内容,例如“欢迎!开始长循环…”我想我刚刚解决了这个问题。使用
session\u destroy()
,session\u write\u close()
将解决此问题 考虑到代码或多或少都是逻辑性的,我发现如果发布代码,遵循逻辑过程会更容易。确切地说,为什么需要使用session\u destroy
?cookie/头是否在长循环之前发送?如果没有,问题是会话尚未启动,从某种意义上说,浏览器具有要带到新窗口的会话ID。我可以在销毁会话时查询(1)是否循环。我将试着发布一个简短的代码。session_start()是我的php文件的第一行。@@@Chandler-长循环是在回显或打印之前还是之后开始的?我现在正试图将它保持在同一页中。但这似乎是可行的,如果我的问题无法解决,我会试试。