phpbar.de logo

Mailinglisten-Archive

[php] Nur die nächste Datei im Verzeichnis verlinken - Wie?

[php] Nur die nächste Datei im Verzeichnis verlinken - Wie?

Sebastian Mendel lists at sebastianmendel.de
Fre Nov 9 13:54:44 CET 2007


Kirsten Bohlig schrieb:

> ### in einer index-Datei ###
> $dir = "xy";
> $verzeichnis = openDir($dir);
> $i = 1;
> while ($file = readDir($verzeichnis))
> {
> 	if ($file != "." && $file != ".." && $file != "index.php")
> 	{   	  	
> 	if (substr_compare($file, ".php", -4, 4,true)==0)

wenn du eh auf '.php' prüfst brauchst du natürlich nicht extra noch '.' und
'..' prüfen ...

if (substr($file, -4) == '.php' && $file != 'index.php') {

reicht vollkommen


> 		// das ist nicht ganz korrekt mit dem rawurlencode
> 		// $links[] = "<a href=\"".rawurlencode($dir."/" .$file 
> )."?nr=".$i."\">[".$i."] ".htmlspecialchars($titel)."</a>";
> 		// weil: der slash wird mit %2F ersetzt
> 		// und dann so kein Link mehr gehen kann
> 				
> 		// das geht:
> 		$links[] = "<a href=\"".rawurlencode($dir)."/" .rawurlencode($file) 
> ."?nr=".$i."\">[".$i."] ".htmlspecialchars($titel)."</a>\n";

wenn du davon ausgehst das komische Zeichen in den Dateinamen enthalten sein
könnten, weil sonst würdest du ja kein rawurlencode() verwenden, dann
solltest du ein htmlspecialchars() drum herum anwenden

$links[] = '<a href="'
    . htmlspecialchars(rawurlencode($dir) . '/' . rawurlencode($file))
    . '?nr=' . $i . '">[' . $i . '] ' . htmlspecialchars($titel)
    . '</a>' . "\n";



> ### auf einer Folgeseite: ###
> session_start();
> $links = $_SESSION['seiten'];
> $nr = $_GET['nr'];
> $nr_next = $nr+1;
> $nr_prev = $nr-1;
> $next_page = $links[$nr_next];
> $prev_page = $links[$nr_prev];

da kann man sich ruihig, auch ohne unleserlcih zu werden, ein paar Zeilen sparen

$next_page = $_SESSION['seiten'][$_GET['nr'] + 1];
$prev_page = $_SESSION['seiten'][$_GET['nr'] - 1];

-- 
Sebastian

php::bar PHP Wiki   -   Listenarchive