PHP Undefined index error $_FILES?
Je suis nouveau sur le PHP et je suis en suivant un tutoriel sur YouTube. J'ai tout qui fonctionne dans ce fichier, sauf pour le téléchargement du fichier, toute aide serait appréciée. Voici l'erreur que j'obtiens:
*NOTE: j'ai cherché de nombreuses fois, mais ne pouvait pas trouver undefined index erreur pertinents de la variable $_FILES...
Notice: Undefined index: avatar dans /Applications/xxx sur la ligne 95
Notice: Undefined index: avatar dans /Applications/xxx sur la ligne 96
Notice: Undefined index: avatar dans /Applications/xxx sur la ligne 97
Notice: Undefined index: avatar dans /Applications/xxx sur la ligne 98
Désolé pour ce si c'est une solution simple...
<?php $title = "Register";?>
<?php require ("styles/top.php") ; ?>
<?php //de-bugging remove this after script works as desired>
error_reporting(E_ALL);
ini_set("display_errors", 1);
//end de-bugging//
$form = "<form action='register.php' method='post'>
<table cellspacing='5px'>
<tr>
<td></td>
<td><font color='red'>*</font> are required fields.</td>
</tr>
<tr>
<td>First Name:</td>
<td><input type='text' name='firstname' class='textbox'><font color='red'> *</font></td>
</tr>
<tr>
<td>Last Name:</td>
<td><input type='text' name='lastname' class='textbox'><font color='red'> *</font></td>
</tr>
<tr>
<td>Username:</td>
<td><input type='text' name='username' class='textbox'><font color='red'> *</font></td>
</tr>
<tr>
<td>Email:</td>
<td><input type='text' name='email' class='textbox'><font color='red'> *</font></td>
</tr>
<tr>
<td>Password:</td>
<td><input type='password' name='password' class='textbox'><font color='red'> *</font></td>
</tr>
<tr>
<td>Confirm Password:</td>
<td><input type='password' name='repassword' class='textbox'><font color='red'> *</font></td>
</tr>
<tr>
<td>Profile Picture:</td>
<td><input name='avatar' type='file' ></td>
</tr>
<tr>
<td>Profile Message:</td>
<td><textarea name='bio' cols='35' rows='5' class='textbox'></textarea></td>
</tr>
<tr>
<td></td>
<td><input type='submit' name='submitbtn' value='Submit' class='button'></td>
</tr>
</table>
</form>";
if ($_POST['submitbtn']) {
$firstname = strip_tags($_POST['firstname']);
$lastname = strip_tags($_POST['lastname']);
$username = strip_tags($_POST['username']);
$email = strip_tags($_POST['email']);
$class = ($_POST['class']);
$password = strip_tags($_POST['password']);
$repassword = strip_tags($_POST['repassword']);
$bio = strip_tags($_POST['bio']);
//AVATAR UPLOAD
$name = $_FILES['avatar'] ['name'];
$type = $_FILES['avatar'] ['type'];
$size = $_FILES['avatar'] ['size'];
$tmpname = $_FILES['avatar'] ['tmpname'];
$ext = substr($name, strrpos($name, '.'));
if ($firstname && $lastname && $username && $email && $password && $repassword) {
if ($password == $repassword) {
if (strstr($email, "@") && strstr($email, ".") && strlen($email) >= 6) {
require("scripts/connect.php");
$query = mysql_query("SELECT * FROM users WHERE username ='$username'");
$numrows = mysql_num_rows($query);
if ($numrows == 0) {
$query = mysql_query("SELECT * FROM users WHERE email ='$email'");
$numrows = mysql_num_rows($query);
if ($numrows == 0) {
$pass = (md5(md5($password)));
$date = date("F j, Y");
if($name){
move_uploaded_file($tmpname, "avatars/$username.$ext");
$avatar = "$username.$ext";
}
else
$avatar = "default_avatar.png";
$code = substr(md5(rand(111111111111, 99999999999999999)), 2, 25);
mysql_query("INSERT INTO users VALUES ('', '$firstname', '$lastname', '$username', '$email', '$pass', '$avatar', '$bio', '', '', '$code', '', '$date')");
$webmaster = "xxxx";
$subject = "xxxx";
$headers = "From:xxx<$webmaster>";
$message = "xxx";
mail($email, $subject, $message, $headers);
echo "xxx";
}
else
echo "That email is already taken. $form";
}
else
echo "That username is already taken. $form";
}
else
echo "You did not enter a valid email. $form";
}
else
echo "Your passwords did not match. $form";
}
else
echo "You did not fill in all of the required fields. $form";
}
else
echo "$form";
?>
</div>
<?php require ("styles/bottom.php") ; ?>
var_dump($_FILES);
Et toujours l'utilisation var_dump();
pour voir ce qui est à l'intérieur de la variableSur une note de côté, je trouve bizarre la façon dont vous l'emballage de tous vos données de vérification à l'intérieur de l'un récursif
if
déclaration. Qu'advient-il si le nom d'utilisateur est déjà pris ET l'utilisateur entre dans un e-mail non valide? Ne serait-il pas gentil de leur faire savoir TOUS les erreurs à la fois de sorte qu'ils n'ont pas de fixer un à la fois? Personnellement, j'ajoute tous mes erreurs dans un tableau, comme $err[] = 'username empty'
ensuite il suffit de vérifier si $err isset
plus bas, et une boucle par elle en montrant toutes les erreurs.Merci pour la suggestion. Maintenant, je ne suis pas assez avancé, mais je vais essayer de le faire dans l'avenir.
OriginalL'auteur mais-oui | 2012-06-26
Vous devez vous connecter pour publier un commentaire.
d'abord: essayer de programmation précis
aussi, vous devez utiliser la fonction isset pour vérifier est l'indice de matrice ou pas
également vérifier php configuraion
post max taille doit être supérieure à télécharger max la taille du fichier.
également en tant que gars dit formulaire de vérification de enctype
if (isset($_POST['submitbtn']) && isset($_FILES['avatar'])) { // ... }
œuvres, mais puis-je obtenir Undefined index: tmpname dans /Applications/xxxvérifier édité replay
où dois-je ajouter
file_uploads "1" upload_max_filesize "2M" post_max_size "8M" max_file_uploads 20
? Je vous remercie pour votre aide et vos réponses rapides.si vous utilisez apache, vous pouvez les ajouter avec Comment modifier les paramètres de configuration ... ou php.ini ... après redémarrage d'apache (ou phpcgi) vérifier dans le phpinfo() pour confirmer.
merci pour votre aide!
OriginalL'auteur sweb
Pour télécharger des fichiers, vous devez utiliser le enctype dans la balise form.
Ensuite, vérifiez si la taille du fichier de votre téléchargement est supérieure à la limite définie dans php.ini. Si vous ne savez pas comment, essayer avec une petite image (quelques ko)
Question stupide, mais avez-vous rafraîchir la page avant de vous l'a soumis à nouveau pour tester si cela a fonctionné?
Oui, je l'ai fait... ça marche pour vous?
Non, je n'ai pas, mais j'ai fait cette erreur moi-même avant, afin de s'assurer simplement que vous ne l'étiez pas.
OriginalL'auteur Sarwar Erfan
Vous devriez ajouter l'attribut form
enctype="multipart/form-data"
de télécharger des fichiersOriginalL'auteur Miqdad Ali
c'est un il y a 1 an Post, mais vous pouvez toujours intéressé ..
Cochez cette option en PHP.ini :
enable_post_data_reading=off
Elle devrait l'être : sur la variable $_FILES sera vide à jamais
Si PHP va lire le POST de données Cette option est activée par défaut.
Très probablement, vous ne voulez pas désactiver cette option à l'échelle mondiale. Il provoque $_POST
et $_FILES d'être toujours vide.
OriginalL'auteur Marvin Mustafa