我正在尝试制作一个代码,以通过电子邮件提交表格并附上一个pdf文件。我已经使电子邮件列在数据库中是唯一的,但从前端来看,它显示为文件上传时的状态(尽管记录没有保存)。我还在代码中使用了允许的文本,但它不起作用。下面是我正在使用的代码。请求为我修改代码。谢谢。
<?php
include_once 'dbconfig.php';
if(isset($_POST['btn-upload']))
{
$name = trim($_POST["uname"]);
$email = trim($_POST["uemail"]);
$exp = trim($_POST["uexp"]);
$desig = trim($_POST["udesig"]);
$tech = trim($_POST["utech"]);
$file = rand(1000,100000)."-".$_FILES['file']['name'];
$file_loc = $_FILES['file']['tmp_name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
$allowed_ext = 'application/pdf';
$folder="uploads/";
// new file size in KB
$new_size = $file_size/1024;
// new file size in KB
// make file name in lower case
$new_file_name = strtolower($file);
// make file name in lower case
$final_file=str_replace(' ','-',$new_file_name);
if($allowed_ext != $allowed_ext)
{
echo "Warning: Please upload your note in PDF file type only";
unlink($fileTmpLoc);
exit();
}
else
if(move_uploaded_file($file_loc,$folder.$final_file))
{
$sql="INSERT INTO tbl_uploads(name,email,exp,desig,tech,file,type,size) VALUES('$name','$email','$exp','$desig','$tech','$final_file','$file_type','$new_size')";
mysql_query($sql);
?>
<script>
window.location.href='success.php';
</script>
<?php
}
else
{
?>
<script>
alert('error while uploading file');
window.location.href='index.php?fail';
</script>
<?php
}
}
?>
替换:
if($allowed_ext != $allowed_ext)
{
echo "Warning: Please upload your note in PDF file type only";
unlink($fileTmpLoc);
exit();
}
带有:
if($file_type != $allowed_ext)
{
echo "Warning: Please upload your note in PDF file type only";
unlink($fileTmpLoc);
exit();
}
使用pathinfo
获取文件扩展名
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if($ext != "pdf") {
//error part here
}
对于电子邮件部分,在检查文件扩展名之前,写下这样的查询,
select * from your_table where email = "{$_POST['email']}".
上述查询的id num行数大于0,则您的数据库中已经存在电子邮件,
请检查此项以获取唯一的电子邮件部分。
扩展是点后面的字符。
您可以通过路径名获取:
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
然后你允许的扩展应该是:
$allowed_ext = 'pdf';
这样比较:
if($allowed_ext == $ext){ ...