Textarea值与换行符

时间:2013-11-24 21:37:28

标签: php html session

我有一个包含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;

1 个答案:

答案 0 :(得分:2)

您的问题是您在将数据放入会话之前正在进行mysql_real_escape_string(),并再次显示它。因此将\n更改为\\n

mysql_real_escape_string()是有用的,不要删除它!否则您的数据库调用将处于危险之中。

您可以尝试删除那里的mysql_real_escape_string(),并在实际对数据库执行操作之前将其放置在某处。

或者您可以做的是拥有2个版本的数据... $ descript和$ descript_escaped。使用第一个用于在HTML中显示数据。并在查询中使用第二个。