Page 1 sur 3

script PHP avec comportement bizarre

Posté : 06 juin 2008, 14:15
par sanfred
Bonjour, j'utilise le code suivant pour faire un album photo. Malheureusement je ne sais pas pourquoi sur certains répertoires, il m'affiche 10 à 15 photos puis un bout du code PHP lui-même... par exemple à la place de la 16° image, il me met "<img src=./toto" et après plus rien (ni les autres photos ni quoi que ce soit...) Je pense que ça vient d'un pb mémoire du serveur (hébergé chez Free, c'est un site perso) mais je voudrais avoir votre avis
<? 
// ************************************************************************ // 
function resize_photo($fichier_photo,$nom_mini,$larg_mini,$haut_mini,$quality,$nomrep) 
{ 
    //$nomrep = init_var($_GET["rep"]);
	$photo = imagecreatefromjpeg("$nomrep/$fichier_photo"); 
    $tab = getimagesize("$nomrep/$fichier_photo"); 
    $larg_photo = $tab[0]; 
    $haut_photo = $tab[1]; 
	
    if ($larg_photo/$haut_photo > intval(4/3)) 
         $haut_mini = $haut_photo*$larg_mini/$larg_photo; 
    elseif ($larg_photo/$haut_photo != intval(4/3)) 
         $larg_mini = $larg_photo*$haut_mini/$haut_photo; 
      $im = ImageCreateTrueColor($larg_mini,$haut_mini); 
      ImageCopyResampled($im,$photo,"0","0","0","0",$larg_mini,$haut_mini,$larg_photo,$haut_photo); 
    Imagejpeg($im,$nomrep."/".$nom_mini, $quality);     
    imagedestroy($im); 
    imagedestroy($photo); 
} 
// ************************************************************************ // 
function test_image($photo) 
{ 
  $nom_fichier = basename($photo); 
  if (strlen($nom_fichier) < 5)    return false; 
  $debut = substr($nom_fichier,0,1); 
  if ($debut=="_")    return false; 
  $extension = strtolower(substr($nom_fichier,-4)); 
  if ($extension==".jpg") return true; 
  return false; 
} 
// ************************************************************************ // 
function init_var(&$var) 
{ 
    if (!isset($var)) 
        $var=''; 
return $var; 
} 
// ************************************************************************ // 
function liste_rep($nomrep) 
{ $liste_photos=array();
  echo "<br><div align=center><table border=0 cellspacing=5>"; 
  $rep_ouvert = opendir (init_var($_GET["rep"]));//opendir("."); 
  //$nomrep = init_var($_GET["rep"]);
  $cpt_ligne = 0; 
  while ($lu=readdir($rep_ouvert)) 
		if ((test_image($lu))) $liste_photos[] = $lu; 
  closedir($rep_ouvert);
	sort($liste_photos, SORT_STRING);
	
		
  for ($cpt=0;$cpt<sizeof($liste_photos);$cpt++)
    { $lu = $liste_photos[$cpt];
		$annee=substr($lu,0,4);
		$mois=substr($lu,5,2);
		$jour=substr($lu,8,2);
		$tab = getimagesize("$nomrep/$lu",$info); 
		$iptc = iptcparse($info["APP13"]);
		$caption = $iptc["2#120"][0]; 

      if (test_image("$lu")) 
          { 
        $cpt_ligne++; 
        if ($cpt_ligne%8==1)    echo "<tr>\n"; 
                echo "<td valign=center align=center colspan=2>"; 
                echo "<a href=\"$_SERVER[PHP_SELF]?rep=$nomrep&photo=$lu\">";                 
                $nom_mini = "_pre_".$lu; 
                if (!file_exists($nom_mini)){ 
             resize_photo($lu,$nom_mini,120,90,50,$nomrep); 
				echo "<img src=\"$nomrep/$nom_mini\" alt=\"$jour/$mois/$annee : $caption\">"; }
                if ($cpt_ligne%8==0) echo "</tr>"; 
            } 
  } 
//if ($cpt_ligne%3!=0)    echo "<td colspan=2>&nbsp;</td></tr>"; 
echo "</table></div>"; 
} 

// ************************************************************************ // 

function aff_photo($photo,$reduc,$diaporama, $nomrep){ 
	$tab_photos=array(); 
	$rep_ouvert = opendir (init_var($_GET["rep"]));
	while ($lu=readdir($rep_ouvert)) 
		if ((test_image($lu))) $tab_photos[] = $lu;
	closedir($rep_ouvert);
	sort($tab_photos, SORT_STRING);
	$indice=-1; 
	for ($cpt=0;$cpt<sizeof($tab_photos);$cpt++) 
		if ($tab_photos[$cpt] == $photo) $indice=$cpt; 
/*********************************************************************/
/**************              Liens             ***********************/
/*********************************************************************/
	echo "<div align=\"left\">";
	if ($diaporama==0) echo "<a href=\"$_SERVER[PHP_SELF]?photo=$photo&diaporama=1&rep=$nomrep\">Débuter le Diaporama</a>"; 
				else echo "<a href=\"$_SERVER[PHP_SELF]?photo=$photo&rep=$nomrep\">Arrêt du Diaporama</a>"; 
	echo "<br><a href=\"listerep.php\">Menu principal</a>"; 
	echo "<br><a href=\"$_SERVER[PHP_SELF]?rep=$nomrep\">Revenir aux imagettes</a>";
	echo "</div>";
/*********************************************************************/
	if ((!test_image($photo)) || (!file_exists($nomrep."/".$photo)) || ($indice== -1)) 
		{ 
		echo "<h2 align=center>Le fichier '$photo' '$indice' INVALIDE)</h2>"; 
		return false; 
		} 
	$taille = sizeof($tab_photos); 
	echo "<br><div align=center><table border=0 cellspacing=5>"; 
	echo "<tr><td valign=center align=center colspan=7>";
/*********************************************************************/
/**************             Image              ***********************/
/*********************************************************************/

	$tab = getimagesize("$nomrep/$photo",$info); 
	$larg_photo = $tab[0]; 
	$haut_photo = $tab[1]; 
	if (($reduc) && ($larg_photo>490 || $haut_photo>370)){ 
		echo "Pour voir la photo en résolution maximale cliquez sur l'image...</i><br>"; 
		//$extension = strtolower(substr($nom_fich,-4));
		$annee=substr($photo,0,4);
		$mois=substr($photo,5,2);
		$jour=substr($photo,8,2);
		
		$nom_moy = _480_.$photo; 
		if (!file_exists($nomrep."/".$nom_moy)) 
		   resize_photo($photo,$nom_moy,480,360,90,$nomrep); 
		echo "<a target=\"_blank\" href=\"$nomrep/$photo\"><img src=\"$nomrep/$nom_moy\" alt=$fichier_photo></a>";
		echo "</tr><tr><td valign=center align=center colspan=7>";
 		echo ($jour."/".$mois."/".$annee);
		echo "</td></tr>";
		echo "<tr><td valign=center align=center colspan=7>";
						$iptc = iptcparse($info["APP13"]);
						$caption = $iptc["2#120"][0]; 
						echo ($caption);
		echo "</td></tr>";
	 

		if ($diaporama==1){ 
			echo "<script>"; 
			if ($indice==$taille-1) $next=$tab_photos[0]; 
				else $next=$tab_photos[$indice+1]; 
			echo    "window.setTimeout('location.replace(\"$_SERVER[PHP_SELF]?photo=$next&diaporama=1&rep=$nomrep\")',5000)"; 
			echo "</script>"; 
			echo "</BODY></HTML>"; 
						} 
	} 
	else 
	{     
		echo "<div align=\"center\">$nomrep/$photo</div><br> 
		<div align=center> 
		<img src=\"$nomrep/$photo\" alt=\"$photo\"><br>"; 
		echo "</div>"; 
	   
	} 
	
/*********************************************************************/
/**************      Bandeau imagettes         ***********************/
/*********************************************************************/
	
	echo "<tr>\n"; 
	echo "<td valign=center align=center>"; 
	
	if ($indice>0) 
	{ 
	  $next=$tab_photos[0]; 
	  echo "<a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\">Premier <br></a>"; 
	} 
	
	if ($indice>5) 
	{ 
	  $next=$tab_photos[$indice-5]; 
	  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> << <br></a>"; 
	} 
	
	if ($indice>0) 
	{ 
	  $next=$tab_photos[$indice-1]; 
	  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> < </a>"; 
	} 


	for($i=0;$i<5;$i++) 
	{ 
	  $j=intval(abs($indice/5))*5+$i; 
	   
	  $lu=$tab_photos[$j]; 
	  if ($j<$taille) 
	  { 
		echo "<td valign=center align=center>"; 
		echo "<a href=\"$_SERVER[PHP_SELF]?photo=$lu&rep=$nomrep\">";                 
			$nom_mini = "_pre_".$lu; 
			$k=$j+1; 

		echo "<img src=\"$nomrep/$nom_mini\" border=0 alt=$lu></a>";        
	  } 
	} 

	echo "<td valign=center align=center>"; 
	
	if ($indice<$taille-1) 
	{ 
	  $next=$tab_photos[$indice+1]; 
	  echo "  <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> > <br></a>"; 
	} 
	if ($indice<$taille-5) 
	{ 
	  $next=$tab_photos[$indice+5]; 
	  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> >> <br></a>"; 
	} 
	if ($indice<$taille-1) 
	{ 
	  $next=$tab_photos[$taille-1]; 
	  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> Dernier</a>"; 
	} 
	
	echo "</tr>"; 

} 
// ************************************************************************ // 
$photo = init_var($_GET["photo"]); 
$zoom = init_var($_GET["zoom"]); 
$diaporama = init_var($_GET["diaporama"]);
$repertoire = opendir (init_var($_GET["rep"]));
$nomrep = init_var($_GET["rep"]);

if ($zoom>0)    $reduc = false; 
          else $reduc = true; 
$photo = str_replace('../','',$photo); 
$photo = str_replace('http://','',$photo); 
if (!empty($photo)) $rep = dirname($photo); 

$nb_photos=0; 

while ($lu=readdir($repertoire)) 
    if ((test_image($lu))) $nb_photos++; 
if ($nb_photos!=0) 
{ 
    echo "<b>($nb_photos photo</b>"; 
    if ($nb_photos>1) echo "<b>s</b>"; 
	echo "<b>)</b>";
} 

if (empty($photo)) liste_rep($nomrep); 
else 
    {//$photo=$nomrep."/".$photo;
	aff_photo($photo,$reduc,$diaporama,$nomrep); 
echo "</td></tr><tr></table>"; }
?> 
</body>
</html>

Posté : 06 juin 2008, 14:28
par sanfred
euh je précise c'est la fonction liste_rep qui pose problème...

Posté : 06 juin 2008, 18:56
par ouckileou
On peut avoir un exemple précis ? Lien ou screenshot

[RESOLU]

Posté : 07 juin 2008, 21:39
par sanfred
une capture d'écran ça irait? non parce que c'est dans une partie photos privées et ça m'embête de mettre les codes d'accès en ligne...si ça suffit, voilou :
Image
Image
je précise qu'il n'y a rien de spécial dans le nom des photos "qui plantent"
Quant au code source de la page ben... il est normal sauf qu'il s'arrête à ce qu'on voit écrit dans la page affichée...

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 07 juin 2008, 21:54
par sanfred
Encore plus étrange: l'image 1 que j'ai mise ci dessus est apellée avec http://monsite.fr/indextotal.php?rep=./monrepertoire. Si maintenant je l'appelle sans mettre le ./, ben il m'affiche la meme chose sauf que le texte en dernier n'est plus <img src="./Annee2 mais <img src="Annee2008/Clermont2008/_pre_2008-01-20_24.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Ayme...
Donc il en écrit un petit peu plus.... mais il s'arrête tjs au même endroit (en nb de photos)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 07 juin 2008, 22:11
par ouckileou
Dans ta fonction list_rep je ne vois aucune balise </td> ni </a>, c'est normal ? Regarde dans le source si tout est bien fermé (avec Firefox tu as des extensions qui te formate du HTML et t'affichent les blocs, tu verrais bien si tout est propre)

Donc rajoute ça si elles manquent, et sors les variables du echo :
 echo "<img src=\"$nomrep/$nom_mini\" alt=\"$jour/$mois/$annee : $caption\">"; } 
devient
 echo '<img src="'.$nomrep.'/'.$nom_mini.'" alt="'.$jour."/".$mois."/".$annee." : ".$caption.'">'; } 
Et si ça ne change rien, poste un bout du code source (la fin). Parceque si il a forcément quelquechose d'anormal, sinon ça marcherait :)

Posté : 07 juin 2008, 22:39
par sanfred
Merci pour l'aide. Alors voilà j'ai tout bie modifié comme tu me l'as dit et j'ai fait quelques modif sur le script en fct de choses lues sur les fcts sur phpsources.org (histoire d'optimiser la mémoire...). Voici le "new" script:
<? 
// ************************************************************************ // 
function resize_photo($fichier_photo,$nom_mini,$larg_mini,$haut_mini,$quality,$nomrep) 
{ 
    $photo = imagecreatefromjpeg("$nomrep/$fichier_photo"); 
    if (!$photo) echo "Erreur de chargement de l'image ";
	list($larg_photo,$haut_photo) = getimagesize("$nomrep/$fichier_photo"); 
	
    if ($larg_photo/$haut_photo > intval(4/3)) 
         $haut_mini = $haut_photo*$larg_mini/$larg_photo; 
    elseif ($larg_photo/$haut_photo != intval(4/3)) 
         $larg_mini = $larg_photo*$haut_mini/$haut_photo; 
      $im = @ImageCreateTrueColor($larg_mini,$haut_mini)
		or die("Impossible de crée un flux d'image GD");

    ImageCopyResampled($im,$photo,"0","0","0","0",$larg_mini,$haut_mini,$larg_photo,$haut_photo); 
    Imagejpeg($im,$nomrep."/".$nom_mini, $quality);     
    @imagedestroy($im); 
    @imagedestroy($photo); 
} 
// ************************************************************************ // 
function test_image($photo) 
{ 
  $nom_fichier = basename($photo); 
  if (strlen($nom_fichier) < 5)    return false; 
  $debut = substr($nom_fichier,0,1); 
  if ($debut=="_")    return false; 
  $extension = strtolower(substr($nom_fichier,-4)); 
  if ($extension==".jpg") return true; 
  return false; 
} 
// ************************************************************************ // 
function init_var(&$var) 
{ 
    if (!isset($var)) 
        $var=''; 
return $var; 
} 
// ************************************************************************ // 
function liste_rep($nomrep) 
{ $liste_photos=array();
  echo "<br><div align=center><table border=0 cellspacing=5>"; 
  $rep_ouvert = opendir (init_var($_GET["rep"]));
  $cpt_ligne = 0; 
  while (false !== ($lu = readdir($rep_ouvert)))
		if ((test_image($lu))) $liste_photos[] = $lu; 
  closedir($rep_ouvert);
  sort($liste_photos, SORT_STRING);
	
		
  for ($cpt=0;$cpt<sizeof($liste_photos);$cpt++)
    { $lu = $liste_photos[$cpt];
		$annee=substr($lu,0,4);
		$mois=substr($lu,5,2);
		$jour=substr($lu,8,2);
		$tab = getimagesize("$nomrep/$lu",$info); 
		$iptc = iptcparse($info["APP13"]);
		$caption = $iptc["2#120"][0]; 

        $cpt_ligne++; 
        if ($cpt_ligne%8==1)    echo "<tr>\n"; 
                echo "<td valign=center align=center>"; 
                echo "<a href=\"$_SERVER[PHP_SELF]?rep=$nomrep&photo=$lu\">";                 
                $nom_mini = "_pre_".$lu; 
                if (!file_exists($nom_mini)){ 
                  resize_photo($lu,$nom_mini,120,90,50,$nomrep); 
				  echo '<img src="'.$nomrep.'/'.$nom_mini.'" alt="'.$jour."/".$mois."/".$annee." : ".$caption.'"></a></td>'; } 

                if ($cpt_ligne%8==0) echo "</tr>"; 
  } 
echo "</table></div>"; 
} 

// ************************************************************************ // 

function aff_photo($photo,$reduc,$diaporama, $nomrep){ 
	$tab_photos=array(); 
	$rep_ouvert = opendir (init_var($_GET["rep"]));
	while (false !== ($lu = readdir($rep_ouvert))) //while ($lu=readdir($rep_ouvert)) 
		if ((test_image($lu))) $tab_photos[] = $lu;
	closedir($rep_ouvert);
	sort($tab_photos, SORT_STRING);
	$indice=-1; 
	for ($cpt=0;$cpt<sizeof($tab_photos);$cpt++) 
		if ($tab_photos[$cpt] == $photo) $indice=$cpt; 
/*********************************************************************/
/**************              Liens             ***********************/
/*********************************************************************/
	echo "<div align=\"left\">";
	if ($diaporama==0) echo "<a href=\"$_SERVER[PHP_SELF]?photo=$photo&diaporama=1&rep=$nomrep\">Débuter le Diaporama</a>"; 
				else echo "<a href=\"$_SERVER[PHP_SELF]?photo=$photo&rep=$nomrep\">Arrêt du Diaporama</a>"; 
	echo "<br><a href=\"listerep.php\">Menu principal</a>"; 
	echo "<br><a href=\"$_SERVER[PHP_SELF]?rep=$nomrep\">Revenir aux imagettes</a>";
	echo "</div>";
/*********************************************************************/
	if ((!test_image($photo)) || (!file_exists($nomrep."/".$photo)) || ($indice== -1)) 
		{ 
		echo "<h2 align=center>Le fichier '$photo' '$indice' INVALIDE)</h2>"; 
		return false; 
		} 
	$taille = sizeof($tab_photos); 
	echo "<br><div align=center><table border=0 cellspacing=5>"; 
	echo "<tr><td valign=center align=center colspan=7>";
/*********************************************************************/
/**************             Image              ***********************/
/*********************************************************************/

	$tab = getimagesize("$nomrep/$photo",$info); 
	$larg_photo = $tab[0]; 
	$haut_photo = $tab[1]; 
	if (($reduc) && ($larg_photo>490 || $haut_photo>370)){ 
		echo "Pour voir la photo en résolution maximale cliquez sur l'image...</i><br>"; 
		//$extension = strtolower(substr($nom_fich,-4));
		$annee=substr($photo,0,4);
		$mois=substr($photo,5,2);
		$jour=substr($photo,8,2);
		
		$nom_moy = _480_.$photo; 
		if (!file_exists($nomrep."/".$nom_moy)) 
		   resize_photo($photo,$nom_moy,480,360,90,$nomrep); 
		echo "<a target=\"_blank\" href=\"$nomrep/$photo\"><img src=\"$nomrep/$nom_moy\" alt=$fichier_photo></a>";
		echo "</tr><tr><td valign=center align=center colspan=7>";
 		echo ($jour."/".$mois."/".$annee);
		echo "</td></tr>";
		echo "<tr><td valign=center align=center colspan=7>";
						$iptc = iptcparse($info["APP13"]);
						$caption = $iptc["2#120"][0]; 
						echo ($caption);
		echo "</td></tr>";
	 

		if ($diaporama==1){ 
			echo "<script>"; 
			if ($indice==$taille-1) $next=$tab_photos[0]; 
				else $next=$tab_photos[$indice+1]; 
			echo    "window.setTimeout('location.replace(\"$_SERVER[PHP_SELF]?photo=$next&diaporama=1&rep=$nomrep\")',5000)"; 
			echo "</script>"; 
			echo "</BODY></HTML>"; 
						} 
	} 
	else 
	{     
		echo "<div align=\"center\">$nomrep/$photo</div><br> 
		<div align=center> 
		<img src=\"$nomrep/$photo\" alt=\"$photo\"><br>"; 
		echo "</div>"; 
	   
	} 
	
/*********************************************************************/
/**************      Bandeau imagettes         ***********************/
/*********************************************************************/
	
	echo "<tr>\n"; 
	echo "<td valign=center align=center>"; 
	
	if ($indice>0) 
	{ 
	  $next=$tab_photos[0]; 
	  echo "<a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\">Premier <br></a>"; 
	} 
	
	if ($indice>5) 
	{ 
	  $next=$tab_photos[$indice-5]; 
	  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> << <br></a>"; 
	} 
	
	if ($indice>0) 
	{ 
	  $next=$tab_photos[$indice-1]; 
	  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> < </a>"; 
	} 


	for($i=0;$i<5;$i++) 
	{ 
	  $j=intval(abs($indice/5))*5+$i; 
	   
	  $lu=$tab_photos[$j]; 
	  if ($j<$taille) 
	  { 
		echo "<td valign=center align=center>"; 
		echo "<a href=\"$_SERVER[PHP_SELF]?photo=$lu&rep=$nomrep\">";                 
			$nom_mini = "_pre_".$lu; 
			$k=$j+1; 

		echo "<img src=\"$nomrep/$nom_mini\" border=0 alt=$lu></a>";        
	  } 
	} 

	echo "<td valign=center align=center>"; 
	
	if ($indice<$taille-1) 
	{ 
	  $next=$tab_photos[$indice+1]; 
	  echo "  <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> > <br></a>"; 
	} 
	if ($indice<$taille-5) 
	{ 
	  $next=$tab_photos[$indice+5]; 
	  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> >> <br></a>"; 
	} 
	if ($indice<$taille-1) 
	{ 
	  $next=$tab_photos[$taille-1]; 
	  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next&rep=$nomrep\"> Dernier</a>"; 
	} 
	
	echo "</tr>"; 

} 
// ************************************************************************ // 
$photo = init_var($_GET["photo"]); 
$zoom = init_var($_GET["zoom"]); 
$diaporama = init_var($_GET["diaporama"]);
$repertoire = opendir (init_var($_GET["rep"]));
$nomrep = init_var($_GET["rep"]);

if ($zoom>0)    $reduc = false; 
          else $reduc = true; 
$photo = str_replace('../','',$photo); 
$photo = str_replace('http://','',$photo); 
//if (!empty($photo)) $rep = dirname($photo); 

$nb_photos=0; 

while (false !== ($lu = readdir($repertoire))) //while ($lu=readdir($repertoire)) 
    if ((test_image($lu))) $nb_photos++; 
closedir($repertoire);
if ($nb_photos!=0) 
{ 
    echo "<b>($nb_photos photo</b>"; 
    if ($nb_photos>1) echo "<b>s</b>"; 
	echo "<b>)</b>";
} 

if (empty($photo)) liste_rep($nomrep); 
else 
    {//$photo=$nomrep."/".$photo;
	aff_photo($photo,$reduc,$diaporama,$nomrep); 
echo "</td></tr><tr></table>"; }
?> 
</body>
</html>
et la source de la page affichée (qui ne marche tjs pas correctement of course.. :( )

Code : Tout sélectionner

<b>(42 photo</b><b>s</b><b>)</b><br><div align=center><table border=0 cellspacing=5><tr> <td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-12_1.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-12_1.JPG" alt="12/01/2008 : Les frerots..."></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-12_2.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-12_2.JPG" alt="12/01/2008 : Les frerots..."></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-12_3.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-12_3.JPG" alt="12/01/2008 : Les frerots..."></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-12_4.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-12_4.JPG" alt="12/01/2008 : Les frerots..."></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-12_5.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-12_5.JPG" alt="12/01/2008 : Les frerots..."></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-13_1.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-13_1.JPG" alt="13/01/2008 : Les frerots..."></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_01.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_01.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_02.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_02.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td></tr><tr> <td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_03.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_03.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_04.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_04.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_05.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_05.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_06.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_06.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_07.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_07.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_08.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_08.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_09.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_09.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_10.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_10.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td></tr><tr> <td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_11.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_11.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_12.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_12.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_13.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_13.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_14.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_14.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_15.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_15.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_16.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_16.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_17.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_17.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_18.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_18.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td></tr><tr> <td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_19.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_19.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_20.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_20.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_21.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_21.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_22.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_22.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_23.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_23.JPG" alt="20/01/2008 : Quad et foot à Corent avec Maéva, Thomas, Christelle et Aymeric. "></a></td><td valign=center align=center><a href="/private/photosCE/indextotal.php?rep=./Annee2008/Clermont2008&photo=2008-01-20_24.JPG"><img src="./Annee2008/Clermont2008/_pre_2008-01-20_24.JPG
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 07 juin 2008, 22:42
par sanfred
Question à 2 balles: le @ qu'on voit dans le code dans la fonction resize_photo, ça sert à quoi? je me demande si la libération des espaces mémoire utilisés pour ça fonctionne bien...

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 07 juin 2008, 22:53
par ouckileou
Le @ sert à désactiver l'affichage des erreurs. Tu peux les enlever tiens

Et attend que ton script affiche toutes les photos avant de chercher à optimiser la mémoire :lol:

Il doit y avoir un problème après et le script n'écrit plus,essaie d'afficher le contenu des variables de cette ligne :
echo '<img src="'.$nomrep.'/'.$nom_mini.'" alt="'.$jour."/".$mois."/".$annee." : ".$caption.'"></a></td>'; }  
Mais sans le HTML, juste les variables.

Posté : 07 juin 2008, 23:09
par sanfred
bah je cherche à optimiser justement parce que je pensais que ça pouvait venir de là...
Je me tape souvent une "erreur 500: interne au serveur"...c'est peut etre lié?
Alors , j'ai enlevé les @ : pas de message...
J'ai affiché les différentes variables: RAS. Elles sont coorectes, pas de valeurs bizarres, e en + c'est les mêmes sur beaucoup de photos ce qui me permet d'écrater un pb de contenu de ces variables. Enfin, j'ai supprimé la photo sur laquelle ça bloquait et ça bloque sur la suivante, c'est donc pas lié à la photo elle-même....

ARGGGGGGGGGGGGG :evil:

Posté : 10 juin 2008, 10:51
par sanfred
HELP !!! ce script me rend fou... :lol:

Posté : 10 juin 2008, 11:56
par ouckileou
Franchement je ne sais pas d'où ça peut venir

Ton erreur 500 tu l'as en local ou sur ton serveur en ligne ? Regarde dans les logs si tu trouves quelquechose à tout hasard

Posté : 10 juin 2008, 12:19
par sanfred
sur mon serveur en ligne... mon PC n'est pas assez "puissant" pour suporter le serveur... il se met à ramer grave donc j'ai laissé tomber...
Bah sinon je cherche à poser mes photos dans des répertoires. J'ai un script qui m'affiche la structure des répertoires et quand je cique sur l'un d'entre eux ça lance mon script qui rend fou... Peut-etre qu'il existe d'autre scripts qui font la même chose?... si vous pouvez m'aiguiller ce serait sympa !
Merci

Posté : 10 juin 2008, 12:42
par sanfred
ca pourrait pas venir d'une variable qu'il faudrait "vider"? j'y connais pas grand chose en PHP alors je tente...

Posté : 10 juin 2008, 15:10
par sanfred
ah du nouveau... mais tjs incompréhensible pour moi...
J'utilise le script de base que j'avais trouvé, à savoir
<? 
// ************************************************************************ // 
function resize_photo($fichier_photo,$nom_mini,$larg_mini,$haut_mini,$quality) 
{ 
    $photo = imagecreatefromjpeg("$fichier_photo"); 
    $tab = getimagesize("$fichier_photo"); 
    $larg_photo = $tab[0]; 
    $haut_photo = $tab[1]; 

    if ($larg_photo/$haut_photo > intval(4/3)) 
         $haut_mini = $haut_photo*$larg_mini/$larg_photo; 
    elseif ($larg_photo/$haut_photo != intval(4/3)) 
         $larg_mini = $larg_photo*$haut_mini/$haut_photo; 
      $im = ImageCreateTrueColor($larg_mini,$haut_mini); 
      ImageCopyResampled($im,$photo,"0","0","0","0",$larg_mini,$haut_mini,$larg_photo,$haut_photo); 
    Imagejpeg($im,$nom_mini, $quality);     
    @imagedestroy($im); 
    @imagedestroy($photo); 
} 
// ************************************************************************ // 
function test_image($photo) 
{ 
  $nom_fichier = basename($photo); 
  if (strlen($nom_fichier) < 5)    return false; 
  $debut = substr($nom_fichier,0,1); 
  if ($debut=="_")    return false; 
  $extension = strtolower(substr($nom_fichier,-4)); 
  if ($extension==".jpg") return true; 
  return false; 
} 
// ************************************************************************ // 
function init_var(&$var) 
{ 
    if (!isset($var)) 
        $var=''; 
return $var; 
} 
// ************************************************************************ // 
function liste_rep() 
{ 
  echo "<br><div align=center><table border=0 cellspacing=5>"; 
  $rep_ouvert = opendir("."); 
  $cpt_ligne = 0; 
  while ($lu=readdir($rep_ouvert)) 
    { 
      if (test_image("$lu")) 
          { 
        $cpt_ligne++; 
        if ($cpt_ligne%5==1)    echo "<tr>\n"; 
                echo "<td valign=center align=center>"; 
                echo "<a href=\"$_SERVER[PHP_SELF]?photo=$lu\">";                 
                $nom_mini = "_pre_".$lu; 
                if (!file_exists($nom_mini)) 
             resize_photo($lu,$nom_mini,120,90,99); 
        echo "<img src=\"$nom_mini\" border=0 alt=$lu></a></td>"; 
                if ($cpt_ligne%5==0) echo "</tr>"; 
            } 
  } 
//if ($cpt_ligne%3!=0)    echo "</tr>"; 
echo "</table></div>"; 
} 

// ************************************************************************ // 

function aff_photo($photo,$reduc,$diaporama) 
{ 
$tab_photos=array(); 
$rep_ouvert = opendir("."); 

while ($lu=readdir($rep_ouvert)) 
    if ((test_image($lu))) $tab_photos[] = $lu; 

$indice=-1; 
for ($cpt=0;$cpt<sizeof($tab_photos);$cpt++)    if ($tab_photos[$cpt] == $photo) $indice=$cpt; 

if ((!test_image($photo)) || (!file_exists($photo)) || ($indice== -1)) 
    { 
    echo "<h2 align=center>Le fichier '$photo' INVALIDE)</h2>"; 
    return false; 
    } 
$taille = sizeof($tab_photos); 

echo "<br><div align=center><table border=0 cellspacing=5>"; 
echo "<tr>\n"; 

echo "<td valign=center align=center colspan=2>"; 

if ($indice>0) 
{ 
  $next=$tab_photos[0]; 
  echo "<a href=\"$_SERVER[PHP_SELF]?photo=$next\">Premier</a>"; 
} 

if ($indice>5) 
{ 
  $next=$tab_photos[$indice-5]; 
  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next\"><<</a>"; 
} 

if ($indice>0) 
{ 
  $next=$tab_photos[$indice-1]; 
  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next\"><</a>"; 
} 


for($i=0;$i<5;$i++) 
{ 
  $j=intval(abs($indice/5))*5+$i; 
   
  $lu=$tab_photos[$j]; 
  if ($j<$taille) 
  { 
    echo "<td valign=center align=center colspan=2>"; 
    echo "<a href=\"$_SERVER[PHP_SELF]?photo=$lu\">";                 
        $nom_mini = "_pre_".$lu; 
        $k=$j+1; 
    echo "<img src=\"$nom_mini\" border=0 alt=$lu>($k)</a>"; 
       
  } 
} 

echo "<td valign=center align=center colspan=2>"; 

if ($indice<$taille-1) 
{ 
  $next=$tab_photos[$indice+1]; 
  echo "  <a href=\"$_SERVER[PHP_SELF]?photo=$next\">></a>"; 
} 
if ($indice<$taille-5) 
{ 
  $next=$tab_photos[$indice+5]; 
  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next\">>></a>"; 
} 
if ($indice<$taille-1) 
{ 
  $next=$tab_photos[$taille-1]; 
  echo "    <a href=\"$_SERVER[PHP_SELF]?photo=$next\">Dernier</a>"; 
} 

echo "<br><br><a href=\"../index.php\">Menu principal</a>"; 

echo "</tr>"; 
if ($diaporama==0) echo "<a href=\"$_SERVER[PHP_SELF]?photo=$photo&diaporama=1\">Diaporama</a>"; 
            else echo "<a href=\"$_SERVER[PHP_SELF]?photo=$photo\">Arrêt du Diaporama</a>"; 

$tab = getimagesize("$photo"); 
$larg_photo = $tab[0]; 
$haut_photo = $tab[1]; 
echo "<div align=\"center\">"; 
if (($reduc) && ($larg_photo>490 || $haut_photo>370)) 
    { 
    echo "Pour voir la photo en résolution maximale veuillez cliquer sur l'image...</i><br>"; 
    $extension = strtolower(substr($nom_fich,-4)); 
     
    $nom_moy = _480_.$photo; 
  if (!file_exists($nom_moy)) 
       resize_photo($photo,$nom_moy,480,360,95); 
  echo "<a href=\"?photo=$photo&zoom=1\"><img src=\"$nom_moy\" border=0 alt=$fichier_photo></a>"; 
    echo "</div>"; 
    if ($diaporama==1) 
    { 
      // echo $indice." ".$taille." ".$tab_photos[0]." ".$tab_photos[1]; 
    echo "<script>"; 
    if ($indice==$taille-1) $next=$tab_photos[0]; 
      else $next=$tab_photos[$indice+1]; 
    echo    "window.setTimeout('location.replace(\"$_SERVER[PHP_SELF]?photo=$next&diaporama=1\")',5000)"; 
    echo "</script>"; 
    echo "</BODY></HTML>"; 
  } 


    } 
else 
{     
    echo "<div align=\"center\">$photo</div><br> 
    <div align=center> 
    <img src=\"$photo\" alt=\"$photo\"><br>"; 
    echo "</div>"; 
   
} 
} 
// ************************************************************************ // 
$photo = init_var($_GET["photo"]); 
$zoom = init_var($_GET["zoom"]); 
$diaporama = init_var($_GET["diaporama"]); 
if ($zoom>0)    $reduc = false; 
          else $reduc = true; 
$photo = str_replace('../','',$photo); 
$photo = str_replace('http://','',$photo); 
if (!empty($photo)) $rep = dirname($photo); 
//echo "<tr><td bgcolor=\"#7788AA\" align=\"center\"><b>"; 

$nb_photos=0; 
$repertoire = opendir("."); 
while ($lu=readdir($repertoire)) 
    if ((test_image($lu))) $nb_photos++; 
if ($nb_photos!=0) 
{ 
    echo "($nb_photos photo"; 
    if ($nb_photos>1) echo 's'; 
} 
//echo ")</b></td></tr><tr><td bgcolor=\"#8899BB\">"; 
if (empty($photo))liste_rep(); 
else 
    aff_photo($photo,$reduc,$diaporama); 
echo "</td></tr><tr></table>"; 

?> 

et j'obtiens quelques images (plus qu'avant) puis ceci
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 38672 bytes) in /mnt/141/sdc/c/c/sanfrecoleth/private/photosCE/Annee2008/Clermont2008/indexlocal.php on line 5