不得不说,不好好看官方文档下方的邮件列表,吃亏郁闷将是自己的平常态!
先说说自己郁闷的来由吧!
模块:网站购物车
说明:当用户没有登时,将记录保存到cookie;登录之后则转存到用户数据库!
为了防止刷新,将添加到购物车模块专门设计了一个中转的页面,该页面功能很单一,根据传递过来的产品ID,依据登录状态,写入到数据库或者是cookie,代码如下:
$re = defined("VALIDLOGIN") ? $cart->addItem($logininfo['id'], $sn) : $cart->addCookie($sn);
header("Location: /shopping/index.php?a=viewcart");
exit();
在本地测试OK,但上传到服务器后,却时灵时不灵的,郁闷啊!只好到网上搜索相关的问题,却一直没有找到。然后就是查看官方文档了,但却只是看了看官方的说明,还是不明原因!
晚上回家,心头依然放不下,就又翻起了官方文档,一直往下看,看到了这里,才恍然大悟:
//When setting a cookie on a page that redirects, the cookie must be set after the call to header('Location: ....');
//Such as:
header('Location: http://www.example.com/');
setcookie('asite', $value, time()+60*60, '/', 'site.com');
?>
另外,还发现第二个参数,因为是string类型,如果你设置的值是数字或者其他类型,还是手动加一个引号为好。我这里就是一个整数型,表示需要购买的数量。
再一个就是header()函数里的URL最好是完整的,否则也容易导致问题!
下面就是我修正后的代码,运行OK:
$sn = $_GET['sn'];
if(!preg_match("/^\d{5}$/", $sn)) die('Access Denied.');
if(defined("VALIDLOGIN")){
$cart->addItem($logininfo['id'], $sn);
header('Location: /shopping/index.php?a=viewcart');
}else{
header('Location: http://www.bioscreenorganics.cn/shopping/index.php?a=viewcart');
$cart->addCookie($sn);
}
心,终于可以放下了,哈!
preg_match
这个是什么函数啊?
怎样才能学好网站建设的代码啊!