Php 会话变量don';不要每页都更新
在我的网站上,有一个登录和注销的功能。登录时,我设置会话变量pass(散列密码)、uid(登录用户的ID)和loggedIn(布尔值): 在每个页面上,我都会检查访问者是否通过登录Php 会话变量don';不要每页都更新,php,session,session-variables,Php,Session,Session Variables,在我的网站上,有一个登录和注销的功能。登录时,我设置会话变量pass(散列密码)、uid(登录用户的ID)和loggedIn(布尔值): 在每个页面上,我都会检查访问者是否通过登录 正在检查$\u会话['loggedIn']的状态 在数据库中搜索ID为$\u SESSION['uid']的用户 检查数据库中的哈希密码是否与会话变量中的哈希密码匹配: $sespass = $_SESSION['pass']; $sesid = $_SESSION['uid']; $sql2 = "SELECT
$\u会话['loggedIn']
的状态$\u SESSION['uid']
的用户$sespass = $_SESSION['pass'];
$sesid = $_SESSION['uid'];
$sql2 = "SELECT * FROM `users` WHERE `id` = '$sesid'";
$result2 = mysqli_query($db_conx, $sql2);
$numrows2 = mysqli_num_rows($result2);
if ($numrows2 != 1) {
$userOk = false;
}
while ($row = mysqli_fetch_array($result2,MYSQLI_ASSOC)) {
$dbpass = $row['pass'];
}
if ($sespass != $dbpass) {
$userOk = false;
} else {
$userOk = true;
}
index.php?msg=loggedout
上显示的内容,密码变量设置为空,$userOk
为false
。但是,当我删除?msg=loggedout
(并且只保留index.php
)时,密码变量将返回到它们以前的值,并且我不再注销。。。重新加载几次后,我再次注销
为什么我的会话变量不能按预期工作?感觉他们需要时间来更新,这很奇怪。我尝试过禁用缓存(通过标题和浏览器中的缓存设置)
如果您需要更多信息,请告诉我。每个站点都有初始化
会话启动()
session\u start()
根据通过GET或POST请求传递的会话标识符或通过cookie传递的会话标识符创建会话或恢复当前会话 联系我的主机提供商后,这实际上是一个主机问题。现在解决了
谢谢,Jacob您的代码只存在一些问题。。。与我们分享整个页面在将id或会话插入dbwhere的
session\u start()
之前始终使用trim()是一个很好的做法,它在这些文件中,而不是我在这里发布的内容中@Codegodie我知道你还不能写评论,但这太短了,不能作为答案。用更多细节重写您的答案,并解释为什么需要会话\u start
。是的,我在每页上都使用会话\u start()。
$sespass = $_SESSION['pass'];
$sesid = $_SESSION['uid'];
$sql2 = "SELECT * FROM `users` WHERE `id` = '$sesid'";
$result2 = mysqli_query($db_conx, $sql2);
$numrows2 = mysqli_num_rows($result2);
if ($numrows2 != 1) {
$userOk = false;
}
while ($row = mysqli_fetch_array($result2,MYSQLI_ASSOC)) {
$dbpass = $row['pass'];
}
if ($sespass != $dbpass) {
$userOk = false;
} else {
$userOk = true;
}