Aide - Recherche - Membres - Calendrier
Version complète : script php galerie
La Communauté TitaXium > Service Communication > Espace Developpement
ptiteuf
Bonjour a tous,

voila je vous mets le script qui me plais beaucoup et que j'essaye de mettre sur mon site mais dej des erreurs se trouve au debut mais je sais pas ou ces erreur ce trouve donc je vais appel a vous.
Citation
<?
///clef:Az34u78fZt //1.50/fr/ identification + version, ne pas modifier --
//------------------------------------------------------------------------------
// Galerie photos automatique utilisant un seul fichier PHP
// ce fichier PHP se charge de créer les vignettes photos, de les présenter
// en une page de galerie photos, et de présenter à la demande les photos dans
// une page secondaire (popup). Le fichier gère les photos placées dans le même
// dossier et également les photos placées dans des sous-dossiers.
// > ce code a besoin des fonctionnalités GD, à vérifier avec phpinfo()
// > ce code nécessite la prise en charge de JavaScript par le navigateur client
// Sur options en ajoutant des fichiers annexes:
// il est possible de changer le comportement et l'apparence de la galerie
// - de personnaliser les paramètres, les styles et les légendes
// - d'étendre les fonctionnalités par des extensions par inclusion de code
//-----------
// Version 1.50: mise en chantier le 18-07-2007, mise à jour le 19-juin-2008
// tedheu (2008)
//------------------------------------------------------------------------------

/*========= Paramétres généraux ==============================================*/
$nompage= 'index.php'; // nom attendu des pages PHP de galerie (cette page)
$nomdosvgt='Vignettes'; // nom du dossier réservé au vignettes
$sfx='_vgt.jpg'; // suffixe des fichiers de vignettes
$actiondef='galerie'; // action par défaut
$autclone='oui'; // clonage dans les sous-dossiers, permis=>'oui'
// liste des actions prises en charge, activées par passage de variables GET
$Actionliste= array('galerie','popup');
// extensions permises des fichiers photos (insensibles à la casse)
$Extimg= array('jpg','jpeg','gif','png');
// dossiers masqués ou réservés (tout le contenu, fichiers + sous-dossiers)
$MasqDo= array('secret0','secret1');
// compteur de visite
$dlvisite=2; // delai (s) pour considérer le même IP comme nouveau visiteur
/*========= Paramétrages de présentation (par défaut) ========================*/
$ordre='na'; // ordre d'affichage des vignettes: '','i','a','ia','na','hz'
$dimmaxvgt=100; // taille de la dimension max de la vignette, en pixel
$marg=5; // marge autour de la vignette, en pixel
$nipbdmax=20; // nombre maximal d'images par bande de photos
$emprise=75; // emprise des bandes sur la largeur d'écran, en %
$afflegende='oui'; // légende brève sous les vignettes
$afflegplus='oui'; // légende étendue sous les vignettes suivant pointage
$signature='LesbGay Europe'; // signature qui sera affichée en bas du POPUP
$afffichtop='oui'; // affichage du nom de fichier "photo" en haut du POPUP
$affnomcart='oui'; // affichage du nom de la "photo" dans un cartouche
$hcart=15; // hauteur du cartouche en pixel
$centrage=150; // centrage de la fenêtre POPUP en %, si >100 = aléatoire
/*========= Paramétres de gestion des options (extensions, styles, ...) ======*/
$options='oui'; // prise en compte des options
$nomdosopt='Options'; // nom du dossier réservé aux options
/*============================================================================*/

/********** Traitements préliminaires *****************************************/
// environnement dossiers
$racine=$_SERVER['DOCUMENT_ROOT'];
$chempageself=$_SERVER['PHP_SELF'];
$chemdirself=dirname($chempageself);
// récupération du nom de fichier de cette page PHP
$nomself=basename($chempageself);
// récupération de son identification et du numéro de version
$Champ=Idenfichier($nomself,'.'); $clef=$Champ[0]; $numversion=$Champ[1];
// récupération du nom du dossier parent
$nomdirparent= basename($chemdirself);
// recherche d'autres galeries $nompage dans les dossiers supérieurs
$Chemdirgalsup=AnalyseGaleriesSup($nompage,$clef,$chemdirself,$racine);
$galsup=0; $nomdirgrparent=''; $chemdirgalprim='/'.$nomdirparent;
($Chemdirgalsup[0]!='')? $ngalsup=count($Chemdirgalsup): $ngalsup=0;
If ($ngalsup>0){
$galsup=1;
$nomdirgrparent= basename($Chemdirgalsup[0]);
$chemdirgalprim=$Chemdirgalsup[$ngalsup-1];
}
$racinegalprim=$racine.$chemdirgalprim;
// Création de dossiers d'environnement si absents
CreationDossier($nomdosvgt); // création du dossier de vignettes si absent
CreationDossier($nomdosopt); // création du dossier pour les options si absent
array_push($MasqDo,$nomdosvgt,$nomdosopt);
// récupération du numéro IP du visiteur
$ipc=$_SERVER['REMOTE_ADDR'];

/********** Gestion des options ***********************************************/
// Le tableau $Fichoptions contient les noms de fichier des divers modules qui
// vont apporter différentes options pour une personnalisation et une extension
// des possibilités du script PHP. Si les fichiers sont absents le module n'est
// pas chargé. Les fichiers sont par défaut dans le répertoire local $nomdosopt.
// Le tableau $Locfichopts précise si faut chercher le module dans le répertoire
// $nomdosopt de la galerie principale (dossier local par défaut).
// Ces deux tableaux sont des tableaux associatifs dont les éléments sont
// identifiés par des index.
// la première ligne des fichiers "module" doivent contenir la bonne clef et le
// bon nom de l'index associé comme l'exemple ci-dessous:
// ##///clef:Az34u78fZt //nom-de-l'index/version/ commentaire
// où ## sont deux caractères, <? pour un script PHP, /* pour un script CSS
//
$Fichoptions= NULL; $Locfichopts= array('commun'=>'C');
if ($options=='oui'){
// index de tableau utilisés dans ce script auquel une valeur est attribuée
$Fichoptions= array(
'commun'=>'commun.inc',
'optionplus'=>'optionplus.inc',
'modifparam'=>'modifparam.inc',
'legsphotos'=>'legsphotos.inc',
'entetgal'=>'entetgal.inc',
'colgagal'=>'colgagal.inc',
'coldrgal'=>'coldrgal.inc',
'piedpgal'=>'piedpgal.inc',
'stylegal'=>'stylegalerie.css',
'stylepop'=>'stylepopup.css',
);
// index de tableau utilisés dans ce script sans valeur attribuée:
// 'varsmetget' , 'traitemsup' , 'actionssup'
// ( utiliser le module 'optionplus' pour attribuer des valeurs )
}
if ($ch=ChemModule('optionplus',$clef)) include($ch); // option: modifie $Fichoptions
if (!is_array($Fichoptions)) $options='erreur';
if ($ch=ChemModule('commun',$clef)) include($ch); // option: modifie $Locfichopts
if ($ch=ChemModule('modifparam',$clef)) include($ch); // option: modifie les paramétres
if ($ch=ChemModule('legsphotos',$clef)) include($ch); // option: renseigne les légendes
// Légendes: tableaux associatifs['nom du fichier photo (sans l'extension)']
// Vignettes: $Legvi_brev[] légende brève, $Legvi_long[] légende longue
// Popups: $Legpp_etiq[] étiquette, $Legpp_cart[] cartouche

/********* Gestion des variables passées en méthode GET, et traitements *******/
(isset($_GET['action']))? $action=$_GET['action']: $action='';
(isset($_GET['sw']))? $sw= $_GET['sw']:$sw=640;
(isset($_GET['nf']))? $fichimage= $_GET['nf']:$fichimage='';
if ($ch=ChemModule('varsmetget',$clef)) include($ch); // option: modifs-ajouts de variables

/********** Traitements supplémentaires ***************************************/
if ($action!='' and !in_array($action,$Actionliste)) $action='';
if ($sw<0) $sw=640; if ($sw>5120) $sw=5120;
$dimcase=$dimmaxvgt+2*$marg;
$cmptxt=''; // texte compteur, valeur par défaut
if ($affnomcart!='oui') $hcart=0;
array_push($MasqDo,$nomdosvgt,$nomdosopt);
// si le nom du fichier est différent du nom prévu, pas de clonage par sécurité
if ($nomself!=$nompage) $autclone='non';
if ($ch=ChemModule('traitemsup',$clef)) include($ch); // option: ajouts de traitements

/*============================================================================*/
// Ce script PHP est divisé en parties pour effectuer des réactions différentes
// $action=''=> recharge avec info client $sw (largeur en pixel de l'écran)
// $action='popup' => affichage d'une photo dans une fenêtre secondaire
// $action='galerie' => affichage des vignettes photos en bandes
// (pour des extensions utiliser l'option d'un module 'actionssup')
/*============================================================================*/

/********** Partie par défaut ($action est vide) ******************************/
if ($action==''){
// flux HTML de la page défaut
if ($ch=ChemModule('partdeft',$clef)) include($ch); // option si prévu
?>
<HTML>
<STYLE type="text/css">
BODY {background-color:black; color:#aaa; font-family:verdana, arial; text-align:center;}
</STYLE>
<BODY>
<script language="JavaScript">
<!--
var sw= screen.width;
<?
// la page est relancée avec l'action par défaut '$actiondef'
echo('location.href=\''.$nomself.'?action='.$actiondef.'&sw=\'+sw;'.chr(10));
?>
-->
</SCRIPT>
<P>--- galerie photos ---</P>
<NOSCRIPT>
Votre navigateur n&acute;est pas configur&eacute; pour accepter le Javascript.<BR>
Cette page utilise JavaScript pour fonctionner.<BR>
Veuillez modifier les options de votre navigateur, si vous voulez continuer.<BR>
<P>--- merci de votre visite ---</P>
</NOSCRIPT>
</HTML>
<?
exit;
}

/********** Partie fenêtre POP-UP ($action='popup')****************************/
if ($action=='popup'){ // nom de l'image appelée: $fichimage
// préparation des légendes
$nomimg=substr($fichimage,0,strrpos($fichimage,'.'));
if ($afffichtop=='oui'){
(isset($Legpp_etiq[$nomimg]))? $etiquette=$Legpp_etiq[$nomimg]: $etiquette=$fichimage; $altimage='';
}
else{
$etiquette=''; $altimage=$fichimage;
}
if ($affnomcart=='oui'){
(isset($Legpp_cart[$nomimg]))? $cartouche=$Legpp_cart[$nomimg]: $cartouche=$nomimg;
}
// l'image existe t'elle ?
if (@$Iminfo=getimagesize($fichimage)){ // image existante
$annonce='... Veuillez patienter ...<BR><BR>';
$annonce.='l\'image &quot; '.$fichimage.' &quot est en cours de chargement.';
// la fenêtre POPUP a été ouverte aux dimensions $largim x $hautim
$largim=$Iminfo[0]; $hautim=$Iminfo[1];
}
else{ // image absente
$annonce='Erreur:<BR><I>image inexistante</I>';
$fichimage=''; $hcart= 0; $cartouche='';
$largim=100; $hautim=100;
}
// flux HTML de la fenêtre POP-UP
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Fen&ecirc;tre POPUP</TITLE>
<STYLE type="text/css">
BODY {margin:0; padding:0;}
DIV.tout {position:absolute; top:0; left:0; width:100%; height:100%;}
DIV.calque {position:absolute; font-family:verdana, arial; text-align:center;}
#fond { Z-index:0; top:40%; left:20%; color:blue;}
#photo { Z-index:1; top:0; left:0; cursor:wait;}
#etiquette { Z-index:2; top:0; left:0; width:200; height:30;}
#etiquette { text-align:left; font-size:11px; color:#ffa;}
#etiquette { filter:glow(color=black, strength=3);}
#signature { Z-index:3; bottom:0; right:0; width:80; text-align:right; color:#005;}
#signature { filter:glow(color=#f0f0a0, strength=3);}
#cartouche { Z-index:4; bottom:0; left:0; text-align:center; width:100%; font-size:11px; color:#ffa; background-color:black;}
</STYLE>
<?
$chemmodule=ChemModule('stylepop',$clef);
if ($chemmodule) echo('<LINK rel="stylesheet" type="text/css" href="'.$chemmodule.'">'.chr(10));
?>
<script LANGUAGE="JavaScript">
// nom du fichier image, hauteur et largeur
var fichimage= <? echo('\''.$fichimage.'\''); ?>;
var hautim= <? echo($hautim); ?>, largim= <? echo($largim); ?>; rahslim= hautim/largim;
var hcart= <? echo($hcart); ?>; // hauteur du cartouche
// récupération de variables passées par GET: position de la fenêtre, passées à window.open()
var coingauche=0, coinhaut=0; // valeurs par défaut
var chaineget= window.location.search.substring(1);
var paire= chaineget.split('&');
for (i=0; i<paire.length; i++){
par= paire[i].split('=');
switch (par[0]){
case 'x': coingauche= parseInt(par[1]); break;
case 'y': coinhaut= parseInt(par[1]); break;
}
}
text= '- Image'+fichimage+' - ('+largim+' x '+hautim+' pixels)';
if (fichimage!='') document.title=text;
document.write('<STYLE type="text/css">');
document.write('#cartouche { height:'+hcart+';}');
document.write('#signature { bottom:'+hcart+';}');
document.write('</STYLE>');
//
function fin(){
if (fichimage!='') document.getElementById("fond").innerHTML='';
document.getElementById("photo").style.cursor='crosshair';
}
</SCRIPT>
</HEAD>
<BODY topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" onDblclick="self.close();" onLoad="fin();">
<DIV class="tout">
<!-- texte annonce en couche 0 , par dessous -->
<DIV id="fond" class="calque">
<? echo('<B>'.$annonce.'</B>'.chr(10));?>
</DIV>
<!-- la photo en couche 1 -->
<DIV id="photo" class="calque">
<? echo('<IMG id="image" border="0" src="'.rawurlencode($fichimage).'" alt="'.$altimage.'" width="'.$largim.'" height="'.$hautim.'">'.chr(10));?>
</DIV>
<!-- étiquette en couche 2 , par dessus -->
<DIV id="etiquette" class="calque">
<? echo('<B>'.$etiquette.'</B>'.chr(10));?>
</DIV>
<!-- signature en couche 3 , par dessus -->
<DIV id="signature" class="calque">
<? echo('<B>'.$signature.'</B>'.chr(10));?>
</DIV>
<!-- cartouche en couche 4 , par dessus en bas -->
<DIV id="cartouche" class="calque">
<? echo('<B>'.$cartouche.'</B>'.chr(10));?>
</DIV>
</DIV>
<script LANGUAGE="JavaScript">
// Retouche position et dimensions du POPUP si besoin
hauttitre= 20; bordurex2= 10; if (window.screenTop) bordurex2= 12; // valeurs estimées
hauttitreplusbordure= hauttitre+bordurex2;
largimmax= screen.availWidth-bordurex2; hautimmax= screen.availHeight-hcart-hauttitreplusbordure;
// l'image est trop petite, mini 100x100
if (Math.min(largim,hautim)<100){
if (largim<100){larg=100; haut=Math.floor(larg*rahslim);}
if (hautim<100){haut=100; larg=Math.floor(haut/rahslim);}
resizeTo(larg,haut);
clarg= document.body.clientWidth; chaut= document.body.clientHeight;
dlarg= larg-clarg; dhaut= haut-chaut;
resizeBy(dlarg,dhaut);
document.write('<STYLE type="text/css">');
document.write('#signature { font-size:9px;}');
document.write('#photo { top:50%; margin-top:'+(-(hautim+hcart)/2)+'; left:50%; margin-left:'+(-largim/2)+';}');
document.write('</STYLE>');
}
// la taille de l'image est trop grande
if ((largim>largimmax)||(hautim>hautimmax)){
if (largim>largimmax){largim=largimmax; hautim=Math.floor(largim*rahslim);}
if (hautim>hautimmax){hautim=hautimmax; largim=Math.floor(hautim/rahslim);}
resizeTo(largim+bordurex2,hautim+hauttitreplusbordure);
clienthaut= document.body.clientHeight; clientlarg= document.body.clientWidth;
hautim=clienthaut; largim=Math.floor(hautim/rahslim); // on priviligie la hauteur
deltalarg= largim-clientlarg; resizeBy(deltalarg,hcart);
document.getElementById("image").style.width=largim;
document.getElementById("image").style.height=hautim;
text=text+' , image redimentionnée pour l\'affichage - - - -'; document.title=text;
document.write('<STYLE type="text/css">');
document.write('DIV.tout { width:'+largim+'; left:50%; margin-left:'+(-largim/2)+';}');
document.write('</STYLE>');
}
// repositionnement de la fenêtre, si dépassement
margel= screen.availWidth-document.body.clientWidth-bordurex2;
margeh= screen.availHeight-document.body.clientHeight-hauttitreplusbordure;
if (coinhaut>margeh){coinhaut=margeh; moveTo(coingauche,coinhaut);}
if (coingauche>margel){coingauche=margel; moveTo(coingauche,coinhaut);}
</SCRIPT>
</BODY>
</HTML>
<?
exit; // fin du module POPUP >> sortie du script PHP
}

/********** Partie fenêtre GALERIE PHOTOS ($action='galerie')******************/
if ($action=='galerie'){
AnalyseDossFich(); // analyse de l'environnement dossiers-fichiers
Nettoyagedosvgt($nomdosvgt); // nettoyage du dossier de vignettes
Creationvignettes($nomdosvgt); // création des vignettes (si absentes)
Gestionsousgaleries($autclone);// galeries dans les sous-dossiers
$cmptxt=Compteur($ipc,$dlvisite,$nomdosvgt); //compteur
// calcul du nombre d'images par bande en fonction de la largeur de l'écran
$emprise=abs($emprise/100);
if ($emprise>1) $emprise=1;
$nipbd= floor($emprise*$sw/$dimcase);
if ($nipbd==0) $nipbd=1;
if ($nipbd>$nipbdmax) $nipbd=$nipbdmax;

// flux HTML de la galerie de photos
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Galerie photos Lesb-Gay Europe</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META NAME="description" CONTENT="page PHP diaporama">
<META NAME="copyright" CONTENT="TTU">
<META NAME="author" CONTENT="tedheu">
<META NAME="robots" CONTENT="all">

<STYLE type="text/css">
BODY,TD,A,P {color:white; font-family:verdana,sans-serif; font-size:11px; background-color:black;}
A {text-decoration:none; background-color:transparent;}
A:link {color: blue;}
A:visited {color: cyan;}
A:hover {color: red;}
H1 {color:#c0f; font: bold italic 30px tahoma,verdana; text-align:center;}
TABLE.planche {margin:auto; border:1px solid white;}
TD.supmn {background-color:#00f;}
TD.menu {color:#777; font-size: 13px; font-weight: bold; font-style:italic; text-align:center; background-color:#111;}
TD.colonnega {color:#aaa; background-color:#445; text-align:center; vertical-align:top; width:100; border:1px solid white;}
TD.colonnedr {color:#aaa; background-color:#445; text-align:center; vertical-align:top; width:100; border:1px solid white;}
TD.vgt,.vgton,.vgtout,.vgtvide {background-color:#555; text-align:center; border:1px solid white;}
TD.vgton {border:1px solid yellow; background-color:#666;}
TD.vgtout {border:1px solid white; background-color:#333;}
DIV.galerie {text-align:center;}
DIV.legende {Z-index:0; position:relative; font-size:10px; width:100%; height:15px;}
DIV.legende1,.legende2 {position:absolute; top:0; left:0; width:100%; background-color:black;}
DIV.legende1 {Z-index:1; height:15px; overflow:hidden;}
DIV.legende2 {Z-index:2; left:-10%; width:120%; border: 2px solid #ff0; visibility:hidden;}
DIV.galprim {color:#ef0; font-size: 13px; font-weight: bold; text-align:left;}
SPAN.top {color:#117; font: bold italic 18px verdana; text-align:left;}
SPAN.ref {color: #88f; font: normal 10px arial}
</STYLE>
<?
$chemmodule=ChemModule('stylegal',$clef);
if ($chemmodule) echo('<LINK rel="stylesheet" type="text/css" href="'.$chemmodule.'">'.chr(10));
?>
<script language="JavaScript">
function gestion(etiq,v){
if ((document.getElementById)&& v==1){ // onMouseover
document.getElementById(etiq).className="vgton";
document.getElementById(etiq+'-lg').style.zIndex="1";
document.getElementById(etiq+'-lg2').style.visibility="visible";
}
if ((document.getElementById)&& v==0){ // onMouseOut
document.getElementById(etiq).className="vgtout";
document.getElementById(etiq+'-lg').style.zIndex="0";
document.getElementById(etiq+'-lg2').style.visibility="hidden";
}
}
var fenpopup; // variable globale
var hcart= <? echo($hcart); ?>; // hcart= hauteur du cartouche
var centrage= <? echo($centrage); ?>; // centrage de l'affichage du POPUP
centrage= Math.abs(centrage);
// appel à une page dédiée pour l'agrandissement en popup
function agran(nf_image,largim,hautim){
largim= parseInt(largim); hautim= parseInt(hautim);
margel= screen.availWidth-largim-4; if (margel<0) margel=0;
margeh= screen.availHeight-hautim-hcart-32; if (margeh<0) margeh=0;
//centrage= 100;
if (centrage<=100){
coinG= centrage/100*margel; coinH= centrage/100*margeh;
}
else{
coinG=Math.random()*margel; coinH=Math.random()*margeh;
}
coinG=parseInt(coinG); coinH=parseInt(coinH);
if(fenpopup!=undefined) fenpopup.close();
adresseGet='<?=$nomself?>?action=popup'+'&nf='+nf_image+'&l='+largim+'&h='+hautim+'&x='+coinG+'&y='+coinH;
fenpopup= window.open(adresseGet,'','toolbar=no,width='+largim+',height='+(hautim+hcart)+',left='+coinG+',top='+coinH+',directories=no,location=no,status=no,scrollbars=no,resizable=yes,menubar=no');
}
</SCRIPT>
</HEAD>

<BODY class="corpgal" text=#000000 vLink=#551a8b aLink=#ff0000 link=#0000cc bgColor=#ffffff topMargin=3 marginheight="3" OnUnload="if(fenpopup!=undefined) fenpopup.close();">
<!-- Entête de page -->
<?
$chemmodule=ChemModule('entetgal',$clef);
if ($chemmodule){
include($chemmodule); // option si prévu
}
else{
echo('<SPAN class="top">Galerie Photos</SPAN>'.chr(10));
}
?>
<H1 id="galtitre" class="titre"><?echo(str_replace('_','&nbsp;',$nomdirparent))?></H1>

<!-- affichage HTML "bandeau" -->
<?// synthèse du lien vers la galerie principale
if($galsup==1){
(($chemdirgalprim!='/')&&($chemdirgalprim!=chr(92)))? $chemin=$chemdirgalprim: $chemin='';
echo('<DIV class="galprim"><SPAN id"galpico">«« </SPAN>');
echo('<A class="galplien" href="'.$chemin.'/'.$nompage.'"><SPAN id="galptxt">Galerie principale</SPAN></A>');
echo('</DIV>'.chr(10));
}
?>
<TABLE class="bando" border="1" cellSpacing="0" cellPadding="0" width="100%">
<TR><TD class="supmn" width="100%"><IMG height="1" width="1"></TD></TR>
<TR><TD class="menu" width="90%">
<?// synthèse des liens vers les autres galeries
($galsup==1)? print('| <A href="../'.$nompage.'">'.str_replace('_','&nbsp;',$nomdirgrparent).'</A> '):print('&nbsp;');
for ($i=0;$i<$nlien;$i++){
$lien=$Nc_lien[$i];
echo('| <A href="'.$lien.'/'.$nompage.'">'.str_replace('_','&nbsp;',$lien).'</A> ');
}
(($nlien>0)||($galsup==1))? print('|'):print('&nbsp;');
?>
</TD></TR>
</TABLE>
<TABLE class="centre" border="0" cellSpacing="0" cellPadding="0" width="100%">
<? // insertion de colonnes si prévue
echo('<TR>');
$chemmodule=ChemModule('colgagal',$clef); // colonne à gauche
if ($chemmodule){echo('<TD class="colonnega" rowspan="3">'); include($chemmodule); echo('</TD>'.chr(10));}
echo('<TD height="30">&nbsp;</TD>'.chr(10));
$chemmodule=ChemModule('coldrgal',$clef); // colonne à droite
if ($chemmodule){echo('<TD class="colonnedr" rowspan="3">'); include($chemmodule); echo('</TD>'.chr(10));}
echo('</TR>');
?>
<TR><TD class="tronc">
<? // affichage photos ou images par bandes
$html='<DIV class="galerie">'.chr(10);
if ($nimag>0){
// le dossier contient des photos
$nbd=Ceil($nimag/$nipbd);
$iima=0; $iilg=0;
$html.='<TABLE class="planche" cellpadding="0" cellspacing="0">'.chr(10);
for ($ibd=1; $ibd<=$nbd; $ibd++){
// ouverture d'une bande de photos
$html.='<TR>'.chr(10);
for ($icl=0; $icl<$nipbd; $icl++){
if ($iima<$nimag){
// la photo existe, création d'une cellule avec la vignette photo
$nomfich=$Nf_image[$iima];
if ($Iminfo=getimagesize($nomfich)){
$largim=$Iminfo[0]; $hautim=$Iminfo[1];
}
$nomimg=substr($nomfich,0,strrpos($nomfich,'.'));
$nomvgt=$nomdosvgt.'/'.rawurlencode($nomimg).'_vgt.jpg';
$html.='<TD id="im'.$iima.'" class="vgt" width="'.$dimcase.'">'.chr(10);
$html.='<DIV style=" height:'.$dimcase.';">';
$html.='<A href="java script:agran(''.rawurlencode($nomfich).'',''.$largim.'',''.$hautim.'')">';
($largim>=$hautim)? $vhut=round($dimmaxvgt/$largim*$hautim):$vhut=$dimmaxvgt;
$html.='<IMG src="'.$nomvgt.'" border="0" alt="'.$nomfich.'" style=" top:50%; margin-top:'.(($dimcase-$vhut)/2).';" ';
$html.='onMouseover="java script:gestion('im'.$iima.'',1);" onMouseOut="java script:gestion('im'.$iima.'',0);"></A>';
$html.='</DIV>'.chr(10);
// legende de vignette
if ($afflegende=='oui'){
$html.='<DIV class="legende" id="im'.$iima.'-lg">'.chr(10);
(isset($Legvi_brev[$nomimg]))? $legende1=$Legvi_brev[$nomimg]: $legende1=$nomimg;
$html.='<DIV class="legende1">'.$legende1.'</DIV>'.chr(10);
}
else{
$html.='<DIV class="legende" id="im'.$iima.'-lg" style="height:0px;">'.chr(10);
}
if ($afflegplus=='oui'){
$legdef='fichier:<BR>'.$nomfich.'<BR><I>('.$largim.'x'.$hautim.' pixels)</I>';
(isset($Legvi_long[$nomimg]))? $legende2=$Legvi_long[$nomimg]: $legende2=$legdef;
$html.='<DIV class="legende2" id="im'.$iima.'-lg2">'.$legende2.'</DIV>'.chr(10);
}
$html.='</DIV>'.chr(10);
$html.='</TD>'.chr(10);
}
else{
// la photo n'existe pas, création d'une cellule sans vignette
$html.='<TD class="vgtvide" width="'.$dimcase.'">&nbsp;</TD>'.chr(10);
}
$iima++;
}
$html.='</TR>'.chr(10);
}
$html.='</TABLE>'.chr(10);
}
else{
//Le dossier ne contient pas d'image !
$html='<SPAN class="dosvide">&nbsp;Le dossier ne contient pas d\'image</SPAN>'.chr(10);
}
$html.='</DIV>'.chr(10);
echo($html);
?>
</TD></TR>
<TR><TD height="30">&nbsp;</TD></TR>
</TABLE>
<TABLE class="cartouche" border="0" cellSpacing="0" cellPadding="0" width="100%">
<TR><TD class="compteur" align="left"><?echo($cmptxt.'<BR>');?></TD>
<TD class="nbrephotos" align="right"><?echo('nombre de photos:&nbsp;'.($nimag).'<BR>');?></TD>
</TABLE>
<HR>
<SPAN class="ref">Lesb-Gay Europe Galerie, Lesb-gay&nbsp;2008&nbsp;&nbsp;</SPAN><BR>
<?
if ($ch=ChemModule('piedpgal',$clef)) include($ch); // option si prévu
?>
</BODY>
</HTML>
<?
exit; // fin du module galerie >> sortie du script PHP
}

if ($ch=ChemModule('actionssup',$clef)) include($ch); // option si prévu

// Fonctions:------------------------------------------------------------------/
//--- Identification d'un fichier suivant le contenu de sa première ligne
function Idenfichier($fichier,$chemin,$racine=''){
// première ligne: #clef:champ0 //champ1/champ2/ .... (champ0= 10 caractères)
$Champ= array('','','','','');
($chemin!='/'&&$chemin!=chr(92))? $chemfich=$chemin.'/'.$fichier: $chemfich='/'.$fichier;
$chemfich=$racine.$chemfich;
if (is_readable($chemfich)){
$fp0=fopen($chemfich,'r'); $ligne1=fgets($fp0); fclose($fp0);
$Champ[0]=substr($ligne1,strpos($ligne1,'clef:')+5,10);
$tok=strtok(substr($ligne1,strpos($ligne1,'clef:')+15),'/');
$Champ[1]=strtok('/'); $Champ[2]=strtok('/');
}
return $Champ;
}
//--- Création d'un dossier, $nomdos, si absent
function CreationDossier($nomdos){
if (!(@filetype($nomdos)=='dir')){
if (@mkdir($nomdos)){
// écriture d'un fichier index.html minimal dans le dossier de vignettes
$html='<HTML><HEAD></HEAD>'.chr(10).'<BODY>'.chr(10);
$html.='<BODY onload="java script:location.href='.chr(39).'../'.chr(39).'">'.chr(10);
$html.='&nbsp;'.chr(10).'</BODY>'.chr(10).'</HTML>';
if ($pf0=fopen('./'.$nomdos.'/'.'index.html','w')){
fwrite($pf0,$html);
fclose($pf0 );
}
}
else{
echo('<BR>ERREUR: le dossier &quot;$nomdos&quot; n'a pu être créé ! <BR>'.chr(10));
}
}
}
//--- Chemin d'un module d'extension valide pour inclusion de code PHP
function ChemModule($index,$clef){
$chemfich= FALSE;
global $options, $racinegalprim, $nomdosopt, $Fichoptions, $Locfichopts; // entrées
((isset($Locfichopts[$index]))&&($Locfichopts[$index]='C'))? $chem0=$racinegalprim: $chem0='.';
if (($options=='oui')&&(isset($Fichoptions[$index]))){
$chemfich=$chem0.'/'.$nomdosopt.'/'.$Fichoptions[$index];
$Champ=Idenfichier($Fichoptions[$index],'/'.$nomdosopt,$chem0);
if (($Champ[0]!=$clef)||($Champ[1]!=$index)) $chemfich= NULL;
}
return $chemfich;
}
//--- Analyse la présence de galeries dans les dossiers supérieurs
function AnalyseGaleriesSup($nompage,$clef,$chem,$racine,$ngalsupmax=15){
$tst='1'; $nsup=0; $Chemdir=array('');
while($tst=='1'&&($chem!=dirname($chem))&&($nsup<=$ngalsupmax)){
$chem= dirname($chem); $tst='0';
if (is_readable($racine.$chem)){
$Champ=Idenfichier($nompage,$chem,$racine);
// vérification qu'il s'agit du bon fichier PHP
if ($Champ[0]==$clef){
($chem!='/'&&$chem!=chr(92))? $chempage=$chem: $chempage='/';
$tst='1'; $Chemdir[$nsup++]= $chempage;
}
}
}
return $Chemdir;
}
//--- Analyse de l'environnement dossiers-fichiers, recherche des images
function AnalyseDossFich(){
global $MasqDo, $Extimg, $ordre; // entrées
global $Doss, $ndoss, $Nf_image, $nimag, $listenomimg; // sorties
$dp=opendir('.'); $ndoss=0; $nfich=0;
while (gettype($file=readdir($dp))!=@boolean){
if (in_array($file,$MasqDo))$file='?';
if ($file!='.' and $file!='..' and $file!='?'){
if (is_dir('./'.$file)) $Doss[++$ndoss-1]=$file; // dossiers
if (is_file('./'.$file)) $Fich[++$nfich-1]=$file; // fichiers
}
}
closedir($dp);
// liste des images, tableau et chaîne de caractères
$nimag=0; $listenomimg='>/';
if ($nfich>0){
for ($i=0;$i<$nfich;$i++){
$nomfich=$Fich[$i];
$ext=''; // tri, uniquement les fichiers d'extensions permises
if ($pp=strrpos($nomfich,'.')) $ext=strtolower(substr($nomfich, $pp+1));
if (in_array($ext,$Extimg)){
$Nf_image[++$nimag-1]=$nomfich;
$nomimg=substr($nomfich,0,$pp); $listenomimg.= $nomimg.'/';
}
}
}
// réarrangement de l'ordre de présentation des images
if ($nimag!=0){
switch ($ordre){
// par défaut, ordre par date de téléchargement
case 'i': // ordre inverse
$Nf_image= array_reverse($Nf_image); break;
case 'a': // ordre numérique ou aphabétique
sort($Nf_image); break;
case 'na': // ordre naturel
natcasesort($Nf_image); $Nf_image=array_values($Nf_image); break;
case 'ia': // ordre inverse numérique ou aphabétique
rsort($Nf_image); break;
case 'hz': // ordre aléatoire
shuffle($Nf_image); break;
}
}
}
//--- Création des vignettes si absentes sur la base des images identifiées
function Creationvignettes($nomdosvgt){
global $nimag, $Nf_image, $sfx, $dimmaxvgt;
for ($iima=0;$iima<$nimag;$iima++){
$nomfich= $Nf_image[$iima];
$nomimg=substr($nomfich,0,strrpos($nomfich,'.'));
// si la vignette n'existe pas on la créer
$nomvgt=$nomdosvgt.'/'.$nomimg.$sfx;
if (!file_exists($nomvgt)){
if (@$Iminfo=getimagesize($nomfich)){
$type=$Iminfo[2]; $ok=0;
switch ($type){
case 1: // format GIF
if (@$im=ImageCreateFromGIF($nomfich)) $ok=1; break;
case 2: // format JPEG
if (@$im=ImageCreateFromJPEG($nomfich)) $ok=1; break;
case 3: // format PNG
if (@$im=ImageCreateFromPNG($nomfich)) $ok=1; break;
}
}
if ($ok==1){
$larg=ImageSX($im); $haut=ImageSY($im);
if($larg>=$haut){
$vlrg=$dimmaxvgt; $vhut=round($dimmaxvgt/$larg*$haut);
}
else{
$vhut=$dimmaxvgt; $vlrg=round($dimmaxvgt/$haut*$larg);
}
$imv=ImageCreateTrueColor($vlrg,$vhut);
ImageCopyResampled($imv,$im,0,0,0,0,$vlrg,$vhut,$larg,$haut);
ImageJPEG($imv,$nomvgt,100);
ImageDestroy($im); ImageDestroy($imv);
}
}
}
}
//--- Nettoyage et mise à jour des vignettes:
// suffixe correct, correspond à une image présente dans ../, la taille correspond à "$dimmaxvgt"
function Nettoyagedosvgt($nomdosvgt){
global $sfx, $listenomimg, $dimmaxvgt; // entrées
$Exceptions= array('index.html','cptmip.txt');
$dpvgt=opendir('./'.$nomdosvgt);
while (gettype($file=readdir($dpvgt))!=@boolean){
if ($file!='.' and $file!='..'){
$eff=0;
$fichvgt='./'.$nomdosvgt.'/'.$file;
if (is_file($fichvgt)){
(strrpos($file,$sfx))? $c=strrpos($file,$sfx):$c=strrpos($file,'.');
// le suffixe n'est pas le bon
if (substr($file,$c)!=$sfx) $eff=1;
// l'image n'est pas dans la liste
if (!strpos($listenomimg,'/'.substr($file,0,$c).'/')) $eff+=2;
if (@$Iminfo=getimagesize($fichvgt)){
// la vignette n'a pas la bonne taille
if (max($Iminfo[0],$Iminfo[1])!=$dimmaxvgt) $eff+=4;
}
if (in_array($file,$Exceptions)) $eff=0;
}
// efface ou tente d'effacer le fichier si $eff > 0
if ($eff>0) @unlink($fichvgt);
}
}
closedir($dpvgt);
}
//--- Gestion des galeries photos dans les sous-dossiers, clonage si autorisé
function Gestionsousgaleries($autclone){
global $nompage, $clef, $numversion, $ndoss, $Doss; // entrées
global $nlien, $Nc_lien; // sorties (liens vers les sous-galeries)
$nlien=0; // nombre de lien vers des sous-galeries
for ($i=0;$i<$ndoss;$i++){
$nomdos=$Doss[$i];
// existence d'un fichier PHP de nom "$nompage"
if (is_file('./'.$nomdos.'/'.$nompage)){
$Champ=Idenfichier($nompage,'./'.$nomdos);
// vérification qu'il s'agit du bon fichier PHP
if ($Champ[0]==$clef){
// une galerie photos est déjà active dans ce sous-dossier
$Nc_lien[++$nlien-1]=$nomdos;
// contrôle du numéro de version
if ($Champ[1]!=$numversion){
// mise à jour du fichier PHP
@copy('./'.$nompage, './'.$nomdos.'/'.$nompage);
}
}
}
else{
// clonage du fichier PHP de galerie photos dans le sous-dossier
if ($autclone=='oui'){
if (@copy('./'.$nompage, './'.$nomdos.'/'.$nompage)) $Nc_lien[++$nlien-1]=$nomdos;
}
}
}
if ($nlien!=0){ natcasesort($Nc_lien); $Nc_lien=array_values($Nc_lien);}
}
//--- Compteur de visite, renvoie le texte $cmptxt
function Compteur($ipc,$delai,$dossier){
if (!file_exists('./'.$dossier.'/'.'cptmip.txt')) touch('./'.$dossier.'/'.'cptmip.txt');
if ($pf0=fopen('./'.$dossier.'/'.'cptmip.txt','r+')){
$sgn='Compteur galphoto'; $ipcf=sprintf('%15s',$ipc); $chrono=sprintf('%10s',time());
$i=0; // lecture du fichier de comptage
while (!feof($pf0)){
$Ligne[$i++]=fgets($pf0,1024);
}
$n=$i-2; // -1 à cause du dernier retour ligne
// analyse du fichier compteur et traitement
$nouveau=1; $cmp=substr($Ligne[0],1,8);
for ($i=1;$i<=$n;$i++){
$ipcs[$i]=substr($Ligne[$i],1,15);
if ($ipcf==$ipcs[$i]){
$chronos[$i]=substr($Ligne[$i],17,10);
if (($chrono-$chronos[$i])>$delai) $cmp++;
$nouveau=0; $present[$i]=1; $chronos[$i]=$chrono;
}
}
if ($nouveau==1){
$i=++$n; $cmp++;
$present[$i]=1; $ipcs[$i]=$ipcf; $chronos[$i]=$chrono;
}
// mise à jour du fichier compteur
rewind($pf0); ftruncate($pf0,0);
$cmp=sprintf('%08s',$cmp);
fwrite($pf0,':'.$cmp.':'.$sgn.':'.chr(10));
$nv=0;
for ($i=1;$i<=$n;$i++){
if ($present[$i]==1){
fwrite($pf0,':'.$ipcs[$i].':'.$chronos[$i].':'.chr(10)); $nv++;
}
}
fclose($pf0 );
$pl=($nv==1)? '':'s';
$cmptxt=$cmp.' visiteurs<BR>actuellement '.$nv.' visiteur'.$pl.' sur cette page';
}
return $cmptxt;
}

/************* fin du script **************************************************/



Merci de m'aider sur cela.
TitaX
Salut,

Il nous faudrait savoir où tu as pris ce script, une url de test et les logs suite à l'appel de cette page.
Méthylbro
1. Ce script n'est pas secure.
2. Ce script risque de mal supporter une grosse charge. En effet, il lit les répertoires à chaque fois, ce qui risque de poser des problèmes si ton site génère un gros trafic. La solution serais de créer une mise en cache ; ou de lister l'arborescence de ta galerie dans un fichier (xml par exemple).
ptiteuf
bon j'ai passer une partie de la nuit avec notre titax et on avais corriger des erreurs de ce script pour finir par arreter avec lui car trop de code mal coder. mais merci quand meme pour votre savoir que j'ai pas .
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2010 Invision Power Services, Inc.