我有一个包含textarea的html表单,在提交时,操作页面会验证$_POST
值。
如果表单的任何部分为空/不正确,则会将页面重定向回表单页面。为了防止用户再次输入所有数据,我已将所有$_POST
值加载到$_SESSION
个变量中。
问题是当来自textarea的会话数据回显到textarea时,我得到\r\n
换行符。如果我使用nl2br()
,则只打印出<br />
,同时打印reg_replace
。
我应该对$_SESSION
变量做些什么,或者在使换行符正确显示之前?
<textarea name="job_descript" class="tarea"
cols="40" rows="6" placeholder="Tell us about the job">
<?php
if(isset($_SESSION['DESCRIPT'])){
echo $_SESSION['DESCRIPT'];
unset($_SESSION['DESCRIPT']);
} ?></textarea>
function clean($str)
{
$str = trim($str);
if(get_magic_quotes_gpc())
{
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
$descript = clean($_POST['job_descript']);
$_SESSION['DESCRIPT'] = $descript;
答案 0 :(得分:2)
您的问题是您在将数据放入会话之前正在进行mysql_real_escape_string()
,并再次显示它。因此将\n
更改为\\n
。
mysql_real_escape_string()
是有用的,不要删除它!否则您的数据库调用将处于危险之中。
您可以尝试删除那里的mysql_real_escape_string()
,并在实际对数据库执行操作之前将其放置在某处。
或者您可以做的是拥有2个版本的数据... $ descript和$ descript_escaped。使用第一个用于在HTML中显示数据。并在查询中使用第二个。