php://input과 $_post의 차이점은 무엇인가요? 다음 기사에서는 이를 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
설명서에서 가져온 몇 가지 문장:
HTTP POST 요청의 Content-Type이 application/x-www-form-urlencoded 또는 multipart/form-data인 경우 변수는 현재 스크립트를 연관 배열로 전달합니다.
php://input은 요청된 원시 데이터에 대한 액세스를 제공하는 읽기 전용 스트림입니다. enctype="multipart/form-data"를 사용하면 php://input이 유효하지 않습니다.
확인:
post.html
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <form action="getpost.php" method="post"> <input type="text" name="name" value="saisai"> <input type="submit" name="submit" value="submit"> </form> </body> </html>
getpost.php
<?php echo "----------input--------<br />"; var_dump(file_get_contents('php://input', 'r')); echo "----------post---------<br />"; var_dump($_POST); ?>
1. enctype="application/x-www-form-urlencoded"
요청 본문:
Content-Type: application/x-www-form-urlencoded Content-Length: 25name=saisai&submit=submit
출력:
으아악요약: enctype="application/x-www-form-urlencoded"일 때 요청 본문의 데이터(name=saisai&submit=submit)를 연관 배열로 변환하여 $_POST에 넣고 php:// 입력을 얻습니다. 원시 데이터.
2. enctype="multipart/form-data"일 때
2.1 양식:
----------input-------- string 'name=saisai&submit=submit' (length=25) ----------post--------- array (size=2) 'name' => string 'saisai' (length=6) 'submit' => string 'submit' (length=6)
요청 제목:
<form action="getpost.php" method="post" enctype="multipart/form-data"> <input type="text" name="name" value="saisai"> <input type="submit" name="submit" value="submit"> </form>
출력:
Content-Type: multipart/form-data; boundary=---------------------------22554656810024 Content-Length: 249 -----------------------------22554656810024 Content-Disposition: form-data; name="name" saisai -----------------------------22554656810024 Content-Disposition: form-data; name="submit" submit -----------------------------22554656810024--
요약: enctype="multipart/form-data"일 때 업로드 파일 제어가 없으면 $_POST는 정상적으로 데이터를 인쇄할 수 있지만 php://는 유효하지 않습니다.
2.2 양식(파일 업로드 추가):
----------input-------- string '' (length=0) ----------post--------- array (size=2) 'name' => string 'saisai' (length=6) 'submit' => string 'submit' (length=6)
요청 제목:
<form action="getpost.php" method="post" enctype="multipart/form-data"> <input type="text" name="name" value="saisai"> <input type="submit" name="submit" value="submit"> </form>
출력:
Content-Type: multipart/form-data; boundary=---------------------------272321281228527 Content-Length: 68386 -----------------------------272321281228527 Content-Disposition: form-data; name="name" saisai -----------------------------272321281228527 Content-Disposition: form-data; name="filename"; filename="dog.png" Content-Type: image/png 一堆乱码 -----------------------------272321281228527 Content-Disposition: form-data; name="submit" submit -----------------------------272321281228527--
요약: enctype="multipart/form-data"이고 업로드 파일 컨트롤이 있는 경우 $_POST에서 인쇄할 수 있습니다. 출력 입력 데이터이지만 업로드된 콘텐츠는 제외됩니다. php://가 유효하지 않습니다.
3. enctype="text/plain"
양식:
----------input-------- string '' (length=0) ----------post--------- array (size=2) 'name' => string 'saisai' (length=6) 'submit' => string 'submit' (length=6)
요청 본문:
<form action="getpost.php" method="post" enctype="text/plain"> <input type="text" name="name" value="saisai"> <input type="submit" name="submit" value="submit"> </form>
출력:
Content-Type: text/plain Content-Length: 28 name=saisai submit=submit
요약: enctype="text/plain"인 경우 $_POST에 콘텐츠가 없습니다. php: //입력은 키-값 쌍으로 저장됩니다.
요약:
HTTP POST 요청의 Content-Type이 application/x-www-form-urlencoded 또는 multipart/form-data인 경우: php://input은 a=1&b=와 동일합니다. 2 원시 데이터. $_POST에는 연관 배열이 포함되어 있으며 컨트롤 내용을 업로드하지 않습니다.
php://input은 요청된 원시 데이터에 대한 액세스를 제공하는 읽기 전용 스트림입니다. enctype="multipart/form-data"를 사용하면 php://input이 유효하지 않습니다.
$_POST는 Content-Type = "text/plain"일 때 게시물 데이터를 얻을 수 없지만 php://input에서는 얻을 수 있습니다.
더 많은 관련 지식은 PHP 중국어 홈페이지를 주목해주세요! !
위 내용은 php://input과 $_post의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!