IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème avec $_FILES


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut Problème avec $_FILES
    Bonjour,

    J'utilise la variable $_FILES pour uploader des images, on peut poster un titre, du contenu et une image et lorsque je poste que du titre et du contenu logiquement je devrai avoir un message me disant que je n'ai pas choisi d'image et il me dit que l'extension est pas bonne alors que j'ai pas choisi de fichier...

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <?php
    if(isset($_POST['titre']) && isset($_POST['message']) && !empty($_POST['titre']) && !empty($_POST['message']))
        {
    		if(isset($_FILES['image']))
    		{
    			$dossier = '../../uploads/';
    			$fichier = basename($_FILES['image']['name']);
    			$taille_maxi = 2097152;
    			$taille = filesize($_FILES['image']['tmp_name']);
    			$extensions = array('.png', '.gif', '.jpg', '.jpeg');
    			$extension = strrchr($_FILES['image']['name'], '.'); 
    			//Début des vérifications de sécurité...
    			if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    			{
    				 $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg';
    			}
    			if($taille>$taille_maxi)
    			{
    				 $erreur = 'Le fichier est trop gros.';
    			}
    			if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    			{
    				 //On formate le nom du fichier ici...
    				 $fichier = strtr($fichier, 
    					  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    					  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    				 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    				 if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    				 {
    					  echo 'Upload effectué avec succès !';
    				 }
    				 else //Sinon (la fonction renvoie FALSE).
    				 {
    					  echo 'Echec de l\'upload !';
    				 }
    			}
    			else
    			{
    				 echo $erreur;
    			}
    		}
    		else if($_FILES['image']['name'] == '')
    		{
    			echo 'aucune image';
    		}
    ?>
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(isset($_FILES['image']))
    		{
    ...
    		}
    		else if($_FILES['image']['name'] == '')
    		{
    			echo 'aucune image';
    		}
    Tu ne peux pas aller dans ton else : $_FILES est défini à partir du moment où tu as un formulaire avec un champ file.

    Tu l'as bien compris dans ton else, il faut checker que $_FILES['image']['name'] est rempli, donc essaye plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(isset($_FILES['image'], $_FILES['image']['name']) && $_FILES['image']['name'] != '')
    		{
    ...
    		}
    		else
    		{
    			echo 'aucune image';
    		}
    par exemple

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    Une virgule dans une condition :o ?

    Et pour vérifier que mes champs titre et message sont posté comment je fais ? Il faut obligatoirement que je vérifie si c'est vide ou pas donc je vois pas trop comment faire.

  4. #4
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    la virgule ne concerne pas la condition, mais le isset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($var1,$var2,$var3...); // retourne vrai si TOUTES les variables sont définies
    Sinon pour tes champs titres, ce que tu as fait était correct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($_POST['titre']) && isset($_POST['message']) && !empty($_POST['titre']) && !empty($_POST['message']))
    {
        if(isset($_FILES['image'], $_FILES['image']['name']) && $_FILES['image']['name'] != '')
        {
    ...
    ou si tu veux grouper dans un isset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(
    	isset(
    		$_POST['titre']
    		,$_POST['message']
    		,$_FILES['image']
    		,$_FILES['image']['name']) 
    	&& !empty($_POST['titre']) 
    	&& !empty($_POST['message']))
    	&& !empty($_FILES['image']['name']))
    {

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    J'essaye ça se soir et je te tiens au courant

  6. #6
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Je ne connaissais pas le coup de la virgule. C'est cool, le code est allégé.

    Et pour alléger un peu plus, il est bon aussi d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $variable = (condition) ? "vrai" : "faux" ;
    qui affecte une valeur par défaut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    $titre=(isset($_POST['titre']))?rawurldecode(trim((string)$_POST['titre'])):'';
    $message=(isset($_POST['message']))?rawurldecode(trim((string)$_POST['message'])):'';
    if(@get_magic_quotes_gpc()){
    	$titre=stripslashes($titre);
    	$message=stripslashes($message);
    }
    $fichier=((isset($_FILES['image']),$_FILES['image']['name']))?$_FILES['image']['name']:'';
     
    $erreur=array[];
    if($titre==='')$erreur[]='Pas de titre';
    if($message==='')$message[]='Pas de message';
    if($fichier==='')$erreur[]='Pas d\'image';
     
    if(count($erreur)>0)
    	// Traitement Erreur(s)
    else{
    	// Ok, on continue
    }
    ?>

  7. #7
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    Les opérateurs ternaires allègent mais ne facilitent pas la compréhension quand on débute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $titre=(isset($_POST['titre']))?rawurldecode(trim((string)$_POST['titre'])):'';
    // on ne comprend pas au premier coup d'oeil
    Enchainer opérateur ternaire + imbriquer deux fonctions, on ne peut pas dire que ce soit une bonne pratique à mon avis...

    par ailleurs:
    Ce n'est pas du PHP

    Sinon oui on pourrait avoir à prendre en compte les magic_quote, mais autant ne pas trop embrouiller sliverman

  8. #8
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    C'est vrai qu'il vaut mieux ne pas surcharger l'opérateur ternaire...
    Bref, sinon tu as raison... Je suis parti en délire (d'optimisation) sur ce coup.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    Bon et bien ça fonctionne nickel =)

    Merci beaucoup

    Pendant que j'y suis est-ce qu'il est possible de refuser des photos supérieur à 300px de haut par exemple ?

  10. #10
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Tu peux obtenir des informations sur l'image à l'aide de la fonction getimagesize

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($largeur, $hauteur) = getimagesize($_FILES['image']['tmp_name']);

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    Donc je vérifie comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(getimagesize($_FILES['image']['tmp_name']) > 300){
    }
    Et à quoi sert la fonction list exactement, je comprend pas bien les exemples sur php.net

  12. #12
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    list() assigne à chaque variable en paramètre la valeur des clefs d'un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    list($toto, $titi, $tutu) = array('toto', 'titi', 'tutu');
    // résultat
    $toto = 'toto'; $titi = 'titi'...
    getimagesize() retourne un tableau d'informations sur une image. Parmi les éléments de ce tableau, la première valeur correspond à la largeur, le second à la hauteur.

    Donc ce que voulait dire Eric2a, c'est que tu peux aussi bien faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tInfoImage = getimagesize($file);
    $largeur = $tInfoImage[0];
    $hauteur = $tInfoImage[1]
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $tInfoImage = getimagesize($file);
    list($largeur, $hauteur) = $tInfoImage;
    // il ne vaut mieux pas faire list(...) = getimagesize($file), car getimagesize peut retourner false en cas d'erreur
    donc dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // après tes if
    $tInfoImage = getimagesize($_FILES['image']['tmp_name']);
    if(!$tInfoImage || ) $erreur[] = 'image incorrecte';
    if(!isset($erreur)) {
        list($largeur, $hauteur) = $tInfoImage;
        if($hauteur > 300) $erreur[] = 'image trop haute';
     
        ...
    }

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    Merci =)

    Par contre pour le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(!$tInfoImage || )
    Le "ou" est bien placé là ? A vrai dire je ne vois pas pourquoi il y a un "ou"

  14. #14
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    non, c'est une erreur d'inattention. Je voulais mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!$tInfoImage || sizeof($tInfoImage ) < 2)
    mais je l'ai enlevé pour éviter de trop t'embrouiller avec des détails

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    sizeof ?
    Et pourquoi inférieur à 2 ?

  16. #16
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    La fonction sizeof est un alias de count() qui renvoie le nombre d'éléments d'un tableau.

    Le code de Halleck
    est parfaitement adapté car le tableau $tInfoImage contient plusieurs autres éléments.

    Tableau renvoyé par getimagesize :
    1. Array[0] = Largeur
    2. Array[1] = Hauteur
    3. Array[2] = Type
    4. Array[3] = width="xxx" height="xxx"
    5. Array[bits] = bits
    6. Array[channels] = channels
    7. Array[mime] = mime-type

    En l'occurence, la variable $hauteur sera toujours bien assignée.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    Désolé pour tout ce retard, j'étais occupé

    J'ai donc testé avec ce code en limitant la hauteur à 200px et je n'ai plus aucun message lorsqu'une image est dans le formulaire, je ne comprend pas pourquoi, et dans mon <form> j'ai mis des $_SESSION en value pour ne pas que l'utilisateur est besoin de retapé tout son code en cas d'erreur mais elle ne s'affiche pas, voilà le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    if(isset($_POST['titre']) && isset($_POST['message']) && !empty($_POST['titre']) && !empty($_POST['message']))
        {
    		if(isset($_FILES['image'], $_FILES['image']['name']) && $_FILES['image']['name'] != '')
    		{
    			$infoImage = getimagesize($_FILES['image']['tmp_name']);
    			list($largeur, $hauteur) = $infoImage;
    			if($hauteur >= 200){
    				$erreur = 'La hauteur de l\'image doit être inférieur ou égale à 200px';
    			}
    			else
    			{
    				$dossier = '../../uploads/';
    				$fichier = basename($_FILES['image']['name']);
    				$taille_maxi = 2097152;
    				$taille = filesize($_FILES['image']['tmp_name']);
    				$extensions = array('.png', '.gif', '.jpg', '.jpeg');
    				$extension = strrchr($_FILES['image']['name'], '.');
    				//Début des vérifications de sécurité...
    				if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    				{
    					 $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg';
    				}
    				if($taille>$taille_maxi)
    				{
    					 $erreur = 'Le fichier est trop gros.';
    				}
    				if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    				{
    					$_SESSION['titre'] = $_POST['titre'];
    					$_SESSION['message'] = $_POST['message'];
    					 //On formate le nom du fichier ici...
    					 $fichier = strtr($fichier, 
    						  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    						  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    					 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    					 if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    					 {
    						$erreur = false;
     
    						$titre = mysql_real_escape_string($_POST['titre']);
    						$message = mysql_real_escape_string($_POST['message']);
     
    						if(strlen($titre) < 5){
    							$erreurliste[] = 'Le titre doit comporter au minimum 5 caractères';
    							$erreur = true;
    						}
     
    							if($erreur)
    							{
    								echo '<b>Erreur(s) :</b><br /><ul>';
    									foreach($erreurliste as $err)
    									{
    										echo '<li>'.$err.'</li><br />';
    									}
    										echo '</ul>';
     
    							}
    							else
    							{
    								mysql_query("INSERT INTO actualite VALUES('', '".$titre."', '".$message."', '".time()."', '".$_SESSION['login']."', '".$fichier."')");
    								echo 'Votre actualité à bien été ajoutée<br />Image ajouté avec succès';
    							}
     
    					 }
    					 else //Sinon (la fonction renvoie FALSE).
    					 {
    						  echo 'Echec de l\'upload !';
    					 }
    				}
    				else
    				{
    					 echo $erreur;
    				}
    			}
    		}
    		else
    		{
    		$erreur = false;
     
        	$titre = mysql_real_escape_string($_POST['titre']);
            $message = mysql_real_escape_string($_POST['message']);
     
            if(strlen($titre) < 5){
        		$erreurliste[] = 'Le titre doit comporter au minimum 5 caractères';
        		$erreur = true;
        	}
     
        		if($erreur)
        		{
        			echo '<b>Erreur(s) :</b><br /><ul>';
        				foreach($erreurliste as $err)
        				{
        					echo '<li>'.$err.'</li><br />';
        				}
        					echo '</ul>';
     
        		}
        		else
        		{
        			mysql_query("INSERT INTO actualite VALUES('', '".$titre."', '".$message."', '".time()."', '".$_SESSION['login']."', '')");
    				echo 'Votre actualité à bien été ajoutée';
        		}
    		}
        }

  18. #18
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Peux-tu essayer ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    $erreurliste = array();
    $image_ok=false;
     
    $infos_ok=(isset($_POST['titre']) && isset($_POST['message']) && !empty($_POST['titre']) && !empty($_POST['message']));
    if($infos_ok) {
    	// Si les infos on été saisies, on continue
    	if(isset($_FILES['image'], $_FILES['image']['name']) && $_FILES['image']['name'] != '')
    	{	// Si un upload est requis, on s'en occupe de suite
    		$dossier = '../../uploads/';
    		$fichier = basename($_FILES['image']['name']);
    		$taille_maxi = 2097152;
    		$taille = filesize($_FILES['image']['tmp_name']);
    		$extensions = array('.png', '.gif', '.jpg', '.jpeg');
    		$extension = strrchr($_FILES['image']['name'], '.');
     
    		//Début des vérifications de sécurité...
    		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    			$erreurliste[] = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg';
     
    		elseif($taille>$taille_maxi)
    			$erreurliste[] = 'Le fichier est trop gros.';
     
    		if(count($erreurliste)==0) //S'il n'y a pas d'erreur, on continue
    		{
    			$infoImage = getimagesize($_FILES['image']['tmp_name']);
    			list($largeur, $hauteur) = $infoImage;
    			if($hauteur<=200)
    			{	//On formate le nom du fichier ici...
    				$fichier = strtr($fichier,
    					  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    					  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    				$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    				if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier)) // Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    					$image_ok=true;
    				 else
    					$erreurliste[] = 'Echec de l\'upload !';
    			}
    			else
    				$erreurliste[] = 'La hauteur de l\'image doit être inférieure ou égale à 200px';
    		}
    	}
    }
     
    // Si les infos on été saisies ET que l'éventuelle image "valide" a été correctement uploadée, on continue
    if(($infos_ok) and (count($erreurliste)==0) {
    	$titre = mysql_real_escape_string($_POST['titre']);
    	$message = mysql_real_escape_string($_POST['message']);
     
    	if(strlen($titre) < 5)
    		$erreurliste[] = 'Le titre doit comporter au minimum 5 caractères';
    	else {
    		$text = 'Votre actualité à bien été ajoutée';
    		if($image_ok)
    			$text .= '<br />Image ajouté avec succès';
    		else
    			$fichier = '';
     
    		// On insère tout ça dans la base de données
    		mysql_query("INSERT INTO actualite VALUES('', '".$titre."', '".$message."', '".time()."', '".$_SESSION['login']."', '".$fichier."')");
    		echo $text;
    	}
    }
     
    // On liste toutes les éventuelles erreurs
    if(count($erreurliste)>0) {
    	echo '<b>Erreur(s) :</b><br /><ul>';
    	foreach($erreurliste as $err) {
    		echo '<li>'.$err.'</li><br />';
    	}
    	echo '</ul>';
    }

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    J'ai une erreur sur cette ligne là :

    if(($infos_ok) and (count($erreurliste)==0) {

    Parse error: syntax error, unexpected '{' in /homepages/6/d327861196/htdocs/admin/actualite/add.php

    Par contre dans l'INSERT pour $fichier on dirait fichier n'est pas défini avec le nom de l'image $_FILES['image']['name'] il est toujours vide on dirait.

    Edit : J'ai trouvé ^^ j'ai juste mis dans le code d'avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $infoImage = getimagesize($_FILES['image']['tmp_name']);
    			list($largeur, $hauteur) = $infoImage;
    			//Début des vérifications de sécurité...
    			if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    			{
    				 $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg';
    			}
    			if($taille>$taille_maxi)
    			{
    				 $erreur = 'Le fichier est trop gros.';
    			}
    			if($hauteur >= 200)
    			{
    				$erreur = 'L\'image doit être inférieur ou égale à 200px de hauteur';
    			}
    			if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    			{
    Par contre pour les session je n'y arrive pas :s

  20. #20
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Oui désolé.

    Il manquait la parenthèse fermante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(($infos_ok) and (count($erreurliste)==0)) {
    Ensuite, il fallait initialiser $fichier au début comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $erreurliste = array();
    $image_ok=false;
    $fichier='';

Discussions similaires

  1. Problème avec if(isset($_FILES['monfichier']))
    Par delux450 dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2008, 23h32
  2. Problème de poids avec $_FILES
    Par taly dans le forum Langage
    Réponses: 2
    Dernier message: 27/06/2006, 13h12
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 19h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo