PHP选择登录用户,不工作

时间:2013-12-04 14:58:36

标签: php mysql login

我无法在代码中找到登录用户,请你帮我解决一下:

无效的代码:

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

但它正在努力表明它的想法,在这里:

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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这有两个解决方案。第一个是定义一个新变量以包含$_SESSION['user']['username']值,第二个是将$_SESSION['user']['username']括在花括号中(有关详细信息,请参阅:Strings - variable parsing)。

解决方案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 functions are deprecated并且您的代码容易受到SQL injection的攻击。您应该考虑使用PDOmysqli预备语句。

答案 1 :(得分:0)

你可以试试这个,请不要再使用mysql函数,这不是一个黑客密码。请尽情享受

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

   mysql_query("SELECT * FROM clients WHERE user = '".$user."'")
        or die(mysql_error());