警告:不是重复的,我找不到这个问题。
我正在本地主机上测试和构建我的网站。我的登录页面上有以下代码,如果用户有用户 ID cookie,则将用户发送到他们的个人资料页面,并且他们的 IP 与他们的 cookie 所说的相同。
if($_COOKIE["IPcookie"] == $_SERVER['REMOTE_ADDR']) {
$cookieresult = mysqli_query($connection, 'SELECT COUNT(`ID`) AS count FROM users WHERE username="$_COOKIE["usercookie"]" AND `active`="1"');
if($cookieresult == 0) {
$loginquery = mysqli_query($connection, "SELECT * FROM users WHERE username=" .$_COOKIE['usercookie']);
$row5 = mysqli_fetch_assoc($loginquery);
$dbIDlogin = $row5['ID'];
$_SESSION['userID'] = $dbIDlogin;
header('Location: /userprofile.php');
}
但是,当我使用这些 cookie 访问用户配置文件时,$_SESSION['userID']
有时NULL
. 我似乎无法弄清楚为什么“有时”$_SESSION
会这样NULL
。我似乎无法在其中找到任何模式。我登录一个用户,点击他们个人资料页面上的所有链接,这些链接转到网站的不同区域,然后返回loginuser.php
(上面显示的文件),它适用于一个用户,但不适用于另一个用户。它似乎是完全随机的,这让我感到困惑。我想不出它会在用户之间改变的任何原因。我将继续对此进行测试,看看是否能找到一种模式,但已经投入了几个小时,它看起来完全是随机的。
我的问题似乎没有得到任何这些答案:
PHP SESSION 数据在 localhost 上使用 WAMPserver 2.0 的页面加载之间丢失 - 我检查了我的 php.ini,它有这些代码行(虽然不同,但可以正常工作的 tmp 文件)。所选答案中测试 $_SESSION 变量的示例代码就像一个魅力。我的代码,没有。
PHP Session not Saving
Mysession_save_path()
是可写的。
页面之间未保存 PHP 会话 PHP 会话数据未保存 我在本地主机上,而不是服务器上。
session_start();
在每个页面上,不包括仅在session_start();
开头的页面中引用的模板(因为如果session_start();
在模板中,那么它会出现关于会话如何启动的错误)。
更新:我可能有一个模式。用户名包括字母的用户不会保存他们的信息。所有这些用户也有更长的用户名,因为他们的用户名是像“dummy”和“eport”这样的词,而不是“1”和“9”。它适用于 1 和 9,但不适用于 dummy 和 eport。现在,这没有任何意义,因为它们都由它们的 ID 标识,它们总是数字,但这似乎是一种模式。
更新(来自 userprofile.php 的相关代码):
<?php
$userID = $_SESSION['userID'];
var_dump($_SESSION['userID']);
//get.
$totalquery = mysqli_query($connection, "SELECT * FROM users WHERE ID='$userID'");
$arrayquery = mysqli_fetch_assoc($totalquery);
$username = $arrayquery['username'];
//Firstname
$firstname = $arrayquery['firstname'];
echo 'Welcome ' . $firstname;
//Lastname
?>