PHP setcookie возвращает false при использовании с каркасом thinkphp - PullRequest
0 голосов
/ 06 декабря 2011

setcookie не работает, когда я использую инфраструктуру thinkphp. просто $a = setcookie('a','a'); без пути без домена. var_dump($a) возвращает bool(false); без вывода до этого и без предупреждения.

но когда я не использовал фреймворк, он работает.

Ответы [ 4 ]

2 голосов
/ 06 декабря 2011

Документация для setcookie() гласит, что «Если вывод существует до вызова этой функции, setcookie () завершится ошибкой и вернет FALSE». Поэтому обязательно ставьте setcookie() перед любыми операторами, которые могут записать в STDOUT.

Когда это происходит, PHP регистрирует предупреждение в вашем журнале ошибок: «Предупреждение PHP: Невозможно изменить информацию заголовка - заголовки уже отправлены ...». Так что проверьте файл журнала ошибок.

0 голосов
/ 07 ноября 2015

использовать cookie ("имя", "значение", время)

время необязательно, секунда

0 голосов
/ 23 октября 2013

cuz, thinkphp переписывает cookie-файл функции, если вы хотите использовать cookie с thinkphp.Вы должны записать cookie (имя, значение), не более setcookie!

из Китая QQ: 1720036678

0 голосов
/ 06 декабря 2011

Вы должны установить куки перед отправкой любых данных.Перед любым эхом и тд.Таким образом, у фреймворка может быть свой собственный обработчик файлов 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);
    }
}
?>
...