Aller au contenu

Problème PHP avec galerie flash...?


Sujets conseillés

Posté (modifié)

Bonjour à toutes et à tous.

Je me permet de venir poster sur le forum car j'ai un problème concernant le fonctionnement d'une galerie de photos en flash, que j'ai achetée sur le net il y à peu.

Ce système de galerie est composé de plusieurs fichiers :

- flashgallery.php > Je pense que le problème vient de lui.

- default.xml > Contient les paramétrages de couleur en héxa, et fonctionne bien.

- flashgallery.swf > Galerie, dont je n'ai pas la source.

Voilà, maintenant je vais rentrer dans le vif du sujet. J'utilise sur mon site un système d'includes dont le code est le suivant :

<?php 
if (!isset($_GET['page'])) $page= 'accueil'; else $page= $_GET['page'];
switch($page)
{
case 'accueil': include ('inc/accueil.php');break;
case 'page1': include ('inc/page1.php');break;
case 'page2': include ('inc/page2.php');break;
case 'galerie': include ('inc/gal.php');break;
}
?>

Ce qui veut donc dire que l'appel de mes pages se font sous la forme :

<a href="index.php?page=galerie"...

Bien sur, jusque là tout fonctionne bien.

Ensuite, concernant la hiérarchie de mes fichiers/dossiers, elle est la suivante :

index.php

/gal/ ( dans lequel nous trouvons : flashgallery.php, flashgallery.swf et default.xml )

/gal/img/ ( dans lequel nous trouvons les images chargées par flashgallery.php )

/inc/ ( dans lequel nous trouvons mes includes, notamment la page qui contient la galerie, nous l'appellerons "gal.php". )

Voilà pour la structure. Passons maintenant aux sources.

flashgallerie.php :

<?php
$allowed_formats = array("jpg", "jpeg", "JPG", "JPEG", "png", "PNG");
$exclude_files = array(
"_derived",
"_private",
"_vti_cnf",
"_vti_pvt",
"vti_script",
"_vti_txt"
); // add any other folders or files you wish to exclude from the gallery.

$listDir = array();

function detectUTF8($string)
{
return preg_match('%(?:
[\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
|\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
|\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
|\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
|[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
|\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)+%xs', $string);
}

function cp1251_utf8( $sInput )
{
$sOutput = "";

for ( $i = 0; $i < strlen( $sInput ); $i++ )
{
$iAscii = ord( $sInput[$i] );

if ( $iAscii >= 192 && $iAscii <= 255 )
$sOutput .= "".( 1040 + ( $iAscii - 192 ) ).";";
else if ( $iAscii == 168 )
$sOutput .= "".( 1025 ).";";
else if ( $iAscii == 184 )
$sOutput .= "".( 1105 ).";";
else
$sOutput .= $sInput[$i];
}

return $sOutput;
}

function encoding($string){
if (function_exists('iconv')) {
if (@!iconv('utf-8', 'cp1251', $string)) {
$string = iconv('cp1251', 'utf-8', $string);
}
return $string;
} else {
if (detectUTF8($string)) {
return $string;
} else {
return cp1251_utf8($string);
}
}
}


function ReadFolderDirectory($dir)
{
global $listDir,$exclude_files,$allowed_formats;
if($handler = opendir($dir))
{
{
while (($sub = readdir($handler)) !== FALSE)
{

if ($sub != "." && $sub != ".." && $sub != "Thumb.db" && array_search($sub, $exclude_files)===false)
{
$ext = substr($sub, strrpos($sub, ".")+1);
if(is_file($dir."/".$sub) && array_search($ext, $allowed_formats)!==false ) $listDir[] = $dir."/".$sub;
elseif(is_dir($dir."/".$sub)) ReadFolderDirectory($dir."/".$sub);
}
}
}
closedir($handler);
}
}

if(isset($_GET['file_dir'])) ReadFolderDirectory($_GET['file_dir']);

natcasesort($listDir);

print '<?xml version="1.0" encoding="utf-8"?>';
print '
<pics>';

$directory= $_SERVER['HTTP_HOST'] .$_SERVER['PHP_SELF'];
$directory=dirname($directory);

foreach ($listDir as $val)
{
$title = substr(strrchr($val, '/'), 1);
$title=encoding($title);
$val=encoding($val);

print '
<pic src="'.'http://'.$directory.'/'.$val.'" title="'.$title.'" />';
}

print '
</pics>';
?>

Code inclut dans mon fichier "gal.php" :

<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="600">
<param name="movie" value="gal/flashgallery.swf" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<param name="allowFullScreen" value="true" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="gal/flashgallery.swf" width="800" height="600">
<!--<![endif]-->
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<PARAM NAME=FlashVars VALUE="content_path=gal/img&color_path=gal/default.xml&script_path=gal/flashgallery.php">
<!-- Le navigateur affichera le contenu alternatif suivant pour les utilisateurs d'un lecteur Flash de version 6.0 ou de versions plus anciennes. -->
<div>
<h4>Le contenu de cette page nécessite une version plus récente d’Adobe Flash Player.</h4>
<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtenir le lecteur Adobe Flash" width="112" height="33" /></a></p>
</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>

Voilà pour les informations ! J'espère que tout le monde s'y retrouve. Bien sur dans un souci de confidentialité, je ne peux malheureusement pas vous donner l'adresse du site en construction !

De mon coté je pense que le problème vient du script flashgallery.php qui ne serait pas adapté à mon système d'includes, seulement je suis débutant en php, vos conseils sont donc bien entendu la bienvenue...

Je précise pour finir que la galerie fonctionne très bien dans le cadre d'un fonctionnement dans système d'include.

Un grand merci par avance !

Cordialement.

Hop hop hop...et voilà je m'y perd ! Désolé j'en oublie le principal. Le problème est donc : L'animation flash se charge, mais les images non :)

Modifié par Cr4sH
Posté

De loin, je dirais que ton problème est probablement le content_path, qui devrait être img et pas gal/img (il doit à mon avis être relatif à l'endroit où se trouve flashgallery.php).

Non?

Jacques.

Posté

De loin, je dirais que ton problème est probablement le content_path, qui devrait être img et pas gal/img (il doit à mon avis être relatif à l'endroit où se trouve flashgallery.php).

Non?

Jacques.

Réponse pertinente, et je vous en remercie !

Seulement, j'ai déjà essayé :hypocrite: , le résultat est le même.

Posté (modifié)

Et ça donne quoi quand tu charges http://nomdetonsite/gal/flashgallery.php?file_dir=img (ou gal/img ou encore /chemin/absolu/vers/gal/img)? Ca devrait te donner un fichier XML simpliste avec la liste des images sous forme <pic src=xxx title=yyy>. Si c'est le cas, les adresses (xxx) sont-elles correctes?

Jacques.

Encore une excellente idée :) et je n'avais pas essayé.

Voici le résultat, visiblement le problème se trouve bien ici...

<?xml version="1.0" encoding="utf-8"?>
<pics>
</pics>

Sans doutes une histoire de chemins, mais je soupçonne le script php de ne pas être adapté à mon fonctionnement, seulement je n'ai pas les connaissances nécessaires :unsure:

Modifié par Cr4sH
Posté

Le script php en question se moque assez profondément du reste de ton "architecture" :-) Le seul problème est qu'il ne trouve pas les fichiers. Plusieurs solutions:

- ce n'est pas le bon chemin. Essaie avec img, gal/img, /chemin/absolu/vers/gal/img. Tu peux aussi ajouter un petit print getcwd() au début du php en question pour savoir quel est son chemin par défaut (et donc comment construire le chemin relatif), mais le chemin absolu ça devrait le faire (même si ça expose peut-être un peu trop d'informations...)

- il y a un problème de droits sur le répertoire dans lesquel elles sont

- les images n'ont pas l'une des extensions indiquées (des gif par exemple)

Jacques.

Posté

Très pertinent, merci encore pour cette nouvelle réponse et pour votre temps. Je m'en vais de ce pas appliquer tout ça, cependant, ou exactement placeriez vous ce fameux "getcwd()" ? Au tout début du script, puis je l'exécuterai ensuite ?

Cordialement.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...