Локалхост, передаю файл через AJAX-запрос. Массивы создаются и передаются в php файл, но про попытке разобрать всё на переменные получаю ошибку cервера 500. Как я понимаю, дело совсем не в сервере, а что-то не так в том файле-получателе. Пока пердавал только строковые было всё в порядке. Проверил валидатором синтаксис, ошибок нет. Вот файл-получатель add_project.php:
<?php
$title = $_POST['title'];
$description = $_POST['description'];
$file = $_FILES['fileToUpload'];
$fileName = $_FILES['fileToUpload']['name'];
$fileTmpName = $_FILES['fileToUpload']['tmp_name'];
$fileSize = $_FILES['fileToUpload']['size'];
$fileError = $_FILES['fileToUpload']['error'];
$fileType = $_FILES['fileToUpload']['type'];
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = $array('png', 'jpg', 'jpeg');
$error = '';
if(strlen($title) <= 3)
$error = 'Введите название';
else if (strlen($description) <= 5)
$error = 'Введите описание';
else if (in_array($fileActualExt, $allowed)){
if ($fileError === 0){
if ($fileSize < 5000){
$fileNameNew = uniqid('', true).".".$fileActualExt;
$fileDestination = 'uploads/'.$fileNameNew;
move_uploaded_file($fileTmpName, $fileDestination);
} else {
$error = 'Файл не должен превышать 5Мб';
}
} else {
$error = 'Принимаются изображения только в форматах png, jpg, jpeg';
}
} else {
$error = 'Принимаются изображения только в форматах png, jpg, jpeg';
}
if($error != ''){
echo $error;
exit();
}
require_once '../mysql_connect.php';
$sql = 'INSERT INTO project(title, description, text, date, author) VALUES (?,?,?,?,?)';
$query = $pdo->prepare($sql);
$query->execute([$title, $description, $fileDestination, time(), $_COOKIE['log']]);
echo 'Готово';
?>
Форма и AJAX запрос:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="data" method="post" enctype="multipart/form-data">
<label for="title">Название</label>
<input type="text" name="title" id="title" class="form-control"><br>
<label for="description">Описание</label>
<textarea name="description" id="description" class="form-control"></textarea><br>
<label for="file" class="mt-5">Добавьте изображения</label>
<input type="file" name="fileToUpload" id="fileToUpload"><br>
<div class="alert alert-danger mt-2" id="errorBlock"></div><br>
<button type="submit" id="send_prjct" class="btn btn-dark mt-3">Добавить</button>
</form>
<script>
$("#data").submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: 'ajax/add_project.php',
type: 'POST',
data: formData,
dataType: 'json',
cache: false,
contentType: false,
processData: false,
success: function(data) {
if (data == 'Готово'){
$('#send_prjct').text('Выполнено');
$('#errorBlock').hide();
} else {
$('#errorBlock').show();
$('#errorBlock').text(data);
}
}
});
});
</script>
Рабочий вариант:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="data" method="post" enctype="multipart/form-data">
<label for="title">Название</label>
<input type="text" name="title" id="title" class="form-control"><br>
<label for="description">Описание</label>
<textarea name="description" id="description" class="form-control"></textarea><br>
<label for="file" class="mt-5">Добавьте изображения</label>
<input type="file" name="fileToUpload" id="fileToUpload"><br>
<div class="alert alert-danger mt-2" id="errorBlock"></div><br>
<button type="submit" id="send_prjct" class="btn btn-dark mt-3">Добавить</button>
</form>
<script>
$("#data").submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: 'add_project.php', // Путь для теста изменен
type: 'POST',
data: formData,
//dataType: 'json',//******** это лишнее
cache: false,
contentType: false,
processData: false,
success: function(data) {
if (data == 'Готово'){
$('#send_prjct').text('Выполнено');
$('#errorBlock').hide();
} else {
$('#errorBlock').show();
$('#errorBlock').text(data);
}
}
});
});
</script>
Файл add_project.php
(путь изменен для теста)
<?php
$title = $_POST['title'];
$description = $_POST['description'];
$file = $_FILES['fileToUpload']; // а что здесь? - это массив
$fileName = $_FILES['fileToUpload']['name'];
$fileTmpName = $_FILES['fileToUpload']['tmp_name'];
$fileSize = $_FILES['fileToUpload']['size'];
$fileError = $_FILES['fileToUpload']['error'];
$fileType = $_FILES['fileToUpload']['type'];
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array('png', 'jpg', 'jpeg');// тут знак переменной убран
$error = '';
if(strlen($title) <= 3)
$error = 'Введите название';
else if (strlen($description) <= 5)
$error = 'Введите описание';
else if (in_array($fileActualExt, $allowed)){
if ($fileError === 0){
if ($fileSize < 5000){
$fileNameNew = uniqid('', true).".".$fileActualExt;
$fileDestination = 'uploads/'.$fileNameNew;
move_uploaded_file($fileTmpName, $fileDestination);
} else {
$error = 'Файл не должен превышать 5Мб';
}
} else {
$error = 'Принимаются изображения только в форматах png, jpg, jpeg';
}
} else {
$error = 'Принимаются изображения только в форматах png, jpg, jpeg';
}
if($error != ''){
echo $error;
exit();
}
// Это для теста отключено
/*require_once '../mysql_connect.php';
$sql = 'INSERT INTO project(title, description, text, date, author) VALUES (?,?,?,?,?)';
$query = $pdo->prepare($sql);
$query->execute([$title, $description, $fileDestination, time(), $_COOKIE['log']]);*/
echo 'Готово';
?>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В программе 1с, создал дополнительные свойства, в которых указываю старую цену и скидкуВ bitrix в админке создал данные дополнительные свойства...
Нужно какая-либо идея реализации получения расстояния между 2 адресами по дорогам, используя API Яндекса (док-ию почитал, знаю что и как брать...
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме
Всем привет, никак не получается создать условие ,чтобы отловить ошибку ввода в строку букв вместо цифр