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

标签 php mysql database session

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

完整代码如下:

 <?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 * 使用 SELECT col1, col2, col3

  3. 尝试混淆您的密码。如果有人攻破了您的数据库,他将能够窃取任何用户的身份。阅读更多 herehere .如果您正在考虑使用像 MD5 这样简单的东西,也不要忘记彩虹表。

  4. 转义您的查询以防止 SQL injections .

关于php - 没有从数据库中为用户在 PHP 中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20168280/

相关文章:

php - Apple Push with proxy 和 stream_context

javascript - 如何在 GraphQL 中进行简单的连接?

php - 在 php 中以不同的方式加入两个 mysql 表

php - 是否可以使用 --process-isolation 选项调试 PhpUnit 测试?

mysql - 如何在数据库中保存 future (!)日期

mysql - 使用 Hibernate 在 MySQL 中按顺序进行分组

database - 对于任何关系,规范封面总是唯一的吗?

MYSQL 查询问题 - 将产品详细信息加入结果

php - Symfony 3.4 - 检测到服务的循环引用

sql - 运行查询时出错