【发布时间】:2015-04-29 16:26:26
【问题描述】:
我目前正在尝试设置一个 cookie,并且当用户登录时,cookie 的值会被 PHP 有效地覆盖,但它只是创建一个单独的 cookie,这是设置 cookie 的代码的 sn-p价值
<?php
include("db_connect.php");
$input_game = $_POST['game'];
$input_user = $_POST['email'];
$sql = "UPDATE users_table SET Pref_Game = '" . $input_game . "' WHERE Email='" . $input_user . "'";
if ($conn->query($sql) === TRUE) {
$cookie_name2 = "content";
$sql="SELECT Pref_Game FROM users_table WHERE Email='$input_user'";
$result = $conn->query($sql);
$row = $result->fetch_object();
setcookie($cookie_name2,$row->Pref_Game, time() + (86400 * 30), "/"); // 86400 = 1 day
} else {
//Error
}
?>
为了清楚起见,下面是 JQuery cookie 代码:
$("#test-cookie").click(function() {
$.cookie('content', 'test');
location.reload();
});
PHP 是否可以更新/覆盖由 JQuery 创建的 cookie 值?
【问题讨论】:
-
如果 jQuery 的 cookie 具有完全相同的名称、路径和域,PHP 将覆盖它。 jQuery cookie 是针对什么路径编写的?在您的浏览器开发控制台中查看它。如果设置时它位于目录中,您可能需要使用类似
$.cookie('name', 'value', { expires: 7, path: '/' });的表达式将其设置为/,就像PHP cookie 所做的那样。 github.com/carhartl/jquery-cookie -
这很重要,因此我必须指出,此代码在当前形式下容易受到 SQL 注入的影响,其中
$input_user, $input_game被传递到查询中。这将受益于使用prepare()/bind_param()/execute()。有关示例,请参阅How can I prevent SQL injection in PHP。 -
@MichaelBerkowski 提醒一下,最新版本可以在新的 repo URL 中找到:github.com/js-cookie/js-cookie/tree/v1.5.1
标签: javascript php jquery cookies