【问题标题】:Cookies do not work in PHP but do work JavascriptCookies 在 PHP 中不起作用,但在 Javascript 中起作用
【发布时间】:2013-09-23 22:26:35
【问题描述】:

我需要查看产品购物车,我需要通过 PHP 进行第一次加载,然后通过 jQuery post 进行其余查询(通过删除产品或类似方式进行更新)。

好的,问题来了。

[我在同一个 php 文件“any.php”中通过 JSON 获取变量]

第一个 PHP 加载不起作用,当我在 PHP 上执行第一个 isset($_COOKIE)(通过 curl)并返回 NULL 时,但是..如果我在 jQuery PHP 上调用方法 .post("any.php"),它会返回购物车产品。

为了添加我使用PHP函数的产品

setcookie($cookieName, $createcart, $cookieExpire);

Cookie 参数:

session_set_cookie_params(
    time()+3600,
    '/',
    '.test.com',
    0,
    0
);

setCookie(createcart是json值):

setcookie($cookieName, $createcart, $cookieExpire);

PHPINFO

session

Session Support enabled
Registered save handlers    files user
Registered serializer handlers  php php_binary wddx

Directive   Local Value Master Value
session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn Off Off
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   .test.com.pe    no value
session.cookie_httponly Off Off
session.cookie_lifetime 1379499657  0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /var/lib/php/session    /var/lib/php/session
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   0   0

【问题讨论】:

  • 你确定你用对了吗? php.net/manual/en/function.session-set-cookie-params.phpThus, you need to call session_set_cookie_params() for every request and before session_start() is called.
  • ini_set('session.cookie_domain', '.test.com.pe'); ini_set("session.use_cookies", 1); session_get_cookie_params(); session_set_cookie_params(time()+3600, '/', '.test.com.pe', FALSE, FALSE ); session_start();

标签: php jquery cookies


【解决方案1】:

发件人:http://php.net/manual/en/function.setcookie.php

常见的陷阱:

在下一次加载页面之前,Cookie 不会变得可见 cookie 应该是可见的。测试 cookie 是否成功 设置,在 cookie 之前的下一个加载页面上检查 cookie 过期。过期时间通过 expire 参数设置。一个不错的方法 调试cookies的存在是通过简单地调用 print_r($_COOKIE);.

另见:How can I set a cookie and then redirect in PHP?

【讨论】:

    【解决方案2】:

    也许问题出在 cookie 的路径上。您需要在整个页面中正确地编写它。

    路径

    cookie 可用的服务器上的路径。如果设置为“/”,cookie 将在整个域中可用。如果设置为 '/foo/',cookie 将仅在 /foo/ 目录和域的 /foo/bar/ 等所有子目录中可用。默认值是设置 cookie 的当前目录。

    来自http://www.php.net/manual/en/function.setcookie.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多