Script qui ne fonctionne pas.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Script qui ne fonctionne pas.

Re: Script qui ne fonctionne pas.

par JeanJean » 13 févr. 2010, 20:38

En effet, une erreur simple mais qu'on oublie si vite ! Merci !

J'ai aussi remplacé imagecreatefrom... par imagepng dans la page parametres.php.

Seulement, j'ai remarqué quelque chose.

J'ai testé mon script avec pas mal d'images. Mais j'ai une image où quand j'essaye de l'upploader ça me retourne cette erreur : Erreur 101 (net::ERR_CONNECTION_RESET) : Erreur inconnue (sous Google chrome) et sous FF, j'ai cette erreur : La connexion a été réinitialisée

Quelqu'un sait d'où cela peut venir ?

Une petite aide : Quand je clique sur parcourir pour prendre une photo, c'est la seule ou l'extension est inclue dans le nom.

Image

Edit : Problème réglé, l'extension de l'image était .png. ><

Re: Script qui ne fonctionne pas.

par Calimero » 13 févr. 2010, 19:45

Bonjour,
                if($extension_photo = 'gif'){
                        $photo_intermediaire = imagecreatefromgif($photo_tmp);
                }
                elseif($extension_photo = 'png'){
                        $photo_intermediaire = imagecreatefrompng($photo_tmp);
                }
                else{
                        $photo_intermediaire = imagecreatefromjpeg($photo_tmp);
                }
En php, le symbole égal (=) signifie l'affectation de valeur de la droite vers la gauche, l'égalité entre deux valeurs étant quand à elle représentée par deux signes égal consécutifs (==).

C'est une des erreurs les plus traîtres qui soient, car aucun message d'erreur de PHP ne vient te la signaler (puisque la syntaxe est parfaitement valide, elle a juste une signification très différente de ce qu'un oeil humain peut imaginer lors d'une lecture rapide). C'est particulièrement méchant dans les if, while, for... Et c'est tombé sur toi pour cette fois, félicitations =D>

C'est pourquoi à chaque fois que j'écris un if, while, for (ou autre structure du même type) je fais toujours une petite vérification pour vérifier que je n'ai pas oublié un =, ce qui peut me faire gagner plusieurs heures de débugage. Quelquechose me dit que tu le feras toi aussi à partir de maintenant... ;)

++

Re: Script qui ne fonctionne pas.

par JeanJean » 13 févr. 2010, 19:23

Bonsoir,

Après plusieurs test sans résultat, je reviens vous voir pour vous exposez mon problème.

J'ai une erreur assez étrange.

Voilà le script qui se compose de deux parties.

parametres.php et redimensionner.php

Code : PHP
<?php
						if(isset($_FILES['photo'])){
							$largeur_maximum = 300;
							$hauteur_maximum  = 400;
							$photo = $_FILES['photo']['name'];
							$photo_tmp = $_FILES['photo']['tmp_name'];
							$taille = $_FILES['photo']['size'];
							
							include('redimensionner.php');
							
							if(empty($verification_photo)){
								if(!is_dir('photos/')){
								mkdir('photos', 0777);
								}
								if(!is_dir('photos/'.$pseudo)){
									mkdir('photos/'.$pseudo, 0777);
								}
								if(!is_dir('photos/'.$pseudo.'/photo_profil')){
									mkdir('photos/'.$pseudo.'/photo_profil', 0777);
								}
								
								$nom = 'photo_profil';
								$destination = 'photos/'.$pseudo.'/photo_profil/';
								$liste = scandir($destination);
								if(isset($liste[2]) && $liste[2] !== ''){
									unlink($destination.$liste[2]);
								}
								
								if($extension_photo == 'gif'){
									imagecreatefromgif($photo_miniature,$destination.$nom.'.'.$extension_photo);
								}
								elseif($extension_photo == 'png'){
									imagecreatefrompng($photo_miniature,$destination.$nom.'.'.$extension_photo,9);
								}
								else{
									imagecreatefromjpeg($photo_miniature,$destination.$nom.'.'.$extension_photo,100);
								}
							}
							else{
								switch($verification_photo){
									case 1:
										$erreur = 'Merci de renseigner une photo dans le formulaire';
									break;
									case 2:
										$erreur = 'Le format de la photo n\'est pas bon. Les formats acceptés sont : jpg, jpeg, gif, png.';
									break;
								}
							}							
						}
						
						if(isset($erreur) && $erreur !== ''){
							echo '<span class="erreur_para">'.$erreur.'</span><br /><br />';
						}
						$destination = 'photos/'.$pseudo.'/photo_profil/';
						if(is_dir($destination)){
							$liste = scandir($destination);
							if(isset($liste[2]) && $liste[2] !== ''){
								echo '<img src="'.$destination.$liste[2].'">';
							}
						}
						?>
						<form method="post" enctype="multipart/form-data" action="parametres.php?ref=2">
							Photo de profil : <br />
							<input type="file" name="photo" style="margin-left:50px;"><br /><br />
							<input type="submit" name="envoyer_photo"> 
						</form>

Code : PHP
<?php 
if(isset($_FILES['photo'])){
	function verification_photo($taille,$extension_photo,$extension_authorise){
		if($taille < 1){
			return 1;
		}
		elseif(!in_array($extension_photo,$extension_authorise)){
			return 2;
		}
		else{
			$erreur = null;
			return $erreur;
		}
	}

	$extension_authorise = array('jpg','jpeg','gif','png');
	$minuscule = strtolower($photo);
	$explode = explode('.',$minuscule);
	@$extension_photo = $explode[1];

	$verification_photo = verification_photo($taille,$extension_photo,$extension_authorise);
	
	if(empty($verification_photo)){
		if($extension_photo = 'gif'){
			$photo_intermediaire = imagecreatefromgif($photo_tmp);
		}
		elseif($extension_photo = 'png'){
			$photo_intermediaire = imagecreatefrompng($photo_tmp);
		}
		else{
			$photo_intermediaire = imagecreatefromjpeg($photo_tmp);
		}
		
		$taille_image = getimagesize($photo_tmp);
		$reduction = (($largeur_maximum * 100)/$taille_image[0]);
		$hauteur = (($taille_image[1] * $reduction)/100);
										
		if($hauteur > $hauteur_maximum){
			$reduction = (($hauteur_maximum * 100)/$taille_image[1]);
			$largeur = (($taille_image[0] * $reduction)/100);
			$photo_miniature = imagecreatetruecolor($largeur,$hauteur_maximum);
			imagecopyresampled($photo_miniature,$photo_intermediaire,0,0,0,0,$largeur,$hauteur_maximum,$taille_image[0],$taille_image[1]);
		}
		else{
			$reduction = (($largeur_maximum * 100)/$taille_image[0]);
			$photo_miniature = imagecreatetruecolor($largeur_maximum,$hauteur);
			imagecopyresampled($photo_miniature,$photo_intermediaire,0,0,0,0,$largeur_maximum,$hauteur,$taille_image[0],$taille_image[1]);
		}
		imagedestroy($photo_intermediaire);
		
	}
}
?>

Quand je choisie une image dans le formulaire et que je clique sur "valider", le script me renvoi cette erreur :

Warning: imagecreatefromgif() [function.imagecreatefromgif]: 'F:\Wamp\tmp\php13AE.tmp' is not a valid GIF file in F:\Wamp\www\Projet\redimensionner.php on line 25.

Ce qui équivaut à cette ligne :

Code : PHP
<?php
if($extension_photo = 'gif'){
			$photo_intermediaire = imagecreatefromgif($photo_tmp);
}
?>

Alors que l'image up est au format jpg.

Merci et bonne soirée.

Re: Script qui ne fonctionne pas.

par JeanJean » 12 févr. 2010, 18:52

Problème résolu, j'ai modifier j'ai modifier la fonction :
	function verification_photo($taille,$extension_photo,$extension_authorise){
		if($taille < 1){
			return 1;
		}
		elseif(!in_array($extension_photo[1],$extension_authorise)){
			return 2;
		}
		else{
			$erreur = null;
			return $erreur;
		}
	}
Et la vérification :
if(empty($verification_photo)){
// code
}
Voilà. ;)

Re: Script qui ne fonctionne pas.

par JeanJean » 11 févr. 2010, 08:25

Merci de ta réponse.

Cependant, je viens de remplacer $_POST par $_FILES, mais ça ne change rien. :/

;)

Re: Script qui ne fonctionne pas.

par dunbar » 10 févr. 2010, 23:29

Salut,
ici
if(isset($_POST['photo']))
A mon sens cela devrais être
if(isset($_FILES['photo']
Non :?:

Script qui ne fonctionne pas.

par JeanJean » 10 févr. 2010, 22:00

Bonsoir,

Je viens de finaliser un script qui permet de uploader et redimensionner des images à la volée. Cependant, celui-ci refuse de marché. :s
                                                <?php
						if(isset($_POST['photo'])){
							$largeur_maximum = 300;
							$hauteur_maximum  = 400;
							$photo = $_FILES['photo']['tmp_name'];
							$taille = $_FILES['photo']['size'];
							
							include('redimensionner.php');
							
							if($verification_photo == true){
								if(!is_dir('photos/')){
								mkdir('photos', 0777);
								}
								if(!is_dir('photos/'.$pseudo)){
									mkdir('photos/'.$pseudo, 0777);
								}
								if(!is_dir('photos/'.$pseudo.'/photo_profil')){
									mkdir('photos/'.$pseudo.'/photo_profil', 0777);
								}
								
								$nom = 'photo_profil';
								$destination = 'photos/'.$pseudo.'/photo_profil/';
								$liste = scandir($destination);
								if(isset($liste[2]) && $liste[2] !== ''){
									unlink($destination.$liste[2]);
								}
								
								if($extension_photo = 'gif'){
									imagecreatefromgif($photo,$destination.$nom.'.'.$extension_photo);
								}
								elseif($extension_photo = 'png'){
									imagecreatefrompng($photo,$destination.$nom.'.'.$extension_photo,9);
								}
								else{
									imagecreatefromjpeg($photo,$destination.$nom.'.'.$extension_photo,100);
								}
								print("<script language = \"JavaScript\">"); 
								print("location.href = 'parametres.php?ref=2';"); 
								print("</script>");		
							}
							else{
								switch($verification_photo){
									case 1:
										$erreur = 'Merci de renseigner une photo dans le formulaire';
									break;
									case 2:
										$erreur = 'Le format de la photo n\'est pas bon. Les formats acceptés sont : jpg, jpeg, gif, png.';
									break;
								}
							}							
						}
						
						if(isset($erreur) && $erreur !== ''){
							echo '<span class="erreur_para">'.$erreur.'</span>';
						}
						$destination = 'photos/'.$pseudo.'/photo_profil/';
						if(is_dir($destination)){
							$liste = scandir($destination);
							if(isset($liste[2]) && $liste[2] !== ''){
								echo '<img src="'.$destination.$liste[2].'">';
							}
						}
						?>
						<form method="post" enctype="multipart/form-data" action="parametres.php?ref=2">
							Photo de profil : <br />
							<input type="file" name="photo" style="margin-left:50px;"><br /><br />
							<input type="submit" name="envoyer_photo"> 
						</form>
Le script ne me retourne aucune erreur, mais le problème c'est que rien ne se passe quand je clique sur "Valider"... << Il n'y a aucune création de fichier, aucuns up d'image ni redimension, et même les erreur ne s'affichent pas si le fichier n'est pas une image ou si il n'a pas été renseigné !

J'ai tenté de tester mes $variables, mais aucun "echo" n'est retourné ici :
<?php
if($verification_photo == true){
    echo 'test';	
}
else{
    echo 'test';
}
?>
Merci de votre aide. :)