2013-02-08 2 views
3

, 난 그냥 작동하려면 반드시 htmlspecialchars를 필요로하고 http://jflaugher.mystudentsite.net/cmweb241/cmweb241_lab2.htmlhtmlspecialchars 및 str_replace가 작동하지 않는 이유는 무엇입니까? 내 예를 들어

방문하여 않는 str_replace 기능은 단일 및 이중 따옴표를 제거하십시오. 왜 나에게 효과가없는거야? 나는 PHP에 아주 새로운 오전 : 이전의 대답은 정확 알렉스 Lunix

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

'htmlspecialchars' - 한모음과 큰 따옴표를 htmlentities로 변환하면 일치하지 않습니다. – ajreal

+2

다른 순서로 수행하십시오. 따옴표를 먼저 제거한 다음 htmlspecialchars를 수행하십시오. –

답변

4

는 역순으로 사용합니다.

첫 번째 htmlspecialchars 기능을 적용합니다. 모든 큰 따옴표는 & quot;로 변환됩니다. 모든 작은 따옴표는 & # 039;입니다. 이 특수 문자는 웹 브라우저에서 각각 큰 따옴표와 작은 따옴표로 표시됩니다.

먼저 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

+1 답변에 내 이름을 보았습니다. (그리고 그것이 맞다.) –

+0

@AlexLunix 조언으로서, 당신이 그 대답을 알고 있다면 그것을 대답으로 게시하고, 그것을 코멘트하지 마라. :) –

+1

나는 대답이 너무 짧았고 게으르다 고 느꼈다. 다음 번엔, 아마도 나는 누구든지만큼 대표를 좋아한다. –

1

에 의해 지정된/

<?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>"; 

?> 
+0

이것은 3 가지 값을 위해 엄청나게 불필요하게 보인다. 더 많은 것을 이해할 수는 있지만 더 이상은 없습니다 ... 최적화에 대한 가독성. 그가 추가해야 할 한 가지는 필드가 설정된 유효성 검사입니다. –

관련 문제