我有这个代码即时尝试做一种类型的缓存系统,因此它会记住用户选择的城市。如果用户选择了一个城市,它将其存储在会话和cookie中,并且如果他们之前选择了该城市,则会自动将其重定向到城市页面。setcookie空值不工作
会议做工精细,但它似乎并没有cookie被设置为空值,如果$ _GET [“城市”]变量是空的...
继承人我的代码:
function gen_url ($city)
{
$url = 'http://www.mysite.com';
if (!empty($city)) $url .= "/c-$city";
return $url;
}
function set_cache ($variable, $value)
{
$_SESSION[$variable] = $value;
setcookie($variable, $value, time() + 31536000);
}
$redirect = false;
$redirect_array['city'] = '';
if (!empty($_GET['city']))
{
$sql = mysql_query("select * from `cities` where `slug`='".mysql_real_escape_string($_GET['city'])."'");
if (mysql_num_rows($sql) != 0)
{
while ($row = mysql_fetch_assoc($sql))
{
foreach ($row as $k => $v)
$city[$k] = $v;
}
$redirect_array['city'] = $city['slug'];
}
else
{
$redirect = true;
}
}
if ($redirect)
{
header('Location: '.gen_url($redirect_array['city']);
die();
}
set_cache('city', $redirect_array['city']);
谢谢你的回答。在每一个PHP版本(见5.6.10)中都是不正确的,因为我在这里发现并报告了这些内容:http://stackoverflow.com/q/37464332/469643。在某些版本中,设置一个空值**将会成功**,并且文档没有说明如果没有以前的调用**会发生什么*应该发生。如果您有更深入的见解,我的问题仍然需要一个答案 – veeTrain 2016-06-06 13:48:25