У меня возникла проблема проверки имени файла, которое пользователь загружает в файл. У меня уже была проверка на расширение файла, но когда пользователь пытается загрузить пример имени файла 1.hello.jpg
, для моего кода проверки JavaScript он выглядел нормально, так как он был jpg
. Но в моей части PHP моя проверка для расширения файла не распознает ее, поскольку я использую функцию explode для проверки расширения файла.Javascript validate file input name
Есть ли способ проверить специальный символ файла на стороне клиента перед отправкой на сервер? Благодаря
Вот моя проверка на стороне клиента:
<script type='text/javascript'>
function checkDisabled(yourSubmitButton){
//No 1 file input validation
var res_field = document.getElementById('uploaded_file').value;
var extension = res_field.substr(res_field.lastIndexOf('.') + 1).toLowerCase();
var allowedExtensions = ['jpg','JPG','bmp','BMP','png','PNG','jpeg','JPEG'];
if(document.getElementById('bannerName').value.length !=0){
//File input extension validation
if (res_field.length > 0)
{
if (allowedExtensions.indexOf(extension) !== -1)
{
yourSubmitButton.disabled = false;
return;
}
}
}
// If we have made it here, disable it
yourSubmitButton.disabled = true;
};
</script>
Вот мой PHP код для проверки достоверности расширения:
$valid_formats = array("jpg", "JPEG","png","PNG","bmp","BMP",'JPG','jpeg');
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{
$name = $_FILES['uploaded_file']['name'];
$size = $_FILES['uploaded_file']['size'];
$bName = $_POST['bannerName'];
$bDescription = $_POST['bannerDescription'];
$bK = $_POST['bannerK'];
$bKe = $_POST['bannerKe'];
$bS= $_POST['bannerS'];
if(strlen($name))
{
list($txt, $ext) = explode(".", $name);
if(in_array($ext,$valid_formats))
{
...........
}
}
1.hello.jpg имеет две точки, с помощью которых вы пытаетесь взорваться, поэтому при разрыве $ ext имеет значение hello, которое является недопустимым. –
Что делать, если я загрузил файл 'something.jpg.php' из того, что я читаю, это будет загружаться, и тогда я смогу выполнить свой собственный серверный код на вашем сервере, предоставляя мне доступ ко всему, что угодно и что угодно ... – NewToJS
@newtojs Что я понимаю из вашего утверждения, php-файл не может отправить его на мой сервер, потому что моя проверка подлинности Java-кода разрешена только для файла изображения –