关于nl, br和安全,而与文本区域和mysql在PHP工作


about nl, br and security while working with textarea and mysql in PHP

我用下面的代码从我的文本区获取数据

$about_me=mysql_real_escape_string(nl2br($_POST['about_me']));

1. 使用$_POST接收数据。2. nl2br使刹车,所以如果我回显这段代码给用户,他会看到是否有新的行。3.

Mysql_real_escape_string用于保护代码在进入数据库之前不被mysql注入。

如果我回显这段代码,一切正常

但是如果我再次编辑它通过textarea, php去mysql获取数据,把它放在textarea,我看到<br>符号…

如何在文本区编辑文本时摆脱它们?

如何在文本区编辑文本时摆脱它们?

当然要停止使用nl2br()。这是完全错误的。


你使用nl2br()当你想输出数据,包含换行到HTML,而不是当你想把它存储在数据库中。保存数据不变,格式化以供查看。

如果您将其输出到<textarea>中,您也不需要使用它,因为文本区域显示换行符(而HTML通常不会)。对于文本区,您需要htmlspecialchars(),但显然这已经发生了-否则您不会看到文字<br>显示

<?php
function br2nl($string){
  $return=eregi_replace('<br[[:space:]]*/?'.
    '[[:space:]]*>',chr(13).chr(10),$string);
  return $return;
}
?> 

在从数据库获取数据和打印到textarea之前使用。

http://php.net/manual/en/function.nl2br.php

查看本页的示例