2013-04-28 39 views
0

我已經與域X表:標題,內容,時間。保存包含HTML標籤和單一雙引號內容到數據庫

通過HtmlForm控件我上傳數據到這個表。 HTML是:進程2 PHP腳本的

<form action="process2.php" method="post" enctype="multipart/form-data"> 
Headline: <input name="headline" type="text" size="100" /><br /><br /> 
Content:<textarea name="content" cols="100" rows="10" placeholder="Content here"> 
</textarea><br /><br /> 
</form> 

部分:

$headl = mysql_real_escape_string($_POST['headline']); 
$headline=htmlspecialchars("$headl", ENT_QUOTES); 

$cont=$_POST['content']; 
$cont = str_replace("&lt;", "<", $cont); 
$cont = str_replace("&gt;", ">", $cont); 
$content=htmlentities($cont,ENT_QUOTES); 

$sql="INSERT INTO X(`headline`, `content`, `date`) VALUES ('$headline','$content',NOW())"; 

$query = mysql_query($sql)or die(mysql_error()); 

問題: 標題和日期越來越插入。 而內容爲空...

我試過mysql_real_escape_string上的內容,但也沒有用。 爲什麼內容是空的? ...任何解決方案?

+1

你爲什麼不上的內容使用mysql_real_escape_string嗎? – 2013-04-28 08:59:35

+0

使用準備好的語句。 – 2013-04-28 09:03:51

+0

嘗試echo' $ content'並查看它給出了什麼。也許它插入到數據庫 – 2013-04-28 09:39:03

回答

0

請試試這個,它應該在你的情況下工作:

// htmlspecialchars Must with ENT_QUOTES, it actually make mysql_real_escape_string useless, but mysql_real_escape_string for safe anyway. 

$headline = mysql_real_escape_string(htmlspecialchars($_POST['headline'], ENT_QUOTES)); 
$content = mysql_real_escape_string(htmlspecialchars($_POST['content'], ENT_QUOTES)); 

$sql = "INSERT INTO X(`headline`, `content`, `date`) VALUES ('{$headline}', '{$content}', NOW())"; 

$query = mysql_query($sql) or die(mysql_error()); 

要顯示,您可以從MySQL加載出來的數據,併爲每個執行htmlspecialchars_decode。

而更簡單的方法是,節約他們的時候,就這樣不這樣做的htmlspecialchars:

$headline = mysql_real_escape_string($_POST['headline']); 
$content = mysql_real_escape_string($_POST['content']); 

mysql_real_escape_string後,數據對於MySQL應該安全的,因爲所有已知的注射技巧將被過濾。你只需要關心它自己的html內容。哦,這兩個內容的長度不能超過你的字段的字符數限制。

相關問題