2015-11-13 3 views
0

Я пытаюсь написать сценарий, в котором система проверяет, выбрал ли пользователь файл для загрузки перед загрузкой чего-либо. Проблема, с которой я сталкиваюсь, заключается в том, что даже если я не выбираю файл, система повторяет, что файл был загружен успешно. Смотрите ниже код:Проверьте, был ли пользователь выбран файл для загрузки

<?php 
include("dbconfig.php"); 

if(isset($_POST['btn-upload'])) { 

    $loggedinuser = $_GET['bid']; 
    $file = $_FILES['file']['name']; 
    $file_size = $_FILES['file']['size']; 
    $file_type = $_FILES['file']['type']; 

    $sql = mysqli_query($conn, "INSERT INTO upload (personalid, file, type, size) values ((select personalid from person where username='$loggedinuser'), '$file', '$file_type', '$file_size')") or die (mysqli_error($conn)); 

    if($sql){ 
     header("location:upload.php?msg0=Document upload successful.");  
    } elseif(!file_exists($_FILES['file']['name']) || !is_uploaded_file($_FILES['file']['name'])) { 
     header("location:upload.php?msg1=Document upload failed."); 
    } 
} 
?> 
<!-- need to comment --> 

обновления версия - 16:34 (13/11/2015)

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

include("dbconfig.php"); 
if(isset($_POST['btn-upload'])){ 

if (empty($_FILES['file']['name'])){ 

    echo 'error!'; 

} else { 

$loggedinuser = $_GET['bid']; 

$file = $_FILES['file']['name']; 
$file_size = $_FILES['file']['size']; 
$file_type = $_FILES['file']['type']; 
$sql = mysqli_query($conn, "INSERT INTO upload (personalid, file, type, size) values ((select personalid from person where username='$loggedinuser'), '$file', '$file_type', '$file_size')") or die (mysqli_error($conn)); 

if($sql){ 
    header("location:upload.php?msg0=Document upload successful.");  
} 
else { 
    header("location:upload.php?msg1=Document upload failed."); 
} 
} 
} 


?> 
<!-- need to commentt --> 

Я сделал некоторые исследования в Интернете, и я пришел через некоторые дискуссии, которые упоминают вы можете нам file_exists или is_uploaded_file - Я не уверен, правильно ли я их использую. Пожалуйста, дайте мне знать, как я могу проверить, выбрал ли пользователь файл перед загрузкой.

Thanks,

Sohail.

+0

Просто проверьте, не является ли '$ _FILES ['file'] ['name']' –

+0

. Единственное, что вы могли бы сделать в этом отношении, - использовать javascript, потому что 'file_exists' и' is_uploaded_file' и т. Д. Будут вызываться только после отправки .. – RamRaider

+0

'if (isset ($ _ FILES ['file'] ['name']))' это то, как я проверяю загружаемые файлы – Dale

ответ

0

В настоящий момент ваше утверждение основано только на том, что кнопка нажата как запрос POST, который он всегда будет.

Я не 100% на этом, но я готов попробовать и ответить на это.

$loggedinuser = $_GET['bid']; 
if (isset($_FILES['file']['name']) && !empty($_FILES['file']['name'])) { 
    $file = $_FILES['file']['name']; 
    $file_size = $_FILES['file']['size']; 
    $file_type = $_FILES['file']['type']; 
} 

if (isset($file) && isset($file_size) && isset(file_type)) {  
    SQL stuff; 
} 

if(isset($sql) && $sql){ 
    header("location:upload.php?msg0=Document upload successful.");  
} else { 
    header("location:upload.php?msg1=Document upload failed."); 
} 

На стороне примечания, можете ли вы не просто убедиться, что поле требуется в HTML?

+0

Спасибо за ваши усилия, но я исправил проблему. –

+0

@MuhammadSohailArif: В чем была проблема? –

+0

В прошлом я обычно просто положить требуется в HTML части входной <входной тип = имя «файла» = «fileToUpload» ID = «fileToUpload» требуется> мне было бы интересно знать, каков был результат, Я не тестировал вышеприведенный код сам, это было из моей головы. –

Смежные вопросы