我正在尝试将此代码编写为可以作为应用程序表单播放的位置,并提交用户通过PHP邮件输入的信息。但我继续得到这个错误,它声明不允许文件类型。
某些保留字未突出显示,因此我不确定该程序是否无法识别其功能。我检查了basename函数,其中basename没有按原样突出显示。所以我尝试使用pathinfo,但我不希望整个路径只是它的基本名称。是因为它没有正确编码所以它无法识别文件类型??请检查我的检查代码.....
<?php
if(!empty($_FILES['resume_name']['name'])){
$file_name=$_FILES['resume_name']['name'];
$temp_name=$_FILES['resume_name']['tmp_name'];
$file_type=$_FILES['resume_name']['type'];
$file_size=$_FILES['resume_name']['size'];
$base=basename($file_name);
$extension= pathinfo($base, PATHINFO_EXTENSION);
$allowed_ext=array(".doc",".docx",".pdf",".zip",".jpeg",".jpg",".txt");
if (array_intersect($extension,$allowed_ext)){
$from=$_POST['email'];
$to="travis.dacosta1@gmail.com";
$subject= $_POST['departments'];
$message='
<table cellspacing="0" cellpadding="8" border="0" width="400">
<tr>
<td colspan="2"></td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Name</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$first_name.'</td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Name</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$last_name.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Email</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$email.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Departments</strong></td>
</tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$departments.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Qualifications</strong></td>
</tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$qualifications.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
</table>
';
$file=$temp_name;
$content = chunk_split(base64_encode(file_get_contents($file)));
$uid=md5(uniqid(time()));
$header = "From: ". $from. "\r\n";
$header .= "Reply-To: ". $replyto. "\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .="Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type: ".$file_type."; name=\"".$file_name."\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: resume_name; filename=\"".$file_name."\"";
$header .= $content."\r\n\r\n";
if(@mail($to, $subject, $message, $header)){
echo "Success";
}
else{
echo "Fail";
}
}
else {
echo "File Type Not Allowed!!";
}
}
else{
echo "No File Posted!!";
}
}
exit();
?>
答案 0 :(得分:1)
array_intersect
将数组作为第一个参数。 pathinfo($base, PATHINFO_EXTENSION);
给出一个String,而不是一个数组。
您可以尝试in_array
:
if (in_array($extension, $allowed_ext)) {
....
}
此外,您的$allowed_ext
应该没有点:
$allowed_ext = array("doc", "docx", "pdf", "zip", "jpeg", "jpg", "txt");
因为pathinfo($base, PATHINFO_EXTENSION);
给出了没有点的扩展名。
答案 1 :(得分:0)
电子邮件附件不允许使用某些类型,因为您已在代码中指定了一些文件扩展名。因此,除了这些文件扩展名之外,您可能不允许这样做。
同时从文件扩展名中删除点您可以在此处添加更多文件扩展名。
$allowed_ext=array("doc","docx","pdf","zip","jpeg","jpg","txt");
答案 2 :(得分:0)
$allowed_ext=array("doc","docx","pdf","zip","jpeg","jpg","txt");
remove dot in the extence
答案 3 :(得分:0)
我实际上发现了什么是错的。你们都会笑,但我正在研究同一份文件但是来自不同的目录。所以我所做的修改没有上传到服务器。在完成所有建议后,它可以完美地上传文件。