2013-12-04 5 views
0

Я создал скрипт PHP, который считывает данные из базы данных mysql и возвращает результат в формате json. Скрипт отлично работает, но теперь я хочу сохранить вывод в своем cookie. Когда я добавляю функцию setcookie («Сообщения», base64_encode (serialize ($ messages)), 157680000000); У меня ошибка сервера 500: преждевременный конец заголовков скриптов.(PHP) setcookie get error «Преждевременный конец заголовков скриптов»

Как сохранить массив $ сообщений в файле 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)); 
    } 

ответ

0

является данные, которые вы пытаетесь сохранить, огромны? $_COOKIE может хранить до 4000 байт ... (Включает дату, название, значение, срок действия).

+0

данных: 9.138 байт ... слишком большой? – SoulArcangel

+0

как я могу сохранить данные локально и прочитать их в отсутствие сети? – SoulArcangel

Смежные вопросы