2015-10-28 4 views
0

Création d'un petit site Web qui devrait afficher quelques émissions de télévision différentes. J'ai une page qui devrait permettre à l'utilisateur d'entrer un nouveau nom de programme de télévision et une image du programme de télévision.Indéfini indécis pourquoi

Pour une raison im obtenir l'erreur d'index non défini sur les lignes: 41, 44, 45 et 52. code est ci-dessous:

<form action="upload.php" method="POST" enctype="multipart/form-data"> 
    Programme Title: <input type="text" name="title"> </br> 
    Select photo to upload:<input type="file" name="photo" id="photo"> <br/> 
    <input type="submit" value="Upload" name="submit"> 
</form> 

<?php 

//This is the directory where images will be saved 
$target = "images/"; 
$target = $target . basename($_FILES['photo']['name']); --- ERROR line 41 

//This gets all the other information from the form 
$title=$_POST['name']; --- ERROR line 44 
$pic=($_FILES[' ']['name']); --- ERROR line 45 


//Writes the information to the database 
mysqli_query($mysqli, "INSERT INTO programmes VALUES ('', '$title', '', '$pic')") ; 

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) --- ERROR line 52 
{ 

//Tells you if its all ok 
echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 

?> 

msg d'erreur:

Undefined index: photo en C : \ wamp \ www \ sky_coding \ upload.php en ligne 45, 49 et 55 index défini: document dans C: \ wamp \ www \ sky_coding \ upload.php sur la ligne 48

S'il vous plaît aider im confus et je ne sais pas pourquoi je reçois cette erreur

toute information sera utile merci!

+1

S'il vous plaît marquer la lignes. –

+0

@NiranjanNRaju Comment marquer les lignes? – Tman

+0

juste écrire une ligne là comme «ligne d'erreur» dans les commentaires –

Répondre

2

Vous n'avez jamais pris la peine de vérifier si un formulaire a été soumis ou si un fichier a même été téléchargé. Vous exécutez inconditionnellement le code de gestion de formulaire.

Au minimum, vous besoin de quelque chose comme ceci:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // form was submitted 
    if (isset($_FILES['photo'])) { 
     if ($_FILES['photo']['error'] === UPLOAD_ERR_OK) { 
       ... file was successfully uploaded, process it 
     } else { 
       die("File upload failed with error " . $_FILES['photo']['error']); 
     } 
    } 
    etc... etc... etc... 
} 

Vous êtes aussi vulnérable à sql injection attacks, et sont également en supposant simplement que les requêtes DB ne manquent jamais.

+0

Très bons points à considérer – Drew

+0

Ouais bête erreur de ma part. Qui a réussi à obtenir tout fonctionne – Tman

0

Vous accédez name en poste, mais il devrait être title comme prévu dans votre code de formulaire

$title=$_POST['title'];this should be title 

Votre quittent l'index vide, il faut donc ajouter l'index comme photo

$pic=($_FILES['photo']['name']); you have not added any index here. 
+0

Que stills donne l'erreur d'index indéfinie pour "photo" et "titre" – Tman

+0

Pouvez-vous s'il vous plaît résumer ce que vous citez? Cela viole les directives de publication de stackoverflow. – holms

+0

Je suis désolé, que voulez-vous dire? – Tman