Cookie不会存储表单值

时间:2014-08-21 23:52:04

标签: php cookies

我有2页。一,index.php,代码如下:

<?php  
if( isset( $_COOKIE['TzSelect']  ) ) 
{ 
     header( 'Location: http://xasxx.dasxxx.com/feed.php'); 
} 
?>
<html> ....
<form action='feed.php' method="post">
    <select name="myvalue" id="SelectTimeZone">
        <option value="Africa/Mbabane">Africa/Mbabane</option>
        <option value="Africa/Mogadishu">Africa/Mogadishu</option>
        <option value="Africa/Monrovia">Africa/Monrovia</option>
        </select>
<input type="submit">
</form>

并且,feed.php代码:

if( isset( $_COOKIE['TzSelect']  ) ) 
{ 
     $myvalue = $_COOKIE["TzSelect"]; 
     date_default_timezone_set($myvalue);
} 
else 
{ 
     $number_of_days = 1000 ;
     $date_of_expiry = time() + 60 * 60 * 24 * $number_of_days ;
     setcookie( "TzSelect", myvalue, $date_of_expiry, "/" ) ;
} 

现在,当您运行index.php时,从下拉列表中选择一个时区,当您提交时,feed.php将使用所选值加载date_default_timezone_set并进行进一步计算。它也设置了,比实际文件低得多(它对cookie没有任何影响)将EST显示为标准时区,因此如果某些东西不能正常工作,所有计算都将在EST中完成。此外,这是第一次只选择时区(这就是我将其存储在cookie中的原因)。所以,我在index.php页面上所做的第一件事就是检查cookie是否存在。如果是,则重定向到feed.php页面,根据存储在cookie中的预设值进行计算。现在,肯定会创建cookie,因为如果我打开index.php页面,它会将我重定向到执行其计算的Feed,还有两个因为我可以在Chrome中的设置中看到Cookie详细信息:

Name:   TzSelect
Content:    myvalue
Domain: xasdas.sxasmze.com
Path:   /
Send for:   Any kind of connection
Accessible to script:   Yes
Created:    Thursday, August 21, 2014 7:20:12 PM
Expires:    Wednesday, May 17, 2017 7:20:12 PM

但是,我的问题是,Cookie没有从下拉列表中选择的值,在这种情况下,feed.php页面加载,而不是使用所选的计算选项它默认EST计算。我已经能够成功地将所选值从表单传递到feed页面并进行正确的计算,但每当我尝试将该信息存储在cookie中时,用户不必每次都设置时区,失败。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要处理您的帖子,所以:

setcookie( "TzSelect", myvalue, $date_of_expiry, "/" ) ;

应该是这样的:

setcookie( "TzSelect", $_POST['myvalue'], $date_of_expiry, "/" ) ;

但是,如果您已在第一页上构建列表,最好根据可能值列表检查$_POST['myvalue'],以确保仅使用您期望的值设置Cookie。你永远不应该相信用户输入。