【问题标题】:$_SESSION variable stays empty$_SESSION 变量保持为空
【发布时间】:2014-02-01 07:39:56
【问题描述】:

我正在创建一个登录脚本。标头都在工作,但显然 $_SESSION 保持为空。有谁知道为什么会这样?

$db = dbConnection();

// username and password sent from form 
$myusername= $_POST['myusername']; 
$mypassword= md5($_POST['mypassword']); 

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM " .$members. " WHERE BINARY `username`= '".$myusername."' and BINARY `password`= '".$mypassword."'";
$result = $db->query($sql);

// Mysql_num_row is counting table row
$count=$result->rowCount();

// Fetch this accounts row from db
$row = $result->fetch(PDO::FETCH_ASSOC);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

$_SESSION['username'] = $myusername;
$_SESSION['privileges'] = $row['privileges'];
$_SESSION['email'] = $row['email'];
header("location:index.php");

}

【问题讨论】:

  • 假设你在某处隐藏了session_start();

标签: php mysql pdo


【解决方案1】:

在脚本顶部添加session_start()

【讨论】:

  • 10 次中有 9 次,OP 转身说“它在我的连接文件中”。我从不回答这样的问题。它们属于C.O.W. 代码类别。
  • session_start();在它指向的 index.php 中调用。但确实应该在设置 $_SESSION 变量之前调用它。感谢您的回答。
  • 在我写之前不到 3 秒,OP 来了,写了我所说的。我知道。
  • 仅仅因为它被调用并不意味着什么。必须正确调用它 - 在执行 ANY 输出之前。
【解决方案2】:

这里有两种可能:session_start(); 未使用或 $count 不等于 1 可能两者都缺失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多