我是新来的PHP。我正在写一个PHP脚本,它将只采取c
,cpp
和java
文件并将它们上传到服务器。为什么我的代码不能识别文件类型?
这里是我的代码:
<?php
if(!empty($_POST["file_submit"]))
{
$allowed_xtensions = array("c","cpp","java");
$tmp_xtension_array = explode(".",$_FILES["file_name"]["name"]);
$xtension = end($tmp_xtension_array);
$type = $_FILES["file_name"]["type"];
if((($type == "text/x-java-source") || ($type == "text/x-csrc") || ($type == "text/x-c")) && in_array($xtension,$xtensions))
{
if($_FILES["file"]["error"] > 0)
{
exit("Unable to process file.\nError : ".$_FILES["file_name"]["error"]);
}
else
{
if(!file_exists("/code/test.",$xtension))
{
if(move_uploaded_file($_FILES["file_name"]["tmp_name"],"/code/test.",$xtension) == false)
{
exit("Unable to process the file.\n");
}
}
}
}
else
{
exit("Invalid File.");
}
}
else
{
$file_form = ' <html>
<body>
<form action="test.php" method="post" enctype="multipart/form-data">
<label for="file"> Select File : </label>
<input type="file" name="file_name" id="file_id"/><br />
<input type="submit" name="file_submit" value="Submit">
</form>
</body>
</html>';
echo $file_form;
}
?>
但每当我上传C,CPP或java文件,我得到INVALID FILE
响应,虽然我已经上传了正确的文件。任何人都可以告诉我为什么我的代码显示这种行为?
由于安全问题,许多服务器自行拒绝源代码文件。你使用托管服务器还是像xampp这样的本地服务器? –
我想你正在用字符串模式检查MIME类型。 –
顺便说一句:我用'||'检查多个条件遇到了很多麻烦。你有没有尝试将它们分开,所以每种类型都有一个条件? –