2015-06-01 4 views
0

Примечание: Undefined индекс: картинка в C: \ XAMPP \ HTDOCS \ page1.php на линии 33ошибки при загрузке изображений в PHP

Предупреждение: PathInfo() ожидает параметр 2, чтобы быть длинным, строка, заданная в C: \ xampp \ htdocs \ page1.php в строке 35 Извините, только JPG, JPEG, PNG & Файлы GIF разрешены. Извините, ваш файл не был загружен. Пользователь Помнить

//<?PHP 
//session_start(); 
//if (!isset($_SESSION['login_user'])) { 
    //header ("Location: page2.php");/ 
//} 
//?> 
    <html> 
    <head> 
    <title>Basic Login Script</title> 


    </head> 
    <body> 


    <?php 


      session_start(); 
      $servername = "localhost"; 
      $username = "root"; 
      $passwor = ""; 
      $dbname = "form"; 
      $name = $_SESSION['login_user']; 
      echo $name; 

    $conn = new PDO("mysql:host=$servername;dbname=form", $username, $passwor); 

    $stmt = $conn->prepare("SELECT id, username, password FROM users where username='$name'"); 
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
    echo "Connected successfully";  
     $target_dir= "htdocs" ."basketball/"; 
     $target_file = '$target_dir' .basename($_FILES['picture']['name']); //heres an error  
     $uploadOk = 1; 
     $imageFileType=pathinfo('$targetfile','PATHINFO_EXTENSION');//heres an error 

     if(isset($_POST["submit"])) 
     { 
     $check = getimagesize($_FILES['picture']['tmp_name']); 
     if($check !== false) { 
     echo "File is an image - " . $check["mime"] . "."; 
     $uploadOk = 1; 
     } 
    else { 
      echo "File is not an image."; 
      $uploadOk = 0; 
      } 
} 
     if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") 
     { 
     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
     $uploadOk = 0; 
     } 
     if ($uploadOk == 0) 
     { 
     echo "Sorry, your file was not uploaded."; 
     } 
     else 
     { 
    if (move_uploaded_file($_FILES['picture']['tmp_name'], $target_file)) { 
     echo "The file ". basename($_FILES["picture"]["name"]). " has been uploaded."; 
    } else { 
     echo "Sorry, there was an error uploading your file."; 
    } 
} 
    ?> 








User Logged in<br/><br/> 
<form action="page1.php" method="post" enctype="multipart/form-data"> 
<input name="picture" type="file" value="picture"> 
<input name="Upload Now" type="submit" value="Upload Image"> 
</form> 

<P> 
<?php 

if(isset($_POST['logout'])){ 
//$_SESSION['user_login'] = ''; 
//die; 
session_destroy(); 
header("Location: login.php");} 
?> 
    </body> 
    </html> 
+0

использовать 'isset()' или '! Empty()'. Исправьте это примечание: Undefined index: picture в C: \ xampp \ htdocs \ page1.php в строке 33', а остальные будут следовать. –

+0

@ Fred-ii- Ну, во-первых, в чем вопрос? – Rizier123

+0

@ Rizier123 это * сам по себе * - Meep meep! –

ответ

2

Вы получаете, что первое предупреждение, потому что вы используете, что весь код внутри того же самого файла, а не с помощью isset() или !empty() на вашем $_FILES массиве.

Используйте условную инструкцию для этой строки и смените одиночные кавычки на парные. Переменные не обрабатываются в одинарных кавычках.

$target_file = '$target_dir' .basename($_FILES['picture']['name']); 

как в

if(!empty($_FILES['picture'])){ 
    $target_file = "$target_dir" .basename($_FILES['picture']['name']); 
... 
} 

сделать это, а остальное приложится.

  • Также убедитесь, что папка имеет соответствующие разрешения для записи.

Однако эта линия:

$target_dir= "htdocs" ."basketball/" 

неясна и будет гласить htdocsbasketball как папки. Если это не то, что вы хотите, и что это подпапки, добавьте / после htdocs.


Вы также не имеют элемент в соответствии с вашим условный оператор:

if(isset($_POST["submit"])) 

, который я думаю, что связано с вашей кнопки отправить был назван name="Upload Now"

Это должно читаться как name="submit"

Вы также можете удалить value="picture" от
<input name="picture" type="file" value="picture">, которые могут дать вам проблемы.


Вы также выводя перед тем заголовком, поэтому раскомментировать первую часть кода, и избавиться от session_start();, где у вас есть сейчас.

Move session_start();, где он находится выше $servername = "localhost"; и использовать

<?php 
session_start(); 
?> 
<html> 
<head> 
<title>Basic Login Script</title> 
... 

Sidenote:

  • Добавить exit; после заголовка, в противном случае ваш код может потребоваться продолжить выполнение.

Добавить error reporting в верхней части файла (ов), который поможет найти ошибки.

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

// rest of your code 

Sidenote: Сообщения об ошибках не должно быть сделано только в постановке, и никогда производства.

Добавить $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); сразу после открытия соединения.

$conn = new PDO("mysql:host=$servername;dbname=form", $username, $passwor); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

Чтобы поймать другие возможные ошибки.


Сноска:

  • Этой линия if(isset($_POST['logout'])){ - Опубликованный код не имеет элемента с именем «выходом из системы» для него, если это не имеет значения.

  • Поскольку вы используете PDO, почему бы не использовать PDO with prepared statements?