PHP设置COOKIE,用jQuery插件COOKIE变化,不能用PHP编辑吗?(PHP sets

2019-10-17 18:15发布

我使用一些简单的代码作为测试我的网页不能正常工作,也许我失去了一些东西? 我有谷歌这个问题,在这里搜查,但似乎没有人提到它! 甚至饼干TUTS我已阅读!

我有一个简单的代码的setcookie PHP行:

<?php 
if($_COOKIE['PHP1'] !== 'php'){
$blah = setcookie('PHP1','php',time() + (1000 * 120),'/','',false,false);}
?>

它在页面的任何HTML之前的顶部和设置cookie PHP1到PHP就好了;

然后,我有一些对身体的代码:

<?php 
if($blah){echo 'PHP1 has been set';}
else {
    echo 'cookie php1 = ' . $_COOKIE['PHP1'];}
?>

告诉我,如果cookie被设置或者,如果设置的值是什么。 直线前进,并能正常工作...

(该页面有jQuery和jquery插件:COOKIE:联;)我然后,使用控制台检查其值Cookie,并与cookie插件,下面的代码改变的值:

$.cookie('PHP1');
--"php"
$.cookie('PHP1','javascript', { expires: 7, path: '/' });
--"PHP1=javascript; expires=Sat, 09 Mar 2013 19:00:57 GMT; path=/"
$.cookie('PHP1');
--"javascript"

一切都很好了这里,于是我刷新页面,PHP告诉我,如预期PHP1设置; 然后再次刷新希望看到PHP1 = PHP的,但它只是口口声声说PHP1设置!

如果我编辑的PHP代码只是为了显示我的PHP1它告诉我,PHP1的值是JavaScript中的价值呢?

我做错了什么吗? 或者是它只是JavaScript的篡改后,我无法编辑用PHP饼干吗? (我猜它可能是安全的?)

cookie自身不承担任何登录或安全功能,它仅仅是将要使用的辅助功能 - 文字大小 - 色盲设置。 我想能够同时使用柜面的javascript /获取任何理由禁用!

提前致谢

编辑

好吧,我已经看过了饼干我在Chrome本地主机有两种PHP1饼干:

Name:   PHP1
Content:    php
Domain: localhost
Path:   /
Send For:   Any kind of connection
Accessible to Script:   Yes
Created:    Saturday, 2 March 2013 19:01:21
Expires:    Monday, 4 March 2013 04:21:21


Name:   PHP1
Content:    javascript
Domain: localhost
Path:   /Cookie_test
Send For:   Any kind of connection
Accessible to Script:   Yes
Created:    Saturday, 2 March 2013 18:50:08
Expires:    When the browsing session ends

我认为第二个,/ Cookie_test路径,是JavaScript一个! 因此,如果是这样的问题,我怎样才能让这个JavaScript的写入路径为“/”,而不是DIR藏汉? 你可以从我的代码看,我给它的路径“/”?

实际上是不是因为像我在PHP做了我还没有加入第五选项?

Answer 1:

为了扩大对@ MIIB的评论中,PHP setcookie()函数和$_COOKIE超全局不直接交互。

作为“共同陷阱”下的手册指出:

饼干不会成为可见,直到一个页面,该Cookie应该是可见的未来负载。

实际上, $_COOKIE得到基于从浏览器接收到的Cookie PHP脚本的最开始创建的; setcookie() ,另一方面定义了当脚本将其输出发送饼干,其将被发送到浏览器

你可能想换你setcookie的东西也覆盖调用$_COOKIE (或者甚至更好,有自己的目标与getCookiesetCookie的方法)。

编辑:作为直接写入这样的功能的一个非常简单的例子$_COOKIE

function set_cookie_and_superglobal($cookie_name, $cookie_value)
{
    // For simplicity, this hard-codes the same parameters as the code in the question, and just generalises the name and value
    setcookie($cookie_name, $cookie_value, time() + (1000 * 120),'/','',false,false);
    $_COOKIE[$cookie_name] = $cookie_value;
}


Answer 2:

我的问题,因为讨论HERE是由于本地主机! 如果我使用我的回环(127.0.0.1)它完美的作品,在做的时候,我说。 我的理解是有事情做,没有“”的本地主机中的一些浏览器(如Chrome)不喜欢它!

问题的一部分是,jQuery的会读的PHP的cookie然后设置其自己的第二个cookie与路径中的额外细节在我的问题编辑。 那么PHP会读这一个,因为它应该,但设置cookie时,再次将“编辑”的旧Cookie,但仍从jQuery的cookie的阅读!



文章来源: PHP sets COOKIE, changed with JQUERY COOKIE plugin, cannot be edited with php?