1 回答
TA贡献1877条经验 获得超6个赞
除非您没有在答案中显示任何内容,否则您实际上并没有做任何事情来保存会话数据。
...
while($row = mysqli_fetch_assoc($resultsThree)){
$username = $_SESSION['username'];
$level = $row['level'];
$money = $row['money'];
$diamond = $row['diamond'];
$ruby = $row['rubin'];
}
header('location: index2.php');
...
在这里,通过传递标头,您正在执行客户端重定向,该重定向导致将新请求发送到您的服务器。这意味着在请求1(index.php)中设置的变量将在请求2()中不可用index2.php。
您可能不想为这样简单的事情进行客户端重定向。在不重新构建代码的情况下解决此问题的最简单方法是将标头调用更改为包括
...
while($row = mysqli_fetch_assoc($resultsThree)){
$username = $_SESSION['username'];
$level = $row['level'];
$money = $row['money'];
$diamond = $row['diamond'];
$ruby = $row['rubin'];
}
include('index2.php');
...
(实际上不这样做,请参见下面的更新)。
但是,您可能想考虑如何组织代码。有include呼叫所有的地方可以迅速变得混乱和混淆。我建议研究一下PHP路由库。周围有一些,例如Klein。
最后,如果出于某种原因确实需要跨客户端重定向保留数据,则需要将其存储在会话变量或数据库中。这$_SESSION;阵列从读/写,你可以在其中存储的数据应在整个会议持续您获取你的用户名(与注意事项。使用数据库或文件存储在适当的时候)。有关更多信息,请参见PHP文档。
更新:
所以,我只注意到你实际上是include荷兰国际集团的server.php文件在您index2.php文件。在这种情况下,你不能include在index2.php在server.php文件的文件,因为这将是一个无限循环。
我不确定要推荐什么,但似乎您需要重组代码,同时要记住,使用header调用重定向将丢失所有当前PHP状态(变量等)。最简单的事情可能是只调用您的index2.php文件,让它包含您的服务器文件,然后die如果有错误。如果成功执行查询,您的变量将可用。
因此,在以下范围内server.php:
if (count($errors) == 0) {
....
} else {
die('Unsuccessful registration');
}
- 1 回答
- 0 关注
- 135 浏览
添加回答
举报