首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当与thinkphp框架一起使用时,PHP setcookie返回false

当与thinkphp框架一起使用时,PHP setcookie返回false
EN

Stack Overflow用户
提问于 2011-12-06 23:23:53
回答 4查看 3K关注 0票数 0

当我使用thinkphp框架时,setcookie不工作。只是$a = setcookie('a','a');没有路径,没有域。var_dump($a)返回bool(false);,在此之前没有输出,也没有警告。

但是当我没有使用这个框架时,它就能工作了。

EN

回答 4

Stack Overflow用户

发布于 2011-12-06 23:34:23

documentation for setcookie()表示“如果在调用此函数之前存在输出,则setcookie()将失败并返回FALSE。”因此,请确保将setcookie()放在任何可能写入到STDOUT的语句之前。

发生这种情况时,PHP会在错误日志中记录一个警告:"PHP警告:无法修改标头信息-标头已发送...“所以请检查您的错误日志文件。

票数 3
EN

Stack Overflow用户

发布于 2011-12-06 23:33:44

在发送任何数据之前,必须设置cookies。在任何回声之前,等等。因此框架可能有自己cookie处理程序。请查看其文档。

或者,您可以使用扩展:

代码语言:javascript
复制
<?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);
    }
}
?>
票数 0
EN

Stack Overflow用户

发布于 2015-11-07 15:47:49

使用cookie("name","value",time)

时间是可选的,秒

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8402307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档