繁体   English   中英

这个PHP $ _COOKIE代码片段有什么问题?

[英]What's wrong with this PHP $_COOKIE code snippet?

我有一个input='text' name='fileName'元素,想将其值存储在cookie filename 首次创建时,为cookie filename分配了默认常量DEFAULT_FILE_NAME如果设置了请求变量fileName (通过POST方法),则为cookie filename分配了此请求变量的值。 否则,cookie保留其旧值。 我尝试使用以下代码段进行操作:

    if (!isset($_COOKIE['filename'])) {
        setcookie('filename', DEFAULT_FILE_NAME);
        $_COOKIE['filename'] = DEFAULT_FILE_NAME;
    } 
    if (isset($_REQUEST['fileName'])) {
        setcookie('filename', $_REQUEST['fileName']);
        $_COOKIE['filename'] = $_REQUEST['fileName'];
    } 

问题在于,当未设置请求变量fileName ,该cookie被识别为不存在,并再次被分配了DEFAULT_FILE_NAME。 怎么了?


我有一个表单,上面有三个提交按钮,它们可以用作主菜单。 如果单击“提交#1”,那么我将绘制用于指定文件名(“ fileName”元素)的UI。 用户输入文件名并单击“确定”,然后将其分配给Cookie“文件名”,因为在整个应用程序中都使用了文件名。 (当然,当用户单击Submit#1且cookie'filename'已设置时,我将其值写入'fileName'元素。)。 当我处于由Submit#1创建的UI内并且可见“ fileName”元素时,一切正常,并且cookie被成功设置/读取。 但是,当我单击提交#2时,它会绘制UI来满足其他需求,但使用Cookie的“文件名”,这就是问题所在。 我发现cookie'filename'失去了从'fileName'元素读取的值,并再次被赋予默认值。

PHP.net

一旦设置了cookie,就可以使用$ _COOKIE或$ HTTP_COOKIE_VARS数组在下一页加载访问它们 注意,诸如$ _COOKIE之类的超全局变量在PHP 4.1.0中可用。 Cookie值也存在于$ _REQUEST中。

尝试这个:

if (!isset($_COOKIE['filename'])) {setcookie('filename')}

if (isset($_REQUEST['fileName'])) {
    setcookie('filename', $_REQUEST['fileName']);
}
else{
     setcookie('filename', DEFAULT_FILE_NAME);
}

更新:也许是这样的:

if (!isset($_COOKIE['filename'])) {setcookie('filename'),DEFAULT_FILE_NAME,time()+3600);}

if (isset($_REQUEST['fileName'])) {setcookie('filename', $_REQUEST['fileName'],time()+3600);}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM