문제

값에 큰따옴표가 있는 경우 양식 제출 시 입력된 내용을 기억하는 고정 양식을 만드는 데 약간의 문제가 있습니다.문제는 HTML이 다음과 같이 읽어야 한다는 것입니다.

<input type="text" name="something" value="Whatever value you entered" />

그러나 문구가 다음과 같은 경우:"어떻게해야하나요?" 따옴표와 함께 입력하면 결과 HTML은 다음과 유사합니다.

<input type="text" this?="" do="" i="" how="" value="" name="something"/>

큰따옴표를 어떻게 필터링해야 합니까?나는 마법의 따옴표를 켜거나 끄고 시도해 보았고 스트립 슬래시와 추가 래시를 사용했지만 지금까지 올바른 해결책을 찾지 못했습니다.PHP에서 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

당신은 원합니다 htmlentities ().

<input type="text" value="<?php echo htmlentities($myValue); ?>">

다른 팁

위는 HTML 엔티티 코드가있는 모든 종류의 문자를 인코딩합니다. 나는 사용하는 것을 선호한다 :

htmlspecialchars($myValue, ENT_QUOTES, 'utf-8');

이것은 단지 인코딩됩니다.

'&' (ampersand) becomes '&amp;'
'"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
''' (single quote) becomes '&#039;' only when ENT_QUOTES is set.
'<' (less than) becomes '&lt;'
'>' (greater than) becomes '&gt;'

$ myValue에서 strip_tags를 수행하여 HTML 및 PHP 태그를 제거 할 수도 있습니다.

이것이 내가 사용하는 것입니다:

htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE | ENT_DISALLOWED | ENT_HTML5, 'UTF-8')
  • ENT_QUOTES PHP가 작은 따옴표와 큰 따옴표를 모두 변환하도록 지시하는데, 이것이 바람직하다고 생각합니다.
  • ENT_SUBSTITUTE 그리고 ENT_DISALLOWED 유효하지 않은 유니코드를 처리합니다.그것들은 매우 유사합니다. 제가 이해하는 한, 첫 번째는 유효하지 않은 코드 단위 시퀀스를 대체합니다. 잘못 인코딩된 문자 또는 문자를 나타내지 않는 시퀀스, 두 번째는 주어진 문서 유형에 대해 유효하지 않은 코드 포인트를 대체합니다. 지정된 문서 유형에 허용되지 않는 문자 (또는 명시적으로 지정하지 않은 경우 기본값).그만큼 선적 서류 비치 바람직하지 않게 간결합니다.
  • ENT_HTML5 내가 사용하는 문서 유형입니다.다른 것을 사용할 수 있지만 페이지 문서 유형과 일치해야 합니다.
  • UTF-8 내 문서의 인코딩입니다.PHP 5.4.0을 사용하고 있다는 확신이 없다면 특히 인코딩을 명시적으로 지정하는 것이 좋습니다. 특히 영어가 아닌 텍스트를 처리하는 경우에는 더욱 그렇습니다.제가 작업하는 호스트는 5.2.something을 사용합니다. 기본값은 다음과 같습니다. ISO-8859-1 그리고 횡설수설을 만들어냅니다.

처럼 똑똑한 제안, htmlspecialchars 예약된 HTML 문자만 인코딩하는 반면 htmlentities HTML 표현이 있는 모든 것을 변환합니다.대부분의 상황에서는 둘 중 하나가 작업을 수행합니다. 여기 주제에 대한 토론입니다.

하나 더:매직 따옴표는 잘못된 보안 감각을 제공하고 5.3.0에서 더 이상 사용되지 않고 5.4.0에서 제거되므로 비활성화된 상태로 유지하는 것이 가장 좋습니다.활성화된 경우 포스트백 시 필드의 각 인용 앞에 백슬래시가 추가됩니다(여러 포스트백으로 인해 점점 더 많은 슬래시가 추가됩니다).OP가 설정을 변경할 수 있지만 향후 참조를 위해 다음을 참조하세요.공유 호스트에 있거나 다른 방법으로 액세스할 수 없는 경우 php.ini, 가장 쉬운 방법은 추가하는 것입니다

php_flag magic_quotes_gpc Off

~로 .htaccess 파일.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top