从HTML表单中获取数据并在序列化数组中存储值时,如果有新行,则mysql_real_escape_string
序列化出错。
例如,这会输出一个错误长度的字符串以及新行已删除
$value="new\r\nline";
mysql_real_escape_string($value);
$array=array();
$array[0]=$value;
$array=serialize($array);
echo $array;
打印出a:1:{i:0;s:9:"new line";}
答案 0 :(得分:1)
mysql_real_escape_string
返回转义值..您不使用返回的值,那么为什么要抱怨它?
另外,如果您在浏览器中检查输出,则不会看到换行符。检查生成的源。
答案 1 :(得分:1)
如果您在浏览器中查看此内容,则会删除换行符。查看页面源代码,或将其包装在<pre>
标记中:
echo "<pre>$array</pre>";
答案 2 :(得分:0)
作为建议,您可以在序列化之前在基础64中编码来自HTML表单的序列化结果,以避免错误并使其安全。
$encodedValue=base64_encode($value);
$array=array();
$array[0]=$encodedValue;
$array=serialize($array);
echo $array;
要解码您存储的值,只需执行相反的过程
$array=unserialize($array);
$value=base64_decode($array[0]);
echo $value;
HMTL表格值保持不变。顺便说一下,在base 64中进行编码,可以安全地将值存储在BD中,但要高出33%。