我环顾四周,但找不到任何有关我问题的具体信息。
我使用jquery.validate
检查上传文件的扩展名是否正确。我也尝试过Jquery的Mime式检查。
两种方式只检查扩展名。我可以创建一个文本文件,将扩展名重命名为pdf或word,然后文件将通过。当然文件已损坏。
有没有办法真正的PHP,我可以检查文件本身,而不仅仅是扩展名?这是我到目前为止所得到的:
<?php
require_once '../lib/PHPMailer/PHPMailerAutoload.php';
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
if(isset($_POST['email'])) {
$geslacht = $_POST['title'];
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required
$comments = $_POST['comments']; // required
$d='C:/wamp/www//upload/';
$de=$d . basename($_FILES['bestand']['name']);
if (move_uploaded_file($_FILES["bestand"]["tmp_name"], $de)) {
}else {
echo "<script>alert('Bestand kon niet worden geupload')</script>";
};
$fileName = $_FILES['bestand']['name'];
$filePath = $_FILES['bestand']['tmp_name'];
//add only if the file is an upload
}
else
{
}
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPDebug = 2;
$mail->Host = '';
$mail->Username ='';
$mail->Password = '';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->From = ';
$mail->FromName = "$geslacht $first_name $last_name";
$mail->AddAddress('', '');
$mail->Subject = "Sollicitatie van $geslacht $first_name $last_name";
$mail->Body = "$geslacht $first_name $last_name heeft zijn/haar CV Gestuurd! Klik op bijlage om te bekijken. Het email adres van deze persoon is $email_from";
$mail->AddAttachment($de, $_FILES['bestand']['name']);
var_dump($mail->Send());
有什么建议吗? 谢谢你们!
答案 0 :(得分:0)
你应该使用finfo_file函数,在这里阅读更多相关信息: http://php.net/manual/en/function.finfo-file.php
此函数按其内容返回有关文件的信息,无论扩展名如何。
你可以这样使用它:
<?php
$finfo = new finfo(FILEINFO_MIME);
echo $finfo->file("<file_path>"); //outputs file type
?>
希望有所帮助。