【问题标题】:(PHP) setcookie get error "Premature end of script headers"(PHP) setcookie 得到错误“脚本头过早结束”
【发布时间】:2013-12-04 18:06:15
【问题描述】:

我创建了一个 PHP 脚本,它从 mysql 数据库中读取数据并返回 json 格式的输出。 该脚本工作正常,但现在我想将输出保存在我的 cookie 中。 当我添加函数 setcookie("Messages",base64_encode(serialize($messages)),157680000000); 我有一个服务器错误 500:脚本头过早结束。

如何将数组 $messages 保存在 cookie 中?

-----------------PHP 代码------

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT"); 
header("Cache-Control: no-cache, no-store, must-revalidate"); 
header("Pragma: no-cache");
header("Content-type: application/json");   

include_once("include/common.php");
if (empty($uname)){
    $uname = (!empty($_GET['u'])) ? $_GET['u'] : "";
    $uname = (!empty($_POST['u'])) ? $_POST['u'] : $uname;
}
if (empty($limit)){
    $limit = (!empty($_GET['limit'])) ? $_GET['limit'] : "";
    $limit = (!empty($_POST['limit'])) ? $_POST['limit'] : $limit;
}
$isonline = is_online();
$user_obj = new User();
$user_info = $user_obj->getUserInfo($uname);
$msg_obj = new Message();
$msg_array = $msg_obj->getMessages($user_info[_USERID_COLUMN],$limit);
$messages = array();
$i = 0;

            [...]

    foreach( $msg_array as $id => $val ){   
            $messages[$i]['id_message']=$val['id_message'];
            $messages[$i]['user']=$val['user'];
            $messages[$i]['user_image']=$val['user_image'];
            $messages[$i]['posted_time']=time2str($val['posted_time']);
            if($options['link'] == "off"){
                $messages[$i]['message']=htmlspecialchars_decode(cleaner($val['message']));
            }else{
                $messages[$i]['message']=htmlspecialchars_decode($val['message']);
            }
            $messages[$i]['mediatype']=$val['mediatype'];
            $messages[$i]['mediaurl']=$val['mediaurl'];
            $i++;
    }   
    array_reverse($messages);
    if(ceckCookie()){
        setcookie("Messages",base64_encode(serialize($messages)),157680000000);
    }

    if( !$isonline && !empty($_COOKIE["Messages"]) ){
        echo($_COOKIE["Messages"]);
    }else{
        echo(json_encode($messages));
    }

【问题讨论】:

    标签: php header setcookie


    【解决方案1】:

    您要保存的数据是否很大? $_COOKIE 可以存储在 4000 字节以下...(包括日期、名称、值、到期)..

    【讨论】:

    • 数据是 9.138 字节...太大了?
    • 如何在本地保存数据,在没有网络的情况下读取?
    猜你喜欢
    • 2017-07-22
    • 2013-07-09
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 2011-05-28
    相关资源
    最近更新 更多