问题在于,当我刷新页面时,会话ID会发生变化。
另外,当我在"下一页"并且到达" Page 2",session_id已经改变。所以,如果我在"上一页"并且到达" Page 1",我发现$_SESSION['a']
和$_SESSION['b']
是NULL
。
此外,如果我在浏览器的上一页按钮上点击,我会使用旧的session_id和$_SESSION['a']
以及$_SESSION['b']
到达旧的" Page 1"我发布的价值观。
如果我从localhost运行代码,则没有问题。 当我作为客户端运行并且代码在服务器上时,会出现问题。
我已经搜索了问题,我已经看到了答案,但我还没有找到解决方案。
这是我的代码:
page_1.php:
<?php
session_start();
if (!$_POST){
$a = $_SESSION['a'];
$b = $_SESSION['b'];
}
elseif ($_POST){
$a = $_POST['a'];
$b = $_POST['b'];
}
//--------------------------------------------------------------------------
if ( $_POST and $a and $b ){
$_SESSION['a'] = $a;
$_SESSION['b'] = $b;
echo '<script language="JavaScript">
self.location="page_2.php";
</script>';
}
?>
<html>
<body>
<form action="page_1.php" method=post>
<?php
echo $_SESSION['a'];
echo $_SESSION['b'];
echo session_id().' | '.session_name(); ?>
<!--
...(html code)...
-->
<tr>
<td><input type='submit' name='p1_submit' value="Next Page >>"></td>
</tr>
</form>
</body>
</html>
page_2.php:
<?php
session_start();
if (!$_POST){
$c = $_SESSION['c'];
$d = $_SESSION['d'];
}
elseif ($_POST){
$c = $_POST['c'];
$d = $_POST['d'];
}
if ($_POST and $c and $d)
{
$_SESSION['c'] = $c;
$_SESSION['d'] = $d;
echo ' <script language="JavaScript">
self.location="page_3.php";
</script>';
}
?>
<html>
<body>
<form action="page_2.php" method=post>
<?php echo session_id().' | '.session_name(); ?>
<!--
...(html code)...
-->
<tr>
<td><button type="button" onclick="location.href='page_1.php';">Previous Page</button><input type='submit' name='p2_submit' value="Next Page >>"></td>
</tr>
</form>
</body>
</html>
答案 0 :(得分:0)
好的我自己回答了这个问题。
我通过在第1页之前添加一个起始页来解决了这个问题。
<强> start.php:强>
<?php
session_start();
echo '<script language="JavaScript">
self.location="page_1.php";
</script>';
?>