我正在设置登录/注销,并尝试将用户 ID 号发送到网站中的其他页面,以便我可以在需要时操作数据库。
我使用查询来匹配电子邮件/密码并登录用户(注意,这不是完整的代码,也不是问题,我正在匹配电子邮件和密码)
$find= mysqli_query("SELECT * FROM users WHERE email='$ema' and password="$pw");
然后我获取一个数组并启动一个 session ,然后在网站中进一步检查页面。
if(mysql_num_rows($find) == 1){
$row = mysql_fetch_array($result, MYSQL_BOTH);
$id= $row ['id'];
session_start();
$_SESSION['Login']= $id;
// Redirect - I use JS to send users to next page
}
else {
echo '<script type="text/javascript">';
echo 'alert("Invalid Username or Password");';
echo 'history.back();';
echo '</script>';
}
mysql_close($link);
在其他页面上,我有代码检查 session 并在用户未登录时重定向用户。以下是该代码:
<?php
session_start();
if(!isset($_SESSION['Register'])){
if(!isset($_SESSION['Login'])){
header("location:../notLoggedIn.php");
}
}
$get_id = $_SESSION['Register'];
$get_id = $_SESSION['Login'];
?>
然后,当我检查从登录页面传递的 id 变量中的内容时:
$profile = mysql_query("SELECT * FROM profiles WHERE id= $id");
var_export($id);
我得到一个空值。出了什么问题?
最佳答案
您必须检查 session 是否未启动,然后使用session_start();
if (session_status() == PHP_SESSION_NONE) {//php >5.4
session_start();
}
并使用$_SESSION['Login']
代替$id
$profile = mysql_query("SELECT * FROM profiles WHERE id=".$_SESSION['Login']);
关于php - 当用户登录时将 session 变量设置为 user_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38967364/