2016-01-29 25 views
0

我在調試我的網站, 我發現,當我發佈html,css和php程序使用發佈文章 它將以發佈的方式運行我如何修復此所以不會影響到我的網站再次如何修復發佈HTML元素的錯誤,並阻止它運行

當我提出這樣的

<style> 
*{ 
display:none!important; 
} 
</style> 

在整個頁面會顯示沒有inste顯示用戶信息的廣告。 又如

<form> 
<input type="text" value="Hello"/> 
<input type="submit" value="submit"/> 
<form> 

而且這個HTML表單將運行作爲HTML而不是在我的PHP顯示文本 請我怎樣才能解決這一問題,以避免這種情況。 我嘗試在我的PHP添加此mysql_real_escape_string($_POST['post']);郵寄到我的數據庫之前,但仍然沒有工作有人能幫助我

這裏是我的PHP提交後

<?php 

if($_POST){ 
    $db_host = "localhost"; 
    $db_user = "root"; 
    $db_pass = "pass"; 
    $db_name = "posts"; 

    try { 
     $db_conn = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass); 
     $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $stmt = $db_conn->prepare("INSERT INTO posts(post) VALUES(:post)"); 

     $stmt->bindParam(':post', $post); 

     $form = $_POST; 
     $post= mysql_real_escape_string($form['post']); 

     $stmt->execute(); 

     echo "Post submited"; 

    } 
    catch(PDOException $e) 
    { 
     echo "Error:" . $e->getMessage(); 
    } 
    $db_conn = null; 
} 
?> 
+2

'mysql_real_escape_string()'不PDO發揮出色,是不必要的,因爲你使用準備好的語句。 '$ form = $ _POST'只是重新分配數組,sit是不必要的。 –

+0

@JayBlanchard我怎麼能防止這種情況發生影響我的網頁和'mysql_real_escape_string()'和'$ form = $ _POST'我沒有使用它之前我用這個後''$ post = $ _POST ['post']' – Codesoft

+0

您必須擁有您的表單元素的名稱屬性,否則任何內容都不會發布。 –

回答

0

嘗試使用ヶ輛( )函數,因爲它所有適用的字符轉換爲HTML實體:

htmlentities ($form['post']) 
+1

OP爲什麼要「嘗試這個」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,而且是爲了將來SO的訪問者。 –

+0

這是我得到的時候,我發佈這樣的''我得到這個出來放'* {display:none;}'當我發佈輸入它也顯示輸入爲html @ JayBlanchard – Codesoft