php - 当用户登录时将 session 变量设置为 user_id

标签 php mysql session

我正在设置登录/注销,并尝试将用户 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/

相关文章:

php - 通过 PHP 有选择地替换某些 HTML 标签,同时保留一些

php - mysql中的where字段使用变量来填充部分

php - 将数据库中的值插入输入框中

javascript - 监控用户 session 以防止编辑冲突

php - post-receive Hook 后裸 git 存储库出现 500 内部服务器错误

c# - 如何获取存储过程和C#代码中的总记录?

mysql - 如何上传文件(csv 或文本)并在 Zope 框架中读取内容

MySQL While 语句抛出错误并且只插入一条 NULL 记录

php - 如何动态更改YouTube视频

session - Symfony2 监听器和 session