Hi,
Aber ganz fertige "Fertiglösungen" wird Dir hier wahrscheinlich niemand empfehlen.
Nur um Dir zu widersprechen ;-):
<?php // PHP >= 4.1.x / 20041210
if(!isset($SHOW["IndexDir"]) || !isset($showCore)) { $SHOW["IndexDir"]="/data"; } if(!isset($SHOW["IndexFile"])) { $SHOW["IndexFile"]="slideshow.txt"; } if(!isset($SHOW["NoIndex"])) { $SHOW["NoIndex"]=FALSE; } if(!isset($SHOW["NoSort"])) { $SHOW["NoSort"]=FALSE; }
// Serverpfad zum Root der Domain $hidePath=$_SERVER["DOCUMENT_ROOT"]; $hidePathLen=strlen($hidePath);
// Arbeitspfad ist der aktuelle ... $startPath=$hidePath.dirname($PHP_SELF); $urlPathOrg=str_replace("/","%2f",dirname($PHP_SELF)); // ... bzw. in dem URL mit 'path=' uebergebener if(isset($_GET["path"])) { $startPath=$hidePath.$_GET["path"]; $urlPath=str_replace("/","%2f",$_GET["path"]); }
// Index-Datei fuer Reihenfolge? if(!$SHOW["NoIndex"]) { if($SHOW["IndexDir"]) { $indexFile=$hidePath.$SHOW["IndexDir"]."/".str_replace("/","_",substr(dirname($PHP_SELF),1)."/".$SHOW["IndexFile"]); } else { $indexFile=$startPath."/".$SHOW["IndexFile"]; } }
// Ggf. Index-Datei erstellen if(!is_file($indexFile) && !$SHOW["NoIndex"]) {
// Verzeichnis oeffnen $handle=opendir($startPath);
// Wenn Verzeichnis geoeffnet: if($handle) { $imgPath=substr($startPath,$hidePathLen); // Verzeichniseintraege durchgehen ... while($entry=readdir($handle)) { // ... in absoluten Server-Dateinamen sichern ... $serverEntry="$startPath/$entry"; // ... und naechsten Eintrag holen, falls Eintrag keine oder leere Datei ist if(!is_file($serverEntry) || !filesize($serverEntry)) { continue; } // Absoluten Domain-Dateinamen ermitteln $userEntry=substr($serverEntry,$hidePathLen); // Image-Informationen ermitteln $imageInfo=getimagesize($serverEntry); // Wenn es eine "Web-Standard-Grafik" ist (Breite/Hoehe nicht 0, Typ: GIF, JPEG oder PNG): if($imageInfo[0]*$imageInfo[1] && ($imageInfo[2]>=1 && $imageInfo[2]<=3)) { // ALT-Attribut festlegen $imgAlt=""; // Absoluten Domain-Dateinamen sichern $imgURL=urlescape($userEntry); // Breite & Hoehe sichern $imgWidth=$imageInfo[0]; $imgHeight=$imageInfo[1]; // Alle Informationen in einem assoziativen Array sichern, mit dem Dateinamen als Schluessel $images[$entry]=array("file"=>$imgURL,"width"=>$imgWidth,"height"=>$imgHeight); } } closedir($handle);
// Grafiken nach Dateiname alphabetisch sortieren ... if(is_array($images) && !$SHOW["NoSort"]) { ksort($images); }
// ... und in Index-Datei schreiben $fp=@fopen($indexFile,"w"); if($fp) { while(is_array($images) && list($key,$array)=each($images)) { @fwrite($fp,$array["file"]."\n"); } @fclose($fp); } } }
if(is_file($indexFile) && !$SHOW["NoIndex"]) { // Index-Datei einlesen $fp=@fopen($indexFile,"r"); $data=@fread($fp,filesize($indexFile)); @fclose($fp); } else { // Dateinamen uebernehmen $data=""; while(is_array($images) && list($key,$array)=each($images)) { $data.=$array["file"]."\n"; } }
// Daten umwandeln in Array mit leerem Starteintrag $images=explode("\n","\n".$data); // Eintraege trimmen for($i=0;$i<count($images);$i++) { $images[$i]=trim($images[$i]); }
// Erste legale Nummer (0 ist ja leer) $firstNo=1; // Letzte legale Nummer (Anzahl-1, da Index bei 0 beginnt) $lastNo=count($images)-1; // Wenn letzter Eintrag leer (neue Leerzeile in Datei): Reduzieren $lastNo-=(!$images[$lastNo])?1:0;
// Anzuzeigende Bildnr. // - aus dem Parameer holen oder Startbild nehmen $fileNo=(isset($_GET["no"]))?$_GET["no"]:1; // Maximal letztmoegliches Bild $fileNo=($fileNo>$lastNo)?$lastNo:$fileNo; // Minimal erstmoegliches Bild $fileNo=($fileNo<$firstNo)?$firstNo:$fileNo; // Vorheriges Bild (oder 0) $prevNo=($fileNo!=$firstNo)?$fileNo-1:0; // Naechstes Bild (oder 0) $nextNo=($fileNo!=$lastNo)?$fileNo+1:0;
// Bildinfos holen if(is_file($hidePath.$images[$fileNo])) { // ALT-Attribut: Name des Bildes (ohne Endung und " " statt "") $imgAlt=str_replace(""," ",upto(basename($images[$fileNo]),".")); // TITLE-Attribut: Großgeschriebener Verzeichnisname + ALT $imgTitle=ucfirst(str_replace("_"," ",basename(dirname($images[$fileNo])))).': '.$imgAlt; $imageInfo=getimagesize($hidePath.$images[$fileNo]); $imgWidth=$imageInfo[0]; $imgHeight=$imageInfo[1]; }
// JavaScript-Code zum Vorladen des naechsten Bildes $jsCode=' if(document.images) { cache=new Array(); i=-1;'."\n"; if($nextNo) { $jsCode.=' i++; cache[i]=new Image(); cache[i].src="'.$images[$nextNo].'";'."\n"; } if($prevNo) { $jsCode.=' i++; cache[i]=new Image(); cache[i].src="'.$images[$prevNo].'";'."\n"; } $jsCode.=' }'."\n";
?>
<html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <title>amotiq.de - Slideshow <?=$imgTitle;?></title> <link rel="stylesheet" type="text/css" media="print" href="/data/amotiq-p.css"> <link rel="stylesheet" type="text/css" media="screen" href="/data/amotiq-s.css"> <script type="text/javascript" language="JavaScript"><!-- doc_type="Slideshow"; xJS=false; function b(e,f){if(xJS){deFocus(e,f);}} FimgDir="/img/"; function Flip(FimgName) { if(xJS) { return F2(FimgName); }} function Flop(FimgName) { if(xJS) { return F1(FimgName); }} function Switch(Name1,Source1,Name2,Source2,Text,TopDown,All) { if(xJS) { return S(Name1,Source1,Name2,Source2,Text,TopDown,All); }} //--></script><script type="text/javascript" language="JavaScript" src="/data/amotiq.js"></script> </head>
<body bgcolor="#FFFFFF" text="#000000" scroll="auto" bottommargin="0" leftmargin="0" rightmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <basefont face="Arial, Helvetica, sans-serif">
<?php
echo '<table border="0" width="99%" height="99%" style="width:100%; height:100%;" cellspacing="0" cellpadding="0"><tr align="center" valign="top"><td height="1">'."\n"; if($lastNo>=$firstNo) { echo ' <table border="0" cellspacing="0" cellpadding="0"><tr valign="middle">'."\n"; echo ' <td colspan="3" align="center"><small> </small></td>'."\n"; echo ' </tr><tr valign="middle">'."\n"; echo ' <td align="left"><font size="4"><b>'.(($prevNo)?('<a class="hidefocus" href="'.$PHP_SELF.'?no='.($prevNo).(($urlPath!=$urlPathOrg && $urlPath)?("&path=".$urlPath):("")).'" onMouseUp="b(this);" hidefocus>zurück</a>'):('')).'</b></font></td>'."\n"; echo ' <td align="center"><font size="3"><b> '.$fileNo.'/'.$lastNo.' </b></font></td>'."\n"; echo ' <td align="right"><font size="4"><b>'.(($nextNo)?('<a class="hidefocus" href="'.$PHP_SELF.'?no='.($nextNo).(($urlPath!=$urlPathOrg && $urlPath)?("&path=".$urlPath):("")).'" onMouseUp="b(this);" hidefocus>weiter</a>'):('')).'</b></font></td>'."\n"; echo ' </tr><tr valign="middle">'."\n"; echo ' <td align="left"><font size="4"><b>              </b></font></td>'."\n"; echo ' <td align="center"><font size="3"><b>                   </b></font></td>'."\n"; echo ' <td align="right"><font size="4"><b>             </b></font></td>'."\n"; echo ' </tr></table>'."\n"; echo '</td></tr><tr align="center" valign="middle"><td>'."\n"; echo ' <img src="'.$images[$fileNo].'" '.(($imgWidth)?('width="'.$imgWidth.'" '):'').(($imgHeight)?('height="'.$imgHeight.'" '):'').'alt="'.$imgAlt.'" title="'.$imgTitle.'">'."\n"; } else { echo "<b>Keine Bilder!</b>"."\n"; } echo '</td></tr></table>'."\n"; echo "\n"; insertJS($jsCode);
// Unerlaubte Zeichen im Dateinamen maskieren (vorlaeufige Version) function urlescape($url) { $trans=array(" "=>"%20","Ä"=>"%c4","ä"=>"%e4","Ö"=>"%d6","ö"=>"%f6","Ü"=>"%dc","ü"=>"%fc","É"=>"%c9","é"=>"%e9"); $url=strtr($url,$trans); return $url; }
function upto($inp,$need,$offset=0) { $a=mb_strrpos($inp,$need); $a=substr($inp,$offset,$a-$offset); return $a; }
// Funktionen um JavaScript-Code mit PHP einzubinden function startJS() { echo '<script type="text/javascript" language="JavaScript"><!--'."\n"; } function writeJS($jsCode) { echo $jsCode."\n"; } function endJS($noscript="") { echo '//--></script>'; if(!empty($noscript)) { echo '<noscript>'.$noscript.'</noscript>'; } echo "\n"; } function insertJS($jsCode,$noscript="") { startJS(); writeJS($jsCode); endJS($noscript); }
?>
</body> </html>
Das kann irgendwo liegen - nennen wir es /slide.php. Folgendes liegt im Bilderverzeichnis:
<?php
// -------------------- Seitendefinition -------------------- // $SHOW[xxx] koennen hier Standarddefinitionen ueberschreiben $SHOW["IndexDir"]="";
// -------------------- Systemdefinition --------------------
// Pfad+Name des Slideshow-Kernels $showCore=$_SERVER["DOCUMENT_ROOT"]."/slide.php";
// Wenn dieser nicht vorhanden: Abbruch if(is_file($showCore)) { @require($showCore); } else { echo "Programmabruch: Slideshow-Kernel nicht gefunden!<br>Program abortion: slideshow kernel not found!"; }
?>
Das Script speichert alle (darstelbaren) Bilder (also GIF, JEG & PNG) in einer Liste. Ist die Liste vorhanden, wird stattdessen diese genommen (z.B. um die Reihenfolge der Bilder zu ändern.
Die Kommentierung der weiteren Features spare ich mir hier aber ... ;-)
Gruß, Cybaer
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!