Problème PHP
Khaose
-
Khaose -
Khaose -
Bonjour,
jour à tous.
J'ai eu un problème en lisant ce <lien url="http://www.siteduzero.com/tutoriel-3-37674-upload-de-fichiers-par-formulaire.html">tuto</lien>.
Je pense avoir ton bien fait.
Voici le message d'erreur :
Et voici mon code :
Ne pas rire svp car je n'ai peut-être pas bien compris tout le tuto et je suis un noob en PHP :(
Je post ce message ici car chez moi le forum de ce site bug :(
Merci d'avance de votre aide et de votre compréhension.
jour à tous.
J'ai eu un problème en lisant ce <lien url="http://www.siteduzero.com/tutoriel-3-37674-upload-de-fichiers-par-formulaire.html">tuto</lien>.
Je pense avoir ton bien fait.
Voici le message d'erreur :
Parse error: syntax error, unexpected T_VARIABLE in /home/upload-be/html/reception.php on line 11
Et voici mon code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Bienvenue sur FileGeek ! Le site d'upload le plus intelligent !</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?php
$_FILES['icone']['name'] //Le nom original du fichier, comme sur le disque du visiteur, (exemple: mon_icone.png).
$_FILES['icone']['type'] //Le type du fichier. Par exemple, cela peut être "image/png"
$_FILES['icone']['size'] //La taille du fichier en octets
$_FILES['icone']['tmp_name'] //L'adresse vers le fichier uploadé dans le répertoire temporaire
$_FILES['icone']['error'] //Le code d'erreur, qui permet de savoir si le fichier a bien été uploadé
?>
<?php
if ($_FILES['icone']['error'] > 0) $erreur = "Erreur lors du tranfsert";
?>
<?php
if ($_FILES['icone']['size'] > $maxsize) $erreur = "Le fichier est trop gros, veuillez recommencer avec un fichier plus léger";
?>
<?php
$image_sizes = getimagesize($_FILES['icone']['tmp_name']);
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) $erreur = "Image trop grande, veuillez recommencer avec une image plus petite";
?>
<?php
//Créer un dossier 'fichiers/1/'
mkdir('fichier/1/', 0777, true);
//Créer un identifiant difficile à deviner
$nom = md5(uniqid(rand(), true));
?>
<?php
$nom = "avatars/{$id_membre}.{$extension_upload}";
$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$nom);
if ($resultat) echo "Transfert réussi";
?>
</body>
</html>
Ne pas rire svp car je n'ai peut-être pas bien compris tout le tuto et je suis un noob en PHP :(
Je post ce message ici car chez moi le forum de ce site bug :(
Merci d'avance de votre aide et de votre compréhension.
A voir également:
- Problème PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour à la ligne php ✓ - Forum PHP
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
15 réponses
Ta toute dernière ligne de code :
Me paraît être la fautive.
Après un 'if' :
1) On précise une condition entre parenthèses.
2) On précise une ou des actions entre accolades.
Et ici, si ton action est sûrement :
Que tu n'as qu'à mettre entre accolades, je ne comprends pas quelle est ta condition.
Tu veux que ça écrive "Transfert réussi" si $resultat a quoi ? S'il est égal à quelque chose en particulier ?
Je te propose donc :
edit. :
Euh, il n'y a pas que cette ligne qui est fausse ! À de nombreux endroits tu as oublié des accolades, parenthèses, points-virgules.
if ($resultat) echo "Transfert réussi";
Me paraît être la fautive.
Après un 'if' :
1) On précise une condition entre parenthèses.
2) On précise une ou des actions entre accolades.
Et ici, si ton action est sûrement :
{echo "Transfert réussi";}
Que tu n'as qu'à mettre entre accolades, je ne comprends pas quelle est ta condition.
Tu veux que ça écrive "Transfert réussi" si $resultat a quoi ? S'il est égal à quelque chose en particulier ?
Je te propose donc :
if($resultat=='qqchose'){echo "Transfert réussi";}
edit. :
Euh, il n'y a pas que cette ligne qui est fausse ! À de nombreux endroits tu as oublié des accolades, parenthèses, points-virgules.
Inutile, elle ne sert a rien quoi. Tu peux la supprimer. et non, ce n'est pas que pour les fonctions mais a chaque fin de ligne, sauf quand tu commance une condition ou un boucle :
$variable = true ; //On met un ";"
if ($variable == true) //On en met pas
{
code code code ; //On met un ";"
}
un truc comme ca :
ca te supprime une ligne en plus ^^,
Sinon, pourquoi des <?php ?> partout ?
un <?php au début du code et un ?> a la fin devrais suffire étant donné que tu n'affiche aucun code html
Enfin si tu préfère :
if (move_uploaded_file($_FILES['icone']['tmp_name'],$nom))
{
echo "Transfert réussi";
}
ca te supprime une ligne en plus ^^,
Sinon, pourquoi des <?php ?> partout ?
un <?php au début du code et un ?> a la fin devrais suffire étant donné que tu n'affiche aucun code html
Enfin si tu préfère :
<?php
if ($_FILES['icone']['error'] > 0) $erreur = "Erreur lors du tranfsert";
if ($_FILES['icone']['size'] > $maxsize) $erreur = "Le fichier est trop gros, veuillez recommencer avec un fichier plus léger";
$image_sizes = getimagesize($_FILES['icone']['tmp_name']);
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) $erreur = "Image trop grande, veuillez recommencer avec une image plus petite";
//Créer un dossier 'fichiers/1/'
mkdir('fichier/1/', 0777, true);
//Créer un identifiant difficile à deviner
$nom = md5(uniqid(rand(), true));
$nom = "avatars/{$id_membre}.{$extension_upload}";
$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$nom);
if (move_uploaded_file($_FILES['icone']['tmp_name'],$nom))
{
echo "Transfert réussi";
}
?>
Je vois pas mal d'erreur dans cette partie:
déja ça ne sert à rien de mettre
?> et
<?pph
aussitôt
on sort du php par ?> quand on a a ecrire du code HTML par exemple
Ensuite:
<?php
////il maque les ; à la fin des lignes
$_FILES['icone']['name'] //Le nom original du fichier, comme sur le disque du visiteur, (exemple: mon_icone.png).
$_FILES['icone']['type'] //Le type du fichier. Par exemple, cela peut être "image/png"
$_FILES['icone']['size'] //La taille du fichier en octets
$_FILES['icone']['tmp_name'] //L'adresse vers le fichier uploadé dans le répertoire temporaire
$_FILES['icone']['error'] //Le code d'erreur, qui permet de savoir si le fichier a bien été uploadé
?>
par contre $resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$nom);
if ($resultat) echo "Transfert réussi";
tu as le droit de mettre comme ça car:
si le move_uploded... a fonctionné, $resultat vaut TRUE
et on peut tester if($resultat) //sous entendu ==true
déja ça ne sert à rien de mettre
?> et
<?pph
aussitôt
on sort du php par ?> quand on a a ecrire du code HTML par exemple
Ensuite:
<?php
////il maque les ; à la fin des lignes
$_FILES['icone']['name'] //Le nom original du fichier, comme sur le disque du visiteur, (exemple: mon_icone.png).
$_FILES['icone']['type'] //Le type du fichier. Par exemple, cela peut être "image/png"
$_FILES['icone']['size'] //La taille du fichier en octets
$_FILES['icone']['tmp_name'] //L'adresse vers le fichier uploadé dans le répertoire temporaire
$_FILES['icone']['error'] //Le code d'erreur, qui permet de savoir si le fichier a bien été uploadé
?>
<?php $_FILES['icone']['name'] ; //Le nom original du fichier, comme sur le disque du visiteur, (exemple: mon_icone.png). $_FILES['icone']['type']; //Le type du fichier. Par exemple, cela peut être "image/png" $_FILES['icone']['size']; //La taille du fichier en octets $_FILES['icone']['tmp_name']; //L'adresse vers le fichier uploadé dans le répertoire temporaire $_FILES['icone']['error']; //Le code d'erreur, qui permet de savoir si le fichier a bien été uploadé
par contre $resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$nom);
if ($resultat) echo "Transfert réussi";
tu as le droit de mettre comme ça car:
si le move_uploded... a fonctionné, $resultat vaut TRUE
et on peut tester if($resultat) //sous entendu ==true
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
T'inquiète, ouais, on est tous passés par la.
Bon, j'ai regarder le code d'un peu plus près, et il y a encore pas mal d'erreur...
- Les variable $max... ne sont pas déclarée, php ne peux pas les deviner tout seul
- Les verification d'erreur ne servent a rien car le fichier est quand même uploadé si il y a une erreur
- La création du dossier "fichier/1/" est inutile car elle ce fait à chaque envoi d'image (même quand il y a une erreur) de plus le nom ne change pas en fonction du membre, il y a écrasement du répertoire a tout les coups.
- L'extension n'est pas récupérée donc impossible pour php d'uploader le fichier
- Comment fait tu pour afficher l'image une fois uploadée, elle n'est récupée nulle part et tu lui donne un nom cryptée au hasard, a mon avis, le nom du membre suffit
Ca doit être a peu près tout, voila ce que ca donne avec une petite correction :
Tu feras attention a $nom, j'ai mis $_SESSION['pseudo'], mais c'est sans doute autre chose. Je pense que ca va mieux marcher.
Bon, j'ai regarder le code d'un peu plus près, et il y a encore pas mal d'erreur...
- Les variable $max... ne sont pas déclarée, php ne peux pas les deviner tout seul
- Les verification d'erreur ne servent a rien car le fichier est quand même uploadé si il y a une erreur
- La création du dossier "fichier/1/" est inutile car elle ce fait à chaque envoi d'image (même quand il y a une erreur) de plus le nom ne change pas en fonction du membre, il y a écrasement du répertoire a tout les coups.
- L'extension n'est pas récupérée donc impossible pour php d'uploader le fichier
- Comment fait tu pour afficher l'image une fois uploadée, elle n'est récupée nulle part et tu lui donne un nom cryptée au hasard, a mon avis, le nom du membre suffit
Ca doit être a peu près tout, voila ce que ca donne avec une petite correction :
<?php
$maxsize = 1024; // On déclare la taille maxi
$maxwidth = 800; // On déclare la largeur maxi
$maxheight = 600; // On déclare la hauteur maxi
$filename=$_FILES['icone']['name'];
// On récupère l'extension
$extension=strrchr($filename,'.');
$extension=substr($extension,1) ;
$image_sizes = getimagesize($_FILES['icone']['tmp_name']);
if ($_FILES['icone']['error'] > 0)
{
$erreur = "Erreur lors du tranfsert";
}
elseif ($_FILES['icone']['size'] > $maxsize)
{
$erreur = "Le fichier est trop gros, veuillez recommencer avec un fichier plus léger";
}
elseif ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
{
$erreur = "Image trop grande, veuillez recommencer avec une image plus petite";
}
elseif ($extension == 'jpg' OR $extension == 'gif' OR $extension == 'png') // On vérifie que le fichier est une image
{
$nom = $_SESSION['pseudo'];
mkdir('fichier/'.$nom.'/', 0777, true);
$destination = "avatars/".$nom.".".$extension; // On indique la destination
if (move_uploaded_file($_FILES['icone']['tmp_name'],$destination))
{
$erreur = "Transfert réussi";
}
}
else
{
$erreur = "Le fichier doit être au format jpg / gif / png";
}
echo $erreur;
?>
Tu feras attention a $nom, j'ai mis $_SESSION['pseudo'], mais c'est sans doute autre chose. Je pense que ca va mieux marcher.
Salut, déja il y a ce qu'a dit Ululo et toute ta partie :
est inutile, tu devrais mettre $nom = $_FILE['icone']['name'];
et surtout ne pas oublier le ;
<?php $_FILES['icone']['name'] //Le nom original du fichier, comme sur le disque du visiteur, (exemple: mon_icone.png). $_FILES['icone']['type'] //Le type du fichier. Par exemple, cela peut être "image/png" $_FILES['icone']['size'] //La taille du fichier en octets $_FILES['icone']['tmp_name'] //L'adresse vers le fichier uploadé dans le répertoire temporaire $_FILES['icone']['error'] //Le code d'erreur, qui permet de savoir si le fichier a bien été uploadé ?>
est inutile, tu devrais mettre $nom = $_FILE['icone']['name'];
et surtout ne pas oublier le ;
J'ai pas compris ce que tu veux dire par inutile.
Mais pour le ; c'est juste dans le cas d'un fonction non ? Et la je ne suis pas dans une fonction. Enfin je pense...
Je ne suis pas un roi en PHP ^^
Mais pour le ; c'est juste dans le cas d'un fonction non ? Et la je ne suis pas dans une fonction. Enfin je pense...
Je ne suis pas un roi en PHP ^^
Merci beaucoup de ton aide précieuse :)
Mais je ne sais pas où les fichiers vont maintenant :(
Je sais je suis un nul --'
Mais tout le monde passe par là non ?
Mais je ne sais pas où les fichiers vont maintenant :(
Je sais je suis un nul --'
Mais tout le monde passe par là non ?
Maintenant j'ai cette ligne d'erreur.
Warning: mkdir() [function.mkdir]: File exists in /home/upload-be/html/reception.php on line 18
Merci de m'expliquer tout en détail :)
Mais comment ça se fait que j'ai cette nouvelle ligne d'erreur ?
Mais comment ça se fait que j'ai cette nouvelle ligne d'erreur ?