【问题标题】:How to read jquery cookie value in php cookie value?如何在 php cookie 值中读取 jquery cookie 值?
【发布时间】:2015-07-14 10:31:22
【问题描述】:

我不确定是否可以在 php cookie 值中读取 jquery cookie 值?

var current = $.cookie("count");

    show<?php echo $keys; ?><?php setcookie("bgx","document.write(current)");  echo $_COOKIE["bgx"]; ?>now.play(); 

    $.cookie('count', <?php echo $count; ?>);

【问题讨论】:

  • 是的,使用 JavaScript 在客户端创建的 cookie 可由服务器端 PHP 访问,这些只是创建和读取 cookie 的不同方式。不过,您发布的代码不是一个很好的例子。 注意: 为了让 PHP 能够读取使用 JS 创建的 cookie,您首先需要让用户访问该页面,然后该 cookie 才存在并且可以被 PHP 读取。您的 JS 没有在服务器端执行。
  • 我不明白,如果是,那怎么办?这个例子不工作@blex
  • 请随时编辑我的问题@blex
  • 如何在服务器端执行?给我一个例子@blex
  • 你的意思是当用户第二次访问页面时,php读取的js cookie? @blex

标签: javascript php


【解决方案1】:

这是一个简单的演示,展示了如何使用 JavaScript 创建一个 cookie,并在您重新加载页面时使用 PHP 读取它(因为 JavaScript 是在 PHP 之后执行的,因为它是客户端)。将此代码复制到一个新的 PHP 文档中,将其上传到您的服务器,然后尝试一下。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Demo</title>
</head>
<body>

    <h1>Cookie demo</h1>

    <p>This demo shows how you can create a cookie with Javascript (using jQuery), and read it with PHP.</p>

    <?php

        /* THIS PORTION IS EXECUTED ON THE SERVER */

        // if the cookie "myCookie" is set
        if(isset($_COOKIE['myCookie'])){
            echo "<p><b>PHP found this value for <i>myCookie</i>: " .  $_COOKIE['myCookie'] . "</b></p>";
        }
        else{
            echo "<p><b>PHP did not find a value for <i>myCookie</i>. Give it a value below.<b></p>";
        }

    ?>

    <input type="text" id="myInput"/><button id="myButton">Change the cookie value using JS</button>

    <!-- make sure you load jQuery and the jQuery cookie plugin -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

    <script>

        /* THIS PORTION OF CODE IS ONLY EXECUTED WHEN THE USER SEES THE PAGE (CLIENT-SIDE) */

        $(function(){
            $('#myButton').click(function(){
                $.cookie('myCookie', $('#myInput').val());
                alert(
                    'The value of myCookie is now "'
                  + $.cookie('myCookie')
                  + '". Now, reload the page, PHP should read it correctly.'
                );
            });
        });

    </script>
</body>
</html>

【讨论】:

  • @FOOUTY 没问题,但请务必查看 Quentin 的回答,它很好地解释了问题。这只是一个演示,但他有解释,考虑接受他的而不是我的;)
  • @FOOUTY 是的。更多信息在这里:stackoverflow.com/questions/2163828/…
【解决方案2】:

cookie 是存储在浏览器中并与网站相关联的一段数据。每次浏览器从网站请求某些内容时,它都会在请求标头中包含 cookie。

您可以使用客户端 JavaScript 读取和写入 cookie。 (注意:可以将 cookie 标记为 http_only,在这种情况下,客户端 JS 无法读取它们)。

您可以使用服务器端代码读取(通过检查请求标头)和写入(使用响应标头)cookie。

通常的时间规则适用:

show<?php echo $keys; ?><?php setcookie(

使用服务器端代码设置 cookie 需要您发出响应标头。 PHP 不允许您在开始输出响应正文后发出响应标头。

您尝试致电setcookie 为时已晚。您需要在开始输出任何内容之前调用它。

"document.write(current)"

我不确定你想在这里实现什么。

  • 将 JavaScript 代码存储在 cookie 中没有多大意义。
  • 您无法使用客户端代码生成服务器端代码,因此如果这是尝试将current 的值写入 cookie,则为时已晚。
setcookie("bgx","document.write(current)"); 
echo $_COOKIE["bgx"];

$_COOKIE 填充了来自请求的数据。

其中不会包含您当前的响应是关于要求客户存储的数据。 >下一个请求。


简而言之:要读取使用 JavaScript 设置的 cookie,您必须在设置之后 发出一个新的 HTTP 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-10
    • 2014-01-25
    • 2023-03-17
    • 2017-05-07
    • 1970-01-01
    • 2014-12-05
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多