Problème PHP

Fermé
Khaose - 31 déc. 2008 à 17:58
 Khaose - 1 janv. 2009 à 11:35
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 :

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:

15 réponses

Ululo Messages postés 28 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 31 décembre 2008 7
31 déc. 2008 à 18:14
Ta toute dernière ligne de code :
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.
1
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
31 déc. 2008 à 18:25
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 ";"
}
1
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
31 déc. 2008 à 18:33
un truc comme ca :
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";
			}
		?>
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
31 déc. 2008 à 18:37
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é
?>



<?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
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
31 déc. 2008 à 19:10
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 :

<?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.
1
Et si je mets 'true' Tu penses que ça fonctionnera ?
0
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
31 déc. 2008 à 18:19
Salut, déja il y a ce qu'a dit Ululo et toute ta partie :

<?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 ;
0
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 ^^
0
D'accord merci

et que pourrais-je mettre pour la dernière ligne svp ?
0
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 ?
0
Maintenant j'ai cette ligne d'erreur.

Warning: mkdir() [function.mkdir]: File exists in /home/upload-be/html/reception.php on line 18
0
Merci de m'expliquer tout en détail :)

Mais comment ça se fait que j'ai cette nouvelle ligne d'erreur ?
0
Celle-là

Warning: mkdir() [function.mkdir]: File exists in /home/upload-be/html/reception.php on line 18
0
Tu peux m'ajouter svp ?

adrix001@hotmail.com
0
Et un très grand merci de m'aider :)
0