【问题标题】:Is there a way to insert cookies into a database?有没有办法将 cookie 插入数据库?
【发布时间】:2010-12-30 22:45:38
【问题描述】:

我需要将用户名与数据库中的值进行匹配,因此我想插入保存在 cookie 中的用户名。该功能非常简单。 cookie 存储正确,我可以回显它。我的插入脚本也可以工作,因为我可以插入其他东西。但由于某种原因,我无法插入 cookie 值。

这几乎就是我想要做的:

$username = $_COOKIE['username'];

$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
or die('error');
$query1 = "INSERT INTO Gallery (username) VALUES('$username')";
$data1 = mysqli_query ($dbc, $query1) or die('error1');
mysqli_close($dbc);

我有什么遗漏吗?我尝试使用会话,但没有运气。

我还使 cookie 在整个域中都可以访问。

【问题讨论】:

  • 请转义你的输入(使用mysql_escape_string($_COOKIE['username'])),否则你很容易接受SQL注入(非常糟糕)。
  • $username = $_COOKIE['username']; 是否评估并赋予 $username 一个值?您是否看到错误消息?
  • 是的,它会评估。我已经回显了 $username 并获得了正确的值。代码是否应该工作?该代码假定在提交文件时运行。我用一个简单的字符串替换了 cookie,并插入了字符串。但是当我用cookie替换它时,cookie值没有被插入。
  • 表名是Gallery or gallery ?
  • 不要die() 带有'error1'。那没用,您将丢失查询失败生成的任何错误消息。相反,请执行die(mysql_error()),它会告诉您查询失败的原因。

标签: php mysql cookies


【解决方案1】:

这里有(至少)两个问题。

  1. 您将 cookie 的值复制到名为 $user 的变量中,但使用名为 $username 的变量尝试将数据插入数据库中
  2. 在用于 SQL 查询之前,您不会对 cookie 数据(由浏览器提供并因此受到污染的数据)执行任何类型的完整性检查。这是Little Bobby Tables的邀请。

【讨论】:

  • 当我写这个问题时,数字 1 实际上是一个错字。在我的脚本中,它们匹配,但仍然无法正常工作。
【解决方案2】:

可能尝试将您的查询更改为此...

$query1 = "INSERT INTO Gallery (username) VALUES(" . mysql_escape_string($_COOKIE['username']) . ")";

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多