이 페이지 에서 이 문서 에 첨부 된 파일 을 다운로드 할 수도 있 고,파일 다운로드 에 있 는 문자 처리 에서 이 문 서 를 다운로드 하여 포맷 된 사용자 입력 을 안전하게 표시 하 는 방법 을 설명 할 수도 있 습 니 다.필 터 를 거치 지 않 은 출력의 위험 에 대해 토론 하고 포맷 출력 을 안전하게 표시 하 는 방법 을 제시 할 것 입 니 다.출력 을 걸 러 낼 위험 이 없습니다.사용자 의 입력 만 받 고 표시 하면 출력 페이지 를 파괴 할 수 있 습 니 다.예 를 들 어 일부 사람들 이 제출 한 입력 상자 에 javascript 스 크 립 트 를 악의 적 으로 삽입 할 수 있 습 니 다:This is my comment.<script language="javascript:alert('Do something bad here!')">.이렇게 하면 사용자 가 악의 적 이지 않 더 라 도 표 가 갑자기 중단 되 거나 페이지 가 불완전 하 게 표시 되 는 등 HTML 문 구 를 파괴 할 수 있 습 니 다.형식 이 없 는 텍스트 만 표시 하 는 것 은 가장 간단 한 해결 방안 입 니 다.사용자 가 제출 한 정 보 를 형식 이 없 는 텍스트 로 표시 할 뿐 입 니 다.html specialchars()함 수 를 사용 하여 모든 문 자 를 HTML 로 인 코딩 합 니 다.<b>가로 변 경 될 경우 예상 치 못 한 HTML 태그 가 부적 절 할 때 출력 되 지 않도록 보증 할 수 있 습 니 다.사용자 가 형식 이 없 는 텍스트 내용 에 만 관심 을 갖 는 다 면 좋 은 해결 방안 입 니 다.하지만 포맷 할 수 있 는 능력 을 준다 면 더 좋 을 것 이다.Formatting with Custom Markup Tags 사용자 의 표 시 를 포맷 하면 사용자 에 게 특별한 표 시 를 제공 할 수 있 습 니 다.예 를 들 어[b]...[/b]를 사용 하여 디 스 플레이 를 가중 시 킬 수 있 습 니 다.[i]기울 임 꼴 디 스 플레이 를 간단하게 찾 으 면 됩 니 다.$output=strreplace("[b]", "<b>", $output); $output = str_replace("[i]", "<i>", $output); 좀 더 잘 하면 사용자 가 링크 를 입력 할 수 있 습 니 다.예 를 들 어 사용 자 는[link="url"]...[/link]를 입력 할 수 있 습 니 다.우 리 는<a href=">...</a>문 구 를 변환 할 것 입 니 다.이때 우 리 는 간단 한 검색 으로 교체 할 수 없습니다.정규 표현 식 으로 교체 해 야 합 니 다.$output=eregreplace('\[link="([[:graph:]]+)"\]', '<a href="\\1">', $output); ereg_replace()의 실행 은[link="..."]가 나타 난 문자열 을 찾 고<a href="...">를 사용 하여[[:graph:]]의 의 미 를 바 꾸 는 것 입 니 다.정규 표현 식 은 관련 글 을 보십시오.outputlib.php 의 formatoutput()함 수 는 이러한 태그 의 변환 을 제공 합 니 다.전체적으로 html specialchars()를 호출 하여 HTML 표 시 를 특수 인 코딩 으로 변환 하고 표시 하지 말 아야 할 HTML 표 시 를 걸 러 낸 다음 에 일련의 사용자 정의 표 시 를 해당 하 는 HTML 표 시 를 변환 하 는 것 이 원칙 입 니 다.아래 의 소스 코드 를 참조 하 십시오:<?php function format_output($output) { /**************************************************************************** * Takes a raw string ($output) and formats it for output using a special * stripped down markup that is similar to HTML ****************************************************************************/ $output = htmlspecialchars(stripslashes($output)); /* new paragraph */ $output = str_replace('[p]', '<p>', $output); /* bold */ $output = str_replace('[b]', '<b>', $output); $output = str_replace('[/b]', '</b>', $output); /* italics */ $output = str_replace('[i]', '<i>', $output); $output = str_replace('[/i]', '</i>', $output); /* preformatted */ $output = str_replace('[pre]', '<pre>', $output); $output = str_replace('[/pre]', '</pre>', $output); /* indented blocks (blockquote) */ $output = str_replace('[indent]', '<blockquote>', $output); $output = str_replace('[/indent]', '</blockquote>', $output); /* anchors */ $output = ereg_replace('\[anchor="([[:graph:]]+)"\]', '<a name="\\1"></a>', $output); /* links, note we try to prevent javascript in links */ $output = str_replace('[link="javascript', '[link=" javascript', $output); $output = ereg_replace('\[link="([[:graph:]]+)"\]', '<a href="\\1">', $output); $output = str_replace('[/link]', '</a>', $output); return nl2br($output); } ?> 일부 주의 사항:사용자 정의 표 시 를 바 꾸 어 HTML 태그 문자열 을 만 드 는 것 은 htmlspecialchars()함 수 를 호출 한 후에 이 호출 전에 하 는 것 이 아니 라,그렇지 않 으 면 당신 의 힘 든 작업 은 htmlspecialchars()를 호출 한 후에 수포 로 돌아 갈 것 입 니 다.전환 을 거 친 후에 HTML 코드 를 찾 으 면 교 체 될 것 입 니 다.예 를 들 어 더 블 따옴표 가"nl2br()함수 가 되 어 Enter 줄 바 꿈 자 를<br>태그 로 바 꾸 고 html specialchars()이후 에 도 바 꿔 야 합 니 다.[links="]를<a href=">로 변환 할 때 제출 자가 자바 script 스 크 립 트 를 삽입 하지 않 는 지 확인 해 야 합 니 다.간단 한 방법 으로[link="자바 script 을[link="자바 script 으로 변경 해 야 합 니 다.이러한 방식 은 교체 되 지 않 고 원래 의 코드 만 표시 합 니 다.outputlib.php 브 라 우 저 에서 test.php 를 호출 하면 format 를 볼 수 있 습 니 다.output()의 사용 상황 이 정상 적 인 HTML 표 시 는 사용 할 수 없습니다.아래 의 특수 태그 로 대체 합 니 다.-this is[b]bold[/b]-this is[i]italics[/i]-this is[link="http://www.phpbuilder.com"]a link[/link] - this is [anchor="test"]an anchor,and a[link="\#test"]link[/link]to the anchor[p]단락[pre]미리 포맷[/pre][indent]교차 텍스트[/indent]는 아주 적은 태그 일 뿐 입 니 다.물론 필요 에 따라 더 많은 태그 Conclusion 결론 을 추가 할 수 있 습 니 다.이 토론 은 사용자 의 입력 을 안전하게 표시 하 는 방법 을 제공 합 니 다.다음 프로그램 에서 게시판 사용 가능
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: