【问题标题】:PHP cant echo value from queryPHP无法从查询中回显值
【发布时间】:2013-04-16 20:31:46
【问题描述】:

这是来自我的登录功能的简短代码。我在尝试从特定用户获取 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");
}

【问题讨论】:

  • 你的会话变量设置了吗?它可能指的是$_SESSION 的未定义索引,称为id。尝试print_r($_SESSION); 进行检查。
  • 0_* mysql_real_escape_string 结合mysqli_*?严重地?你为什么不使用准备好的语句?
  • 我是个菜鸟,但我想尽可能多地学习,以便帮助我:b 那么,你建议我使用什么来与 mysqli 更兼容?

标签: php indexing mysqli echo undefined


【解决方案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 和prepared statements 做出了很多答案,但您可以轻松地用谷歌搜索这个,也适用于mysqli。

既然我已经回答了您的问题,请在此处查看我对 PHPhass 的回答以及如何轻松使用它而不是 md5:php md5 password for user login

【讨论】:

  • 非常感谢您的帮助和建议!我确定我会检查的
  • md5 不安全是 OP 最不担心的问题,实际上,但不要使用 PHPASS 对象,为什么不简单地使用cryptCRYPT_BLOWFISH 和一些盐......应该这样做现在
  • 当然,但我只在 java 中使用过 crypt,但我已经在 PHPass 中使用 phpass 库一年多了,我非常喜欢它,它安全且易于实现,所以这就是为什么我我推荐它。此外,这只是我回答的一个旁注。
【解决方案2】:

那是因为您尚未设置 $_SESSION['id'],据我所知,您需要将其设置为 $value[' 的值id'](您不能将变量设置为不存在的变量)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2018-08-20
    • 2012-06-10
    相关资源
    最近更新 更多