2011-08-16 62 views
1

我從我的textarea獲取數據用下面的代碼約NL,BR和安全性的textarea和MySQL工作在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>跡象...

我怎樣才能擺脫他們,而在textarea的再次編輯我的文字?

回答

5

如何在textarea中再次編輯我的文本時擺脫它們?

停止使用nl2br(),當然。這裏完全錯了。


當你想輸出包含換行符到HTML,而不是當你想將它存儲在數據庫中的數據你使用nl2br()。保存數據不變,格式化以供查看。

如果將它輸出到<textarea>中,則不需要使用它,因爲textareas顯示換行符(而HTML通常不顯示換行符)。對於textarea你需要htmlspecialchars(),但顯然這已經發生 - 否則你不會看到文字<br>顯示出來。

+0

沒錯。但也許你可以詳細說明在哪裏使用它。 – troelskn

+0

好的我會停下來,但告訴我你解決這個問題的方法 – David

+0

@David:我以爲*「不要在這裏使用'nl2br()'*會清楚嗎? – Tomalak

-1
<?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

檢查例子

+0

首先用'nl2br()'轉換數據,然後使用一個函數刪除br標籤以回到初始狀態,聽起來會起到相反的效果。 – JJJ

+0

是的,你是對的,但我已經給出了一種可能 – rahul

+0

也許有一些小小的和平代碼可以解決我的問題?這個看起來很大,我不認爲這是解決我的問題的最好方法 – David