【问题标题】:PHP cannot read javascript cookiesPHP 无法读取 javascript cookie
【发布时间】:2015-10-18 18:26:31
【问题描述】:

我正在使用 javascript 设置一个 cookie 并尝试使用 PHP 读取它,但 php 无法读取它。我已经检查了 cookie 确实是使用名为 Cookies Manager 的工具设置的。

代码(JS):

<script>
document.cookie="encrIv=" + ivB64;
</script>

代码(PHP):

<?php
$encrIv = $_COOKIE['encrIv'];
echo $encriv;
?>

我明白了

注意:未定义索引:encrIv in C:\Users\joonas\Desktop\Webon cms\root\readCookie.php1

cookie 截图:

【问题讨论】:

  • 检查 ivB64 的值是否未定义。同样在第 2 行,将 $encriv 替换为 $encrIv。

标签: javascript php cookies


【解决方案1】:
<!DOCTYPE html>
<html>
  <head>
    <title>example</title>
    <script type="text/javascript">
       document.cookie = 'name=David' ;
    </script>
   </head>
   <body>
    <?php
       var_dump($_COOKIE['name']);
    ?>
   </body>
 </html>

这样就设置了cookie。你纠正错字了吗? 你写道:

<?php
$encrIv = $_COOKIE['encrIv'];
echo $encriv;
?>

正确的方法是把echo改成

echo $encrIv;

或将您的变量更改为

$encriv = $_COOKIE['encrIv'];

编辑:

也许您的问题是未定义的路径。 像这样定义一个cookie:

document.cookie = 'sconName='+changedName+'; path=/'

【讨论】:

  • 我想把一个javascript变量作为cookie的内容
  • 没问题。那么document.cookie = "name= " +user; 应该可以工作了。
  • 没有改变任何东西
  • 没问题 :) 我前段时间遇到过同样的问题。
【解决方案2】:

如果我在加载页面后刷新页面,您的代码对我来说可以正常工作。

您的javascript代码将在php代码之后运行(当php解释器处理了html+php代码并且浏览器解释了处理后的html代码时),这意味着当您尝试使用php访问它时,它没有设置然而。但是当您重新加载页面时,cookie 将在那里并且 php 可以访问它。

【讨论】:

  • javascript代码和php代码不在同一个页面。
  • 好的,那么回答您的问题变得更加困难。您是否使用 print_r($_COOKIE) 打印了所有 cookie。如果您检查了 cookie 是否已设置但 php 没有列出它,那么您可能遇到了域问题,请查看以下问题:stackoverflow.com/questions/5045053/…
  • 我在 localhost 上运行这个
  • 我测试了您粘贴在两个 php+html 页面中的代码,在同一个 http 服务器的同一路径上没有其他代码,它可以工作。这就是我能用你提供的信息做的所有事情。唯一不同的是,您的 Cookies Manager 中的 cookie 名称有一个小写 L,而 javascript cookie 名称有一个大写 i,而 echo 有一个小写 i,但其他人已经建议了。
【解决方案3】:

像这个简单的例子一样,特别是改变你的代码的回声部分从 $encriv 到 $encrIv

说这是你需要首先访问的index.php。将设置encrIv cookie值的文件

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript">
        document.cookie="encrIv=samplecookie";
    </script>
</head>
<body>
    <?php 

        $encrIv = isset($_COOKIE['encrIv'])?$_COOKIE['encrIv']:'';
        echo $encrIv;
    ?>
</body>
</html>

然后这是您的 readCookie.php,您将在加载 index.php 后访问它。

 <?php 

            $encrIv = isset($_COOKIE['encrIv'])?$_COOKIE['encrIv']:'';
            echo $encrIv;
        ?>

这显然对你有帮助,我的朋友

【讨论】:

  • 我对我的回答做了一些修改,请注意 isset,然后尝试一下。然后告诉我尝试后会发生什么
  • 否,因为问题仍未解决。它仍然无法读取我在另一个页面上设置的cookie!
  • 应该可以解决您的问题。也许您在实际设置cookie之前访问其他页面..
  • ivB64 变量是否有值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 2015-10-20
  • 1970-01-01
  • 2022-08-17
相关资源
最近更新 更多