Estou usando o seguinte para passar para outra página: header ('location: ../../servidor.php?s=form&msg='.rawurlencode(serialize($msg)));
Tenho a seguinte função que é peguei na net e funcionou beleza no Wamp
function checkSerialization($string, &$errmsg) {
$str = 's';
$array = 'a';
$integer = 'i';
$any = '[^}]*?';
$count = '\d+';
$content = '"(?:\\\";|.)*?";';
$open_tag = '\{';
$close_tag = '\}';
$parameter = "($str|$array|$integer|$any):($count)" . "(?:[:]($open_tag|$content)|[;])";
$preg = "/$parameter|($close_tag)/";
if(!preg_match_all($preg, $string, $matches)) {
$errmsg = 'not a serialized string';
return false;
}
$open_arrays = 0;
foreach($matches[1] as $key => $value) {
if(!empty($value) && ($value != $array xor $value != $str xor $value != $integer)) {
$errmsg = 'undefined datatype';
return false;
}
if($value == $array) {
$open_arrays++;
if($matches[3][$key] != '{') {
$errmsg = 'open tag expected';
return false;
}
}
if($value == '') {
if($matches[4][$key] != '}') {
$errmsg = 'close tag expected';
return false;
}
$open_arrays--;
}
if($value == $str) {
$aVar = ltrim($matches[3][$key], '"');
$aVar = rtrim($aVar, '";');
if(strlen($aVar) != $matches[2][$key]) {
$errmsg = 'stringlen for string not match';
return false;
}
}
if($value == $integer) {
if(!empty($matches[3][$key])) {
$errmsg = 'unexpected data';
return false;
}
if(!is_integer((int)$matches[2][$key])) {
$errmsg = 'integer expected';
return false;
}
}
}
if($open_arrays != 0) {
$errmsg = 'wrong setted arrays';
return false;
}
return true;
}
E uso o seguinte para exibir na página final:
$erro = false;
$msg = isset($_GET['msg']) ? rawurldecode($_GET['msg']) : false;
$msg = checkSerialization($msg, $erro) ? unserialize($msg) : '<p class="msg">'.$msg.'</p>';
if(is_array($msg)) {
$msgList = '<ul>';
foreach($msg as $item)
$msgList.= '<li class="msg">'.$item.'</li>';
$msgList.= '</ul>';
$msg = $msgList;
}
print $msg; No navegador exibe algo tipo Você deve digitar o nome Você deve digitar a senha Isto no Wamp Server, porém testei onde hospedo e não funcionou normalmente. Neste, aparece algo tipo "a:6:{i:0;s:33:\"Você deve preencher o campo Nome.\";i:1;s:32:\"" mas no meu print $msg;