在PHP中没有为用户从数据库中获取数据


Not getting Data from Database for user in PHP

我想使用我网站中loggedin用户的会话从数据库中获取数据,这样他就可以看到他的个人资料以及他的所有数据,如姓名、国家、城市和地址。但是我使用的代码不起作用"SELECT * FROM login WHERE username = $_SESSION[user]"它没有给我任何数据,但当我用这个"SELECT * FROM login WHERE passowrd = $_SESSION[pass]"替换它时,它工作得很好,但它只提供数据库中的所有数据,而不是只提供会话或登录的用户,请告诉我解决方案

这是完整的代码:

 <?php
    if(!isset($_COOKIE['loggedin'])){
        header("location:index.php");
    }
session_start();
if(!isset($_SESSION['user'])){
header("location: index.php");
}
else {
?>

<?php
$con=mysqli_connect("localhost","root","123","user");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
$result = mysqli_query($con,"SELECT * FROM login WHERE username = $_SESSION[user]")
    or die(mysql_error());  
echo "<table border='1'>
<tr>
<th>Name</th>
<th>Country</th>
<th>City</th>
<th>Address</th>
</tr>";
while($row = mysqli_fetch_array($result, MYSQL_ASSOC))
  {
  echo "<tr>";
      echo "<td>" . $row['name'] . "</td>";
          echo "<td>" . $row['country'] . "</td>";
              echo "<td>" . $row['city'] . "</td>";
    echo "<td>" . $row['address'] . "</td>";
  echo "</tr>";
  }
echo "</table>";
mysqli_close($con);}
?> 

你有很多错误,伙计。让我试着给你几个建议:

  1. 代替:

    "SELECT*FROM login WHERE username=$_SESSION[user]"

你需要这样的东西:

"SELECT * FROM login WHERE username = '".$_SESSION[user]."'"

你需要在用户名周围加撇号。

  1. 确保$_SESSION[user]存在并且确实拥有用户名。

  2. 永远不要编写像SELECT *这样的查询,因为这不是一个好的做法。最佳做法是只选择您真正需要的列。如果我们谈论内存使用,它会更安全、更经济。所以不是SELECT * use SELECT col1, col2, col3

  3. 尝试混淆您的密码。如果有人闯入你的数据库,他将能够窃取任何用户的身份。点击此处阅读更多信息。如果您正在考虑使用MD5这样简单的东西,也不要忘记彩虹表。

  4. 转义查询以防止SQL注入。