PHP无法从查询中回显值

时间:2013-04-16 20:31:46

标签: php indexing mysqli echo undefined

这是我的登录功能的简短代码。我试图从特定用户获取id并将其索引到新会话时遇到问题。 代码被评论,希望你们能帮助我。

$email = mysql_real_escape_string($_POST['email']);
$password = md5(mysql_real_escape_string($_POST['password']));

include_once("include/connection.php");

$query = "SELECT email,password,id FROM user WHERE email ='".$email."' AND password='".$password."'";
$result = mysqli_query($ligaBD,$query);
$value= mysqli_fetch_array($result);

echo $value['id']; // On this line i get the exact id that i want but if i try to echo this inside "if(mysqli_num_rows($result) == 1) { }"  its like the value variable does not exist

if(mysqli_num_rows($result) == 1) {
    session_start();
    echo $value['id']=$_SESSION['id'];exit; // Getting this error -> "Notice: Undefined index: id" 
    header("Location: ./cpanel/#welcome");
}

2 个答案:

答案 0 :(得分:1)

解决您的问题:

echo $value['id']=$_SESSION['id']

不正确,这就是您收到错误的原因。您将$ value ['id']的值分配给$ _SESSION ['id'],这是UNDEFINED因为您还没有给它一个正确的值。

你应该这样做

$_SESSION['id'] = $valud['id'];
echo $S_SESSION['id'];

问题是:会话不存在,你没有像你应该那样分配值。

您还应该使用isset()来确保会话实际存在。

还要确保使用

在脚本顶部启动会话
session_start();

现在有点偏离主题:

不要使用md5,这不安全。

您也应该使用

require_once("include/connection.php");

表示您不想丢失的可执行脚本。

您的代码对SQL注入是开放的,您必须使用预准备语句来阻止sql注入。

“但是mysql_real_escape_string()不够”?不,不是。

我已经就如何使用PDO和准备好的语句做了很多答案,但你也可以轻松地谷歌这个,也适用于mysqli。

现在我已经回答了你的问题,请看看我在这里关于PHPhass的答案,以及如何轻松使用它而不是md5:php md5 password for user login

答案 1 :(得分:0)

那是因为你还没有设置 $ _ SESSION ['id'] ,根据我的收集,你需要将它设置为 $ value ['的值id'] (你不能将变量设置为不存在的东西)。

echo $_SESSION['id']=$value['id'];