Intereting Posts
PHPUnit: ожидание вызова метода с массивом в качестве аргумента Показать .phtml страницу на другой .phtml странице Экспорт / Загрузка таблицы HTML-PHP в файл Excel Константы PHP: преимущества / недостатки Сравните все строки в массиве со всеми строками в другом массиве, PHP PHP Отправка писем с прикрепленными файлами – электронная почта не отправляется вообще Как перенаправить несуществующий подкаталог в файл index.php, сохраняя URL-адрес curl error: "sslv3 alert alert message" Yii: почему мой индекс по умолчанию контроллера не работает? Вызов функции-заполнителя () для не-объекта Используя документ PHP DOM, выберите элемент HTML по его классу и получите его текст. удаление элемента массива JSON в PHP и повторное кодирование как JSON Как получить доступ к другим входным атрибутам в Validator :: extend? Расширение базового класса Codeigniter – 404 Ошибка Создание события Facebook для конкретной страницы с помощью FB Graph API

Файлы, не хранящиеся в правильной папке

Я создал страницу, которая может добавлять новые записи в мою базу данных, все работает нормально, но когда я пытаюсь загрузить файл в формате pdf, он не сохраняется в правильной папке. Он должен храниться в моих «загрузках». Когда я проверяю свою базу данных, она не связывается должным образом, она должна быть ../uploads/example.pdf вместо example.pdf

<?php require('db.php'); include("auth.php"); $status = ""; if(isset($_POST['new']) && $_POST['new']==1) { $trn_date = date("Ymd H:i:s"); $fname =$_REQUEST['fname']; $lname = $_REQUEST['lname']; $memo = $_REQUEST['memo']; $file = $_REQUEST['file']; $submittedby = $_SESSION["username"]; $ins_query="insert into user (`trn_date`,`fname`,`lname`,`memo`,`submittedby`,`file`) values ('$trn_date','$fname','$lname','$memo','$submittedby','$file')"; mysqli_query($con,$ins_query) or die(mysql_error()); $status = "New Record Inserted Successfully.</br></br><a href='view.php'>View Inserted Record</a>"; } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert New Record</title> <link rel="stylesheet" href="css/style.css" /> </head> <body> <div class="form"> <p><a href="dashboard.php">Dashboard</a> | <a href="view.php">View Records</a> | <a href="logout.php">Logout</a></p> <div> <h1>Insert New Record</h1> <form name="form" method="post" action=""> <input type="hidden" name="new" value="1" /> <p><input type="text" name="fname" placeholder="Enter Date" required /></p> <p><input type="text" name="memo" placeholder="Enter Memorandum" required /></p> <p><input type="text" name="lname" placeholder="Enter Title" required /></p> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit"/> </form> <?php if(isset($_FILES['file'])){ $errors= array(); $file_name = $_FILES['file']['name']; $file_size =$_FILES['file']['size']; $file_tmp =$_FILES['file']['tmp_name']; $file_type=$_FILES['file']['type']; $file_ext=strtolower(end(explode('.',$_FILES['file']['name']))); $expensions= array("pdf"); if(in_array($file_ext,$expensions)=== false){ $errors[]="extension not allowed, please choose a pdf file."; } if($file_size > 2097152){ $errors[]='File size must not exceed 2 MB'; } if(empty($errors)==true){ move_uploaded_file($file_tmp,"../uploads/".$file_name); echo "Success"; }else{ print_r($errors); } } ?> <p><input name="submit" type="submit" value="Submit" /></p> </form> <p style="color:#FF0000;"><?php echo $status; ?></p> </div> </div> </body> </html> 

Это потому, что вы только сохранили имя файла

$file = $_REQUEST['file'];

Вместо этого это должно быть

$file = "../uploads/".$_REQUEST['file'];

В вашем коде довольно много логических ошибок.

  1. Вы вставляете запись в базу данных MySQL, прежде чем выполнять проверку на расширение файла и размер файла.

  2. Вы просто вставляете имя файла в MySQL ( $file = $_REQUEST['file']; ), поэтому там появляется только имя файла. Правильный код:

     $file = "../uploads/".$_FILES['file']['name']; 

Немного больше вам нужно настроить часть перемещения файла:

  move_uploaded_file($file_tmp, $file); 
  1. В проверке ошибок после вставки sql вы используете mysql_error() , а не mysqli_error($con)

  2. Вы не проверяете, есть ли move_uploaded_file($file_tmp,"../uploads/".$file_name); вызов был успешным, и файл был перенесен в конечное местоположение.

  3. Также pls рассматривает использование подготовленных инструкций для предотвращения атак с SQL-инъекциями .