PHP会话”;从username='&”$_会话[';user';]"'&";;


PHP Sessions "SELECT * from users where username = '".$_SESSION['user']."'";

我已经设置了一个登录脚本,它似乎可以很好地运行

我的问题是下面的代码不起作用:

session_start(); 
$sql = "SELECT * from users where username = '".$_SESSION['user']."'";
while( $row = mysql_fetch_assoc($query) )
{
    echo "<tr><td>$row[username]</td>";
    echo "<td>$row[email]</td>";
    echo "<td>$row[id]</td>";
}

如果我输出

session_start(); 
Print_r ($_SESSION);

我得到

Array ( [user] => Array ( [id] => 1 [username] => craig [email] => craig@craig.com ) ) 

您需要访问数组的user部分中的username键。因此:

$sql = "SELECT * from users where username = '".$_SESSION['user']['username'] ."'";

否则,您将只尝试访问数组,并持有所有的id、用户名和电子邮件密钥。正如所指出的,由于SQL注入,永远不要这样做。

你应该使用PDO。如果你的Web服务器不支持它,至少在之前用mysql_real_eescape_string()转义你的字符串

$sql = "SELECT * from users where username = '". mysql_real_escape_string($_SESSION['user']['username']) ."'";

试试这个:

 $sql = "SELECT * from users where username = '".$_SESSION['user']['username']."'";