PHP选择登录用户,不工作


PHP select logged in user, not working

我无法在代码中获取登录用户,你能帮我弄清楚吗:

不起作用的代码:

 $result = mysql_query("SELECT * FROM clients WHERE user = '$_SESSION['user']['username']'")
            or die(mysql_error());  

但它正在努力展示它的想法,在这里:

echo htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');

提前感谢您的帮助。

对此有两种解决方案。第一种方法是定义一个新变量来包含$_SESSION['user']['username']值,第二种方法是用大括号将$_SESSION['user']['username']括起来(有关更多信息,请参阅:Strings-variable语法分析)。

解决方案1

$username = $_SESSION['user']['username'];
mysql_query("SELECT * FROM clients WHERE user = '$username'")
        or die(mysql_error());

解决方案2

mysql_query("SELECT * FROM clients WHERE user = '{$_SESSION['user']['username']}'")
        or die(mysql_error());

除此之外,如果只访问数组的顶层(例如$_SESSION['username']而不是$_SESSION['user']['username']),则可以简单地删除密钥名称周围的引号:

mysql_query("SELECT * FROM clients WHERE user = '$_SESSION[username]'")
        or die(mysql_error());

但是,值得指出的是,mysql函数已被弃用,并且您的代码容易受到SQL注入的攻击。您应该研究使用PDOmysqli准备好的语句。

您可以尝试一下,请避免再使用mysql函数,这不是一个防黑客的代码。Pleae使其

   $user = htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
   mysql_query("SELECT * FROM clients WHERE user = '".$user."'")
        or die(mysql_error());