Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查上传的文件是否为php?_Php_File Upload - Fatal编程技术网

如何检查上传的文件是否为php?

如何检查上传的文件是否为php?,php,file-upload,Php,File Upload,我编写了一个文件上传脚本,我想检查上传的文件是否是PHP 我想保护我的脚本,以便允许上传的唯一文件是CSS和XML 这是我的代码: <form action="cp_home.php?mode=up_styles&type=uploading" method="post" enctype="multipart/form-data" name="form1" id="form1"> <input class="fixed" name="ufile" type="

我编写了一个文件上传脚本,我想检查上传的文件是否是PHP

我想保护我的脚本,以便允许上传的唯一文件是CSS和XML

这是我的代码:

<form action="cp_home.php?mode=up_styles&type=uploading" method="post" enctype="multipart/form-data" name="form1" id="form1">
     <input class="fixed" name="ufile" type="file" id="ufile" size="35" />
     <input type="button" name="Submit" onclick="upload()" value="up style" />
</form>

在php代码中检查扩展:

$allowedExts = array("css", "xml"); // css and xml are allowed here, if you want more add it here.
$extension = end(explode(".", $_FILES["file"]["name"]));

if(in_array($extension, $allowedExts)){

   // your code here

}

在输入表单文件文本中使用此选项。

您可以检查扩展名,因为php只执行php扩展名文件

$info = pathinfo(basename($_FILES['image']['name']));
$ext = strtolower($info['extension']);

if ($ext != 'php') {
    // process file upload
}
或者,如果您的服务器支持php3或php5文件扩展名,则可能需要使用

if (!preg_match('/^php/', $ext)) {
    // process file upload
}
检查它的两种方法

1.您可以检查它本身

function is_php(filename){
return filename.split('.').pop()=="php";
}
2.或者,您只需在后端签入即可。。例如,如果您使用php本身,则使用以下代码

$path_parts = pathinfo($filename);
if($path_parts['extension']!="php")
return false;
else 
return true;

严格的标准:引用只能传递变量。任何人都可以将shell名称更改为
shell.php.css
,并将其上传到shellwork@user2036850php不会只执行具有php扩展名的文件。请注意,如果启用Apache的多视图功能,它将查看所有扩展名并执行(例如)
foo.php.en
作为php。
function is_php(filename){
return filename.split('.').pop()=="php";
}
$path_parts = pathinfo($filename);
if($path_parts['extension']!="php")
return false;
else 
return true;