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

时间:2015-01-15 03:41:53

标签: php cookies

我有一个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,则绘制用于指定文件名的UI(' fileName'元素)。用户输入文件名并单击“确定”,然后将其分配给cookie'文件名'因为整个应用程序都使用文件名。 (当然,当用户点击提交#1并且已经设置了cookie' filename'时,我将其值写入' fileName'元素。)。当我在提交#1和' fileName'创建的UI中时elem可见,一切正常,cookie已成功设置/读取。但是,当我点击提交#2时,会根据其他需求绘制用户界面,但会在出现问题时使用Cookie' filename'我发现cookie'文件名'失去从' fileName'中读取的值。元素并再次分配默认值。

1 个答案:

答案 0 :(得分:0)

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);}