1.file://
file://用于访问本地文件系统,不受allow_url_fopen影响
<?php
include($_GET['file']);
?>
2.http://
GET方法访问文件或资源,allow_url_fopen和allow_url_include都为On时
3.php://input
要求allow_url_include=On
在post请求下,php://input可以获取post数据
enctype=”multipart/form-data”的时候,php://input是无效的
<html>
<body>
<form action='sc.php' method='post'>
<input type='text' name='user'>
<input type='submit' name='submit'>
</form>
</body>
</html>
<?php
echo "input://";
echo "</br>";
var_dump(file_get_contents('php://input'));
echo '</br>';
echo "\$_POST:";
echo '</br>';
var_dump($_POST);
?>
php://读取的数据是以原始字符串形式存储,$_POST请求的数据是放在数组当中
当enctype=”multipart/form-data”时
<html>
<body>
<form action='sc.php' method='post' enctype="multipart/form-data">
<input type='text' name='user'>
<input type='submit' name='submit'>
</form>
</body>
</html>
php://input就失效了
Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST
<html>
<body>
<form action='sc.php' method='post' enctype="text/plain">
<input type='text' name='user'>
<input type='submit' name='submit'>
</form>
</body>
</html>
4.php://filter
用来读取网站源码
<?php
$file=$_GET['file'];
include($file);
?>
http://127.0.0.1/test/sc.php?file=php://filter/read=convert.base64-encode/resource=sc.php