【问题标题】:Trying to write a function that uses a session variable尝试编写一个使用会话变量的函数
【发布时间】:2018-01-06 04:37:42
【问题描述】:

我正在尝试编写一个函数,该函数采用当前用户的用户名(作为会话变量或 GET 或 POST 参数)并显示该用户可以查看的私有内容(id 和文件路径),因为它与组共享该用户所属的。这是我到目前为止所拥有的,但我似乎有点难以让它运行。非常感谢任何帮助!

<?php
session_start();
include "dbconnect.php";

$username = $_SESSION['username'];
$query = "SELECT filepath, id FROM Content WHERE username = '$username' ";
$result = mysql_query($query);

while($row=mysql_fetch_array($result)){
    $username=$row['username'];
    echo $username;
}
?>

【问题讨论】:

  • 解释问题?我知道您要实现的目标,但尚不清楚您的代码的哪个方面失败了。
  • 我不确定我是否正确使用了会话变量来获取用户的用户名
  • 尝试在session_start(); 之后将var_dump($_SESSION['username']);var_dump($_SESSION); 添加到您的代码中,以查看您的会话内容。
  • @sql_injector 我猜根据您选择的用户名,我们假设您已经知道此代码也存在缺陷,因为它包含潜在的 SQL 注入漏洞...?

标签: php mysql session


【解决方案1】:
$query = "SELECT filepath, id FROM Content WHERE username = '$username' ";

如果您还没有SELECT ... username,那么$row['username'] 将不会包含值。您的SELECT 列表中只有filepathid。不会返回该行中的其他值,即使它们出现在查询中的其他位置(例如,简单地使用 WHERE c1 ...JOIN ... ON c1 ... 不会导致返回来自列 c1 的值)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多