【问题标题】:Can PHP set cookie function, Overwrite cookie value created with JQuery cookiePHP 可以设置 cookie 功能,覆盖用 JQuery cookie 创建的 cookie 值吗
【发布时间】: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


【解决方案1】:

如果 jQuery 的 cookie 具有完全相同的名称,PHP 将覆盖它, 路径和域。 jQuery cookie 是针对什么路径编写的? 在您的浏览器开发控制台中查看它。如果它在一个 设置目录时,您可能需要使用类似的表达式 $.cookie('name', 'value', { expires: 7, path: '/' });将其设置为 / 就像 PHP cookie 所做的那样。

这回答了我的问题,谢谢:

    $("#test-cookie").click(function() {
    $.cookie('content', 'test', { expires: 7, path: '/' });
    location.reload();
});

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多