program story

PHP에서 HTML 양식 입력 기본값을 올바르게 이스케이프하는 방법은 무엇입니까?

inputbox 2020. 11. 28. 09:16
반응형

PHP에서 HTML 양식 입력 기본값을 올바르게 이스케이프하는 방법은 무엇입니까?


다음 두 개의 html / php 스 니펫이 제공됩니다.

<input type="text" name="firstname" value="<?php echo $_POST['firstname']; ?>" />

<textarea name="content"><?php echo $_POST['content']; ?></textarea>

에코 된 $_POST변수에 어떤 문자 인코딩을 사용해야 합니까? 내장 된 PHP 함수를 사용할 수 있습니까? $_POST값이 아직 인코딩되지 않았다고 가정하십시오 . 마법은 아무것도 인용하지 않습니다.


사용 htmlspecialchars($_POST['firstname'])하고 htmlspecialchars($_POST['content']).

htmlspecialchars()사용자에게 표시하기 전에 항상 문자열을 이스케이프 하십시오.


htmlspecialchars 는 두 경우 모두 작동합니다. input경우 에 따옴표가 문제가되지 않도록 다른 플래그 옵션을 살펴보십시오 .


다소 길다는 것을 감안할 때 함수에 넣을 것입니다.

<?PHP
function encodeValue ($s) {
    return htmlentities($s, ENT_COMPAT|ENT_QUOTES,'ISO-8859-1', true); 
}
?>

여기에는 작은 따옴표와 큰 따옴표가 인코딩되었는지 확인하기 위해 ENT_QUOTES 가 있지만 빈 문자열을 삽입하는 대신 특수 문자 (José와 유사) 인코딩 합니다.

그런 다음 다음을 수행 할 수 있습니다.

<input type="text" name="firstname" value="<?= encodeValue($_POST['firstname']) ?>" />

<textarea name="content"><?= encodeValue($_POST['content']) ?></textarea>

나는 자주 사용

<input type="text" name="firstname" value=<?php echo json_encode($_POST['firstname']); ?>/>

참고 URL : https://stackoverflow.com/questions/6249151/how-to-properly-escape-html-form-input-default-values-in-php

반응형