2013-02-08 76 views
3

對於我的示例,請訪問http://jflaugher.mystudentsite.net/cmweb241/cmweb241_lab2.html爲什麼我的htmlspecialchars和str_replace不工作?

我只需要使用htmlspecialchars並使用str_replace函數刪除雙引號和單引號。爲什麼這不適合我?我是很新的PHP:/

<?php 
    $username = str_replace(array("'", "\""), "", htmlspecialchars($_POST['username'])); 
    $password = str_replace(array("'", "\""), "", htmlspecialchars($_POST['password'])); 
    $comment = str_replace(array("'", "\""), "", htmlspecialchars($_POST['comment'])); 

    echo " <p>Your Username is: $username . </p>"; 
    echo " <p>Your Password is: $password . </p>"; 
    echo " <p>Your Comment was: $comment . </p>"; 

?> 
+2

'htmlspecialchars' - 單精度和雙引號轉換爲ヶ輛,所以,你不會有任何的比賽。 – ajreal

+2

按照其他順序進行。先刪除引號,然後執行htmlspecialchars。 –

回答

4

使用它以相反的順序由亞歷克斯LUNIX

$username = htmlspecialchars(str_replace(array("'", "\""), "", $_POST['username'])); 
+0

+1在答案中看到我的名字。 (因爲它是正確的。) –

+0

@AlexLunix作爲一個建議,如果你知道答案,然後張貼它的答案,只是不發表評論。 :) –

+1

我覺得這個答案太短,而且很懶:p可能下一次,我和其他人一樣喜歡代表。 –

1

指定的上一個答案是正確的。

您應用第一個htmlspecialchars函數。它將每個雙引號轉換爲&「並且每一個單引號給&#039 ;.這些特殊字符在Web瀏覽器中分別顯示爲雙引號和單引號。

您應該先應用str_replace。下面的代碼是正確的:

<?php 
foreach(array('comment', 'password', 'username') as $key) { 
    $$key = empty($_POST[$key]) ? null : htmlspecialchars(str_replace(array("'", '"'), '', $_POST[$key])); 
    echo " <p>Your " . $key. " is: " . $$key . "</p>"; 
} 
?> 
+0

對於3個值來說這似乎是不可置信的,確定它可能更有意義,但沒有更多...可讀性優化。雖然你應該添加的一件事是確認該字段已設置。 –