2012-04-28 48 views
-2

我最近添加了一個使用myysql/php的新聞系統,它工作的很完美,但是在添加html時會產生一些錯誤。php mysql新聞錯誤

例如,如果我添加一個YouTube視頻會添加/或\

我改變的代碼是什麼下面的HTML保存到數據庫?

這就是HTML最終看起來像後:

+3

請格式化您的代碼以使其可讀。這可能只是對你要求幫助的人的尊重。 – 2012-04-28 06:35:21

回答

2

這可能只是一些剝開斜槓更多。看起來你在保存數據(好工作!)之前正在跳過斜線,但是當你去顯示數據時你似乎沒有刪除那些斜線。回顯時,請嘗試以下操作:

​​
+0

Joanthan這樣做了。謝謝! – NickkN 2012-04-28 05:56:44

+0

樂意幫忙,@HilraJannar。由於你是新來的StackOverflow,它鼓勵你接受最好解決你的問題的答案。這會讓您和答案的作者獲得更多的聲譽。 – Sampson 2012-04-28 05:59:25

+0

@HilraJannar不使用此答案。這傢伙不知道。當你從數據庫獲取數據時,你不必**去除任何斜線。這意味着你的數據在其他地方被破壞 - 所以,你必須讓你的代碼不要添加過多的斜線。治癒死亡,而不是症狀。 – 2012-04-28 06:16:26

1

最有可能得到magic quotes啓用。 如果是這樣,你應該相應地檢查這個和stripslashes

function magic_quotes_strip($value){ 
    if(get_magic_quotes_gpc()){ 
     if(is_array($value)){ 
      return array_map('stripslashes',$value); 
     }else{ 
      return stripslashes($value); 
     } 
    }else{ 
     return $value; 
    } 
} 
//Strip all slashes from post array before handling 
$_POST = magic_quotes_strip($_POST); 

然後做你的正常mysql的輸入之前逃脫,沒有雙重轉義的擔心:

$title = mysql_escape_string($_POST['title']);

注:

PHP_SELF是一個XSS漏洞,你應該htmlentites那或刪除它,以便它只是action=""

$_SESSION[usr_name]您使用usr_name作爲常量,它應該是$_SESSION['usr_name']

+0

如果你有魔術引號,你必須去除斜槓不僅爲MySQL,但整個現場。 Cookie中的過多斜槓與HTML中的一樣糟糕。你鏈接的文章告訴你。 – 2012-04-28 06:32:59

+0

是的,這是顯而易見的'因此'stripslashes'意義上的輸入** NOT!**輸出,我已經在過去的託管,所有POST/GET輸入簡單的用戶功能已經足夠,我在哪裏提到餅乾? – 2012-04-28 06:37:00

+0

我提到餅乾。必須從所有被破壞的數據中去除魔術斜線,而不僅僅是去往mysql字符串的數據。有關詳細信息,請參閱http://php.net/manual/en/security.magicquotes.php。 – 2012-04-28 06:42:12

0

在您的代碼中有一些地方無意中添加了過多的斜線。
你必須找到這個地方,並刪除過多的削減。

這可能是一個臭名昭着的magic_quotes_gpc ini設置。您必須將其關閉,否則,請使用上述鏈接中的代碼,將這些無用的斜線放在配置文件的最上方。

這可能是一些愚蠢的無用的「最終清理功能」。你必須找到它並刪除它。

這可能在別的地方,比如generate_wysiwyg()函數或其他任何東西。

請記住:僅僅使用stripslashes()不過是一個醜陋的柺杖,只能在一個地方糾正你的數據,而讓它在別處變壞。