Я работаю над скриптом, который загружает файл в определенную папку и отправляет данные в базу данных, если все условия истинны, и все в порядке. Скрипт проверяет размер файла, и если размер файла больше, чем требуется, он отображает ошибку (работает нормально).Как отобразить ошибку при загрузке файла с нежелательным расширением?
Сценарий также проверяет, что загруженный файл имеет требуемое расширение или нет, если ok, тогда файл загружается, и если он имеет нежелательное расширение, он не будет загружен (работает нормально), но если файл не находится в ожидаемом расширении то он также должен отображать ошибку.
Например, если кто-то загружает .exe или zip или mp3 или любой файл, тогда он должен отображать «Недопустимый тип файла. Разрешены только файлы JPG, PNG, GIF, JPEG, PDF и DOC. ошибка. Как я могу показывать это сообщение? Какой код я должен поставить и где?
Вот мой сценарий.
<?php error_reporting(0);
include'db.php';
if(isset($_POST['submit'])!=""){
$extension = substr($_FILES['photo']['name'], strrpos($_FILES['photo']['name'], '.'));
$extension = strtolower($extension);
if($extension == ".jpg" || $extension == ".jpeg" || $extension == ".gif" ||$extension == ".png" ||$extension == ".pdf" ||$extension == ".doc" ||$extension == ".docx")
{
$name=$_FILES['photo']['name'];
$size=$_FILES['photo']['size'];
$type=$_FILES['photo']['type'];
$temp=$_FILES['photo']['tmp_name'];
$caption1=$_POST['caption'];
$link=$_POST['link'];
$limit_size=512000; // Define file size limit in Bytes.
$size_in_kb=1024; // File size in KB
$divide=$limit_size/$size_in_kb; // Dividing both the variables to get the size in KB.
if($size > $limit_size){
echo "<center>Your file size is over limit. Max upload size $divide KB.</center><BR>";
echo "<center><a href='form.php'>Try Again</a></center>";
}
else {
move_uploaded_file($temp,"admin/files/".$name);
$insert=mysql_query("insert into upload(name, fname, phone, email, message)values('$name','$_POST[fname]','$_POST[phone]','$_POST[email]','$_POST[message]')");
}
if($insert){
echo "<center><BR>Data submitted successfully.</center>";
}
else{
die(mysql_error());
}
}
}
?>
<html>
<head>
<title>Upload and Download</title>
</head>
<body>
<style>
h1 {font-family:Georgia, "Times New Roman", Times, serif; font-size:36px; color:#000000}
.formdesign {width: 350px; height: 300px; border:1px solid black; border-radius: 5px; margin-top: 75px; box-shadow: 10px 10px 5px #888888;}
.testbox {width:300px; height: 50px; border: 1px solid grey}
</style>
<center>
<div class="formdesign">
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" enctype="multipart/form-data" name="form">
<table style="padding:7px; line-height:1;">
<tr>
<th><label for="fname">Name</label></th>
<td><input type="text" name="fname" id="fname" required maxlength="30" style="width: 220px; height:30px; font-size: 14px; font-family: georgia; text-indent: 15px;" placeholder="Your First Name"/></td>
</tr>
<tr>
<th><label for="phone">Phone</label></th>
<td><input type="text" name="phone" id="phone" required maxlength="15" style="width: 220px; height:30px; font-size: 14px; font-family: georgia; text-indent: 15px;" placeholder="Your Phone Number"/></td>
</tr>
<tr>
<th> <label for="email">Email</label></th>
<td> <input type="text" name="email" style="width: 220px; height:30px; font-size: 14px; font-family: georgia; text-indent: 15px;" placeholder="Your Email ID">
</td>
</tr>
<tr>
<th><label for="message">Message</label></th>
<td> <textarea name="message" rows="4" cols="25" placeholder="Your message here!" maxlength="200">
</textarea> </td>
</tr>
</table><table border="0" cellspacing="0" cellpadding="5" id="table">
<tr>
<th >Chosse Files (Max 500KB)</th>
<td ><label for="photo"></label><input type="file" name="photo" id="photo" /></td>
</tr>
<tr>
<th colspan="2" scope="row"><input type="submit" name="submit" id="submit" value="Submit" /></th>
</tr>
</table>
</form>
</div></center>
<br />
<br />
</body>
</html>
Вместо того чтобы использовать '' substr' и strrpos' Я хотел бы использовать [PathInfo] (http://php.net/manual/de/function.pathinfo.php), чтобы определить расширение. И, пожалуйста, добавьте отступы в свой код, иначе действительно сложно определить, правильны ли ваши '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' –
Пожалуйста, обратитесь к этой ссылке: http://stackoverflow.com/questions/10456113/php-check-file-extension-in-upload-form – Lakhan