当我使用thinkphp框架时,setcookie不工作。只是$a = setcookie('a','a');没有路径,没有域。var_dump($a)返回bool(false);,在此之前没有输出,也没有警告。
但是当我没有使用这个框架时,它就能工作了。
发布于 2011-12-06 23:34:23
documentation for setcookie()表示“如果在调用此函数之前存在输出,则setcookie()将失败并返回FALSE。”因此,请确保将setcookie()放在任何可能写入到STDOUT的语句之前。
发生这种情况时,PHP会在错误日志中记录一个警告:"PHP警告:无法修改标头信息-标头已发送...“所以请检查您的错误日志文件。
发布于 2011-12-06 23:33:44
在发送任何数据之前,必须设置cookies。在任何回声之前,等等。因此框架可能有自己cookie处理程序。请查看其文档。
或者,您可以使用扩展:
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id$
/**
+------------------------------------------------------------------------------
* Cookie管理类
+------------------------------------------------------------------------------
* @category Think
* @package Think
* @subpackage Util
* @author liu21st <liu21st@gmail.com>
* @version $Id$
+------------------------------------------------------------------------------
*/
class Cookie extends Think
{
static function is_set($name) {
return isset($_COOKIE[C('COOKIE_PREFIX').$name]);
}
static function get($name) {
$value = $_COOKIE[C('COOKIE_PREFIX').$name];
$value = unserialize(base64_decode($value));
return $value;
}
static function set($name,$value,$expire='',$path='',$domain='') {
if($expire=='') {
$expire = C('COOKIE_EXPIRE');
}
if(empty($path)) {
$path = C('COOKIE_PATH');
}
if(empty($domain)) {
$domain = C('COOKIE_DOMAIN');
}
$expire = !empty($expire)? time()+$expire : 0;
$value = base64_encode(serialize($value));
setcookie(C('COOKIE_PREFIX').$name, $value,$expire,$path,$domain);
$_COOKIE[C('COOKIE_PREFIX').$name] = $value;
}
static function delete($name) {
Cookie::set($name,'',time()-3600);
unset($_COOKIE[C('COOKIE_PREFIX').$name]);
}
static function clear() {
unset($_COOKIE);
}
}
?>发布于 2015-11-07 15:47:49
使用cookie("name","value",time)
时间是可选的,秒
https://stackoverflow.com/questions/8402307
复制相似问题