참고: PHP에서 양식을 처리할 때 데이터 보안에 주의하세요
해커의 침입과 스팸 괴롭힘을 방지하기 위해 HTML 양식을 처리하기 전에 제출된 데이터를 확인하는 것이 매우 필요합니다.
위의 html 형식은 다음 규칙이 적용된다고 가정합니다.
필드 - 유효성 검사 규칙
이름 – 필수, 문자와 공백을 포함해야 합니다
이메일 – 필수, @ 및
를 포함한 유효한 이메일 주소가 포함되어 있어야 합니다.
URL(웹사이트) - 선택 사항입니다. 입력한 경우 유효한 URL이어야 합니다.
댓글 – 선택 사항, 여러 줄 입력 필드
성별 – 필수, 하나 선택
html 코드는 다음과 같습니다.
<code><span></<span>head</span>></span><span><<span>body</span>></span><span><<span>form</span><span>action</span>=<span>'test.php'</span><span>method</span>=<span>'post'</span>></span> 姓名:<span><<span>input</span><span>type</span>=<span>'text'</span><span>name</span>=<span>'name'</span> /></span><span><<span>br</span>/></span> 电邮:<span><<span>input</span><span>type</span>=<span>'text'</span><span>name</span>=<span>'email'</span> /></span><span><<span>br</span>/></span> 网址:<span><<span>input</span><span>type</span>=<span>'text'</span><span>name</span>=<span>'website'</span> /></span><span><<span>br</span>/></span> 评论:<span><<span>textarea</span><span>name</span>=<span>'comment'</span><span>rows</span>=<span>3</span><span>cols</span>=<span>21</span>></span><span></<span>textarea</span>></span><span><<span>br</span>/></span> 性别:<span><<span>input</span><span>type</span>=<span>"radio"</span><span>name</span>=<span>'gender'</span><span>value</span>=<span>0</span><span>checked</span>=<span>'checked'</span>/></span>女性 <span><<span>input</span><span>type</span>=<span>"radio"</span><span>name</span>=<span>'gender'</span><span>value</span>=<span>1</span> /></span>男性<span><<span>br</span>/></span><span><<span>input</span><span>type</span>=<span>'submit'</span><span>value</span>=<span>'提交'</span> /></span><span></<span>form</span>></span><span></<span>body</span>></span><span></<span>html</span>></span></code>
이 양식은 post 메소드를 통해 데이터를 제출합니다
PHP를 통해 양식 데이터 유효성을 검사합니다.
일반적으로 제출된 데이터를 필터링할 때 htmlspecialchars() 함수를 사용하여 html 태그 문자를 html 엔터티로 변환하는 데이터를 처리합니다. 예를 들어 < 및 >는
<code><span><<span>script</span>></span><span>location.href(<span>'http://www.hacked.com'</span>)</span><span></<span>script</span>></span></code>
또한 htmlspecialchar() 함수를 사용하여 데이터를 필터링하는 것 외에도 다음 두 가지 작업도 수행해야 합니다.
<code><span>&</span><span>lt</span>;script<span>&</span><span>gt</span>;location<span>.</span>href(<span>'http://www.hacked.com'</span>)<span>&</span><span>lt</span>;/script<span>&</span><span>gt</span>;</code>
사용자 입력 데이터에서 불필요한 문자(예: 추가 공백, 탭, 개행 문자)를 제거합니다. 등), PHP의 Trim() 함수
<code><span><span><?php</span><span>$name</span>=<span>$email</span>=<span>$website</span>=<span>$comment</span>=<span>''</span>; <span>$gender</span>=<span>0</span>; <span>$name</span>=test_input(<span>$_POST</span>[<span>'name'</span>]); <span>$email</span>=test_input(<span>$_POST</span>[<span>'email'</span>]); <span>$website</span>=test_input(<span>$_POST</span>[<span>'website'</span>]); <span>$comment</span>=test_input(<span>$_POST</span>[<span>'comment'</span>]); <span><span>function</span><span>test_input</span><span>(<span>$data</span>)</span>{</span><span>$data</span>=trim(<span>$data</span>);<span>//去除$data数据两侧多余的空格</span><span>$data</span>=stripslashes(<span>$data</span>);<span>//去除$data中的反斜杠</span><span>$data</span>=htmlspecialchars(<span>$data</span>);<span>//将html标签转以为html实体</span><span>return</span><span>$data</span>; } <span>?></span></span></code>