我有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中时,用户不必每次都设置时区,失败。有什么想法吗?
答案 0 :(得分:1)
您需要处理您的帖子,所以:
setcookie( "TzSelect", myvalue, $date_of_expiry, "/" ) ;
应该是这样的:
setcookie( "TzSelect", $_POST['myvalue'], $date_of_expiry, "/" ) ;
但是,如果您已在第一页上构建列表,最好根据可能值列表检查$_POST['myvalue']
,以确保仅使用您期望的值设置Cookie。你永远不应该相信用户输入。