-3

我已经设置了一个似乎工作正常的登录脚本

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

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 ) ) 
4

2 回答 2

9

您需要访问数组部分中的username密钥。user像这样:

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

否则你只会试图访问数组,持有所有的 id、username 和 email 键。正如所指出的,由于 SQL 注入,永远不要这样做。

您应该改用 PDO。如果您的网络服务器不支持它,请至少在之前使用 mysql_real_escape_string() 转义您的字符串:

$sql = "SELECT * from users where username = '". mysql_real_escape_string($_SESSION['user']['username']) ."'";
于 2013-07-08T11:30:48.730 回答
1

尝试这个:

 $sql = "SELECT * from users where username = '".$_SESSION['user']['username']."'";
于 2013-07-08T11:29:53.327 回答