erreur d'affichage php

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 : erreur d'affichage php

Re: erreur d'affichage php

par padymen » 29 mars 2012, 09:36

Bonjour ,
bon, ce matin je me dis que je vais essayer d'y voir un peu plus clair, je commence par reprendre mes variables de départ, j'ai donc au départ :
$sup = $_POST['sup'];
valeur que je récupère de mon formulaire dans index.php et qui fonctionne
puis
// on défini le répertoire où sont stockées les images de grande taille

$dir = "../../" .$sup. "/pics";

// on défini le répertoire où seront stockées les miniatures

$dir_mini = "../../" .$sup. "/mini/";

donc à partir de maintenant plutôt que d'utiliser
'../../' .$sup. '/mini/'
j'utiliserais donc par sécurité :
$dir
je teste le formulaire (index.php) avec deux dossiers et ça renvois bien le contenu du dossier demandé donc on peux imaginer qu'il n'y a pas d'erreur au niveau de l'écriture des variables puisque l'affichage des images se fait bien et la lecture du code html de la page renvoyée le confirme, ben non, cette satanée ligne 169 (
$dossier = opendir ($dir_mini);

while ($fichier = readdir ($dossier)) {

	if ($fichier != '.' && $fichier != '..' && $fichier != 'supprime.php') {

		$tableau[] = $fichier;

	}

}

closedir ($dossier);

)
continue de me renvoyer l'erreur suivante :
Warning: opendir(../..//mini/) [function.opendir]: failed to open dir: No error in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 169

incompréhensible pourquoi la variable $dir_mini me renvoie un "../..//mini/" avec opendir alors qu'elle me renvoie un ../../répertoire_demandé/mini/" avec le reste !

Re: erreur d'affichage php

par pascalhome » 28 mars 2012, 15:12

Bonjour albat et merci de ta réponse, alors avant de donner le code, une petite précision : à la base le code fonctionnait parfaitement mais avec des chemins écrit comme ceci : "../../pics/" ou "../../mini" j'ai modifié le code car j'ai plusieurs galeries de photos et je voudrais ne plus avoir une partie admin dans chaque galerie mais une seule partie admin que je gérerais à partir d'un formulaire avec liste déroulantes donc je cherche à modifier "../../mini" par ../../ .$sup. /mini" ou $sup est le nom de la galerie sur laquelle faire des modif
voici le code :
<?php

$sup = $_POST["sup"];

// on défini le répertoire où sont stockées les images de grande taille
$dir = "../../" .$sup. "/pics";
// on défini le répertoire où seront stockées les miniatures
$dir_mini = "../../" .$sup. "/mini";
// on défini une variable $ratio qui vaudra 150 dans notre cas (150 pixels). En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels, soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait).
$ratio = 150;

// on teste si le formulaire permettant d'uploader un fichier a été soumis
if (isset($_POST['go'])) {
	// on teste si le champ permettant de soumettre un fichier est vide ou non
	if (empty($_FILES['mon_image']['tmp_name'])) {
		// si oui, on affiche un petit message d'erreur
		$erreur = 'Aucun fichier envoyé.';
	}
	else {
		// on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier (je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations)
		$tableau = @getimagesize($_FILES['mon_image']['tmp_name']);
		if ($tableau == FALSE) {
			// si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur
			unlink($_FILES['mon_image']['tmp_name']);
			$erreur = 'Votre fichier n\'est pas une image.';
		}
		else {
			// on teste le type de notre image : jpeg ou png
			if ($tableau[2] == 2 || $tableau[2] == 3) {
				// si on a déjà un fichier qui porte le même nom que le fichier que l'on tente d'uploader, on modifie le nom du fichier que l'on upload
				if (is_file("../../" .$sup. "/pics/".$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name'];
				else $file_upload = $_FILES['mon_image']['name'];

				// on copie le fichier que l'on vient d'uploader dans le répertoire des images de grande taille
				copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload);

				// il nous reste maintenant à générer la miniature

				// si notre image est de type jpeg
				if ($tableau[2] == 2) {
					// on crée une image à partir de notre grande image à l'aide de la librairie GD
					$src = imagecreatefromjpeg($dir.'/'.$file_upload);
					// on teste si notre image est de type paysage ou portrait
					if ($tableau[0] > $tableau[1]) {
						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
					}
					else {
						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
					}
					// on copie notre fichier généré dans le répertoire des miniatures
					imagejpeg ($im, $dir_mini.'/'.$file_upload);
				}
				elseif ($tableau[2] == 3) {
					$src = imagecreatefrompng($dir.'/'.$file_upload);
					if ($tableau[0] > $tableau[1]) {
						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
					}
					else {
						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
					}
					imagepng ($im, $dir_mini.'/'.$file_upload);
				}
				// on redirige l'administrateur vers l'accueil de la partie admin
				header('location: supprime.php');
				exit();
			}
			else {
				// si notre image n'est pas de type jpeg ou png, on supprime le fichier uploadé et on affiche un petit message d'erreur
				unlink($_FILES['mon_image']['tmp_name']);
				$erreur = 'Votre image est d\'un format non supporté.';
			}
		}
	}
}

// on teste si le formulaire permettant de supprimer un fichier à été soumis
if (isset($_GET['del'])) {
	if (empty($_GET['del'])) {
		// si le paramètre n'est pas renseignée, on affiche un petit message d'erreur
		$erreur = 'Aucune image à supprimer';
	}
	else {
		$pic_a_zapper = $_GET['del'];
		// si l'image existe ainsi que sa miniature, on les supprime
		if (is_file('"../../" .$sup. "/mini/"'.$pic_a_zapper) && is_file('"../../" .$sup. "/pics/"'.$pic_a_zapper)) {
			unlink('"../../" .$sup. "/mini/"'.$pic_a_zapper);
			unlink('"../../" .$sup. "/pics/"'.$pic_a_zapper);
		}
		// si l'image ou la miniature n'existe pas, on affiche un message d'erreur
		else {
			$erreur = 'Image non reconnue';
		}
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>

	<title>test</title>
	<link type="text/css" rel="stylesheet" href="../../css/images.css"  />
	<link type="text/css" rel="stylesheet" href="../../css/accueil.css"  />
	<link type="text/css" rel="stylesheet" href="../../css/menu.css"  />
	<link type="text/css" rel="stylesheet" href="../../css/admin.css"  />
	<script type="text/javascript" language="javascript" src="../../js/script.js"></script>
  <script src="../../script/jquery.js" type="text/javascript"></script>       <!-- fond d'ecran extensible-->
  <script src="../../script/background.js" type="text/javascript"></script>       <!-- fond d'ecran extensible--> 		
 	<link rel="shortcut icon" href="../../images/55.ico">
	
</head>

<body>



  
  
  
  	<div id="centrale" class="rond">
	<div id="global" class="rond">
<!-- ---------------------------------------------------- -->
		<div id="entete" class="rond">
			<div id="header" class="rond">	<!-- Start Logo--> 					
					<div id="logo_title">
						  Pascalhome admin
					</div><!-- End Logo -->						
			</div><br />
		</div>
<!-- ---------------------------------------------------- -->
			<div id="menu" class="rond">
				<ul>
					<li><a href="../../../../">Accueil</a></li>
<!-- 				<li><a href="phenix/">Agenda</a></li> -->
					<li><a href="../../../../citations/">Citations</a></li>
					<li><a  href="../../../../fe/">Fond d'écran</a></li>
					<li><a  href="../../../../drole/">Images drôles</a></li>
					<li><a href="#"><font class="active">Admin</font></a></li>					
					<li><a href="../../../../zik/">Zik</a></li>
				</ul>
			</div>
<!-- ---------------------------------------------------- -->
<div id="main" class="rond">		
<!-- on affiche un formulaire permettant d'uploader une image -->
<br /><hr />
<div class="table1 rond" >
<!--<div>
Retour à la partie admin :<br /><br />
</div>-->
	<form action="index.html" method="post" border="0"><br />
	<input type="hidden" value="80" name="style" id="style" />
	<p><input type="submit" name="envoi" id="envoi" value="Retour à la partie admin" /></p><br />
	</form>

<br />
</div>
<br />
<div class="table2 rond" >
<!-- on affiche toutes les miniatures muniesd'un lien permettant de supprimer les images -->
Un clic sur la photo pour la supprimer de la galerie  :<br /><hr />

<?php
// l'étude de cette portion de code a déjà été faite plus haut
$tableau = array();
$dossier = opendir (''../../' .$sup '/mini/'');
while ($fichier = readdir ($dossier)) {
	if ($fichier != '.' && $fichier != '..' && $fichier != 'supprime.php') {
		$tableau[] = $fichier;
	}
}
closedir ($dossier);

$nbcol=3;
$nbpics = count($tableau);

if ($nbpics != 0) {
	echo '<table>';
	for ($i=0; $i<$nbpics; $i++){
		if($i%$nbcol==0) echo '<tr>';
		// on affiche un lien sur la photo permettant de la supprimer
		echo '<td class="cadre rond"><a href="supprime.php?del=' . $tableau[$i] . '"><img src="../../' .$sup. '/mini/' . $tableau[$i] . '" alt="Image" /></a></td>';
		if($i%$nbcol==($nbcol-1)) echo '</tr>';
	}
	echo '</table>';
}
else echo 'Aucune image à afficher';

// si un message d'erreur est défini, on l'affiche
if (isset($erreur)) echo '<br />' , $erreur;
?>
</div>
		</div>
<br /><br />



</div>
<!-- ---------------------------------------------------- -->	
			<div id="footer" class="rond">
				<div class="footer">Designed By : Padymen, V6.0</div>	
			</div>
<!-- ---------------------------------------------------- -->	
 
</div>  

</body>
</html>

Re: erreur d'affichage php

par albat » 28 mars 2012, 15:04

Montre-nous ton code en entier, stp.

Re: erreur d'affichage php

par pascalhome » 28 mars 2012, 14:37

j'ai trouvé la solution (enfin non, on m'a donné la solution sur un autre forum !), la voici :

echo '<td class="cadre rond"><a href="supprime.php?del=' . $tableau[$i] . '"><img src="../../' .$sup. '/mini/' . $tableau[$i] . '" alt="Image" /></a></td>';

Donc je me dis : génial c'est fonctionnel, en fait, non, ça ne fonctionne pas, j'explique : le bout de code en question fait partie d'un script qui me permet d'afficher une galerie photo et de supprimer juste par un clic l'image sélectionnée ainsi que sa miniature, avec ton dépannage maintenant les miniatures s'affichent correctement mais lorsque je veux essayer de suppimer une photos j'ai le message suivant :

Warning: opendir(../..//mini/) [function.opendir]: failed to open dir: No error in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 169

Warning: readdir(): supplied argument is not a valid Directory resource in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 170

Warning: closedir(): supplied argument is not a valid Directory resource in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 175
Aucune image à afficher
Image non reconnue

donc je me dis que je vais modifier cette ligne 169
$dossier = opendir ("../../" .$sup. "/mini/");

par :
$dossier = opendir ("../.." .$sup. "/mini/");

et la, évidement plus rien ne fonctionne
donc me revoila dans l'impasse

Re: erreur d'affichage php

par pascalhome » 28 mars 2012, 13:04

Bonjour xTG et merci de ta réponse, mais comment faire, je pense avoir essayer mais sans résultat

Re: erreur d'affichage php

par xTG » 28 mars 2012, 12:39

$sup n'est pas interprétée à l'intérieur de quote simple. :)
Il faut la sortir en la concaténant ou bien utiliser des quotes doubles. (la première solution conviendrait mieux)

erreur d'affichage php

par pascalhome » 28 mars 2012, 12:14

Bonjour,

avec ce bout de code, je n'ai pas l'affichage de l'image mais l'affichage du "alt" soit "Image" quelqu'un peux me dire ou est l'erreur?

merci
echo '<td class="cadre rond"><a href="supprime.php?del=' , $tableau[$i] , '"><img src="../../".$sup."/mini/' , $tableau[$i] , '" alt="Image" /></a></td>';