dedlfix: PHP Probleme nach erstmaliger Servereinrichtung

Beitrag lesen

echo $begrüßung;

1)Vorschaltseite
Hier will der Grafikcounter einfach nicht funktionieren. Die erscheinende Fehlermeldung kann ich leider nicht interpretieren.

Warning: fopen(Counter/counter.txt) [function.fopen]: failed to open stream: Permission denied in /[...]/grafikcounter.php on line 21

Der Rest sind Folgefehler. Die Meldung sagt aus, dass die Datei nicht geöffnet werden konnte, weil eine Berechtigung dazu fehlt.

Ich vermute, dass es daran liegt, dass auf dem Server die Textdatei nicht angelegt werden kann, wobei ich nicht weiß, warum.

Das kommt drauf an, was in Zeile 21 des Scripts steht. Wenn die Datei gelesen werden soll, hat der Webserver, bzw. der User unter dem das Script läuft, kein Leserecht. Soll die vorhandene Datei zum Schreiben geöffnet werden, braucht der User das Schreibrecht. Soll die Datei angelegt werden, benötigt der User das Recht, in dem Verzeichnis zu schreiben. Aber bitte nicht mit der chmod-777-Kanone auf diesen Spatzen schießen sondern erstmal das Rechtekonzept auf Unix-Maschinen verstehen und dann genau das benötigte Recht vergeben. Bei Fragen bitte nochmal nachfragen.

// Hier wird der Titel automatisch über "GET" von "fotos.php" übergeben
$titel = $_GET['t'];

Das Übergeben des Parameters (vom Webserver zu PHP) hat bereits vor Aufruf deines Scripts stattgefunden. Du muss einfach nur noch die in $_GET bereitgestellten Werte nutzen. $_GET ist ein Array wie jedes andere auch (mit Ausnahme seiner superglobalen Verfügbarkeit). Eine weiteren "Übernahme" ist dabei nicht erforderlich.

$ordner = $_GET['o'];
$dir = opendir ("../Bilder/Fotos/Web_klein/$ordner");

Das ist eine Sicherheitslücke. Wenn jemand als Parameter o statt eines einfachen Ordnernamens etwas wie ../../../ordnername übergibt, kann er auf beliebige Ordner zugreifen, für die der PHP-User das Leserecht hat. Prüfe vorher den Inhalt von $_GET['o'] auf unerlaubte Zeichen (beispielsweise den / ), bzw. dass nur erlaubte Zeichen drin sind (z.B. Buchstaben und Ziffern), oder gegen eine Liste der erlaubten Verzeichnisse.

if ($bild != "." && $bild != ".." && $bild != "Thumbs.db")

Die Thumbs.db kannst du löschen. Die benötigt nur dein lokales Bilderanschauprogramm.

array_push($galerie,$bild);

Statt array_push() benutzt man im Allgemeinen $array[] = $wert; (siehe dazu auch die Note/Anmerkung auf der Handbuchseite).

echo "<a href="vorschau.php?t=" . $titel .  "&o=" . $ordner . "&bn=" . $galerie[$i] . ""><img src="../Bilder/Fotos/Web_klein/" . $ordner . "/" . $galerie[$i] . "" style=" border-width: 3px; border-color: #FFFFFF; "/></a>&nbsp;";

Um nicht die " in mit "" begrenzten Strings maskieren (") zu müssen, kannst du den String in '' einfassen. Die zusätzliche Funktionalität der "" verwendest du ja hier nicht. Auch ist es möglich, Attributwerte in HTML-Code in '' einzufassen.
&o= ist übrigens kein gültiges HTML. Statt & solltest du dessen Entity &amp; verwenden. (Es wären auch andere Trennzeichen möglich, wie beispielsweise das Semikolon (;). Dieses muss nicht entitisiert werden. Man muss dann aber, arg_separator.input anpassen, damit das Parsen der URL weiterhin funktioniert.)

Während er lokal und bei allen anderen Fotoalben die Bilder sortiert nach Dateinamen (001.jpg, 002.jpg, ..., 200.jpg) wiedergibt, macht er das bei dem oben verlinkten Album nicht. Weiß jmd. wieso und sagt es mir?

Die Dateien liegen nicht sortiert im Dateisystem. Bringe sie selbst in die gewünschte Ordnung, indem du das Array mit den Dateinamen wie gewünscht sortierst.

echo "$verabschiedung $name";