Tom: per Link "hochzählen" (Lösung)

Beitrag lesen

Hello,

"Meine" Lösung:

Eher wohl: Deine "Lösung"

Auf dem Server eine Datei (pic.txt) anlegen und deren Rechte auf "666" setzen.
Hier cache ich jetzt einfach die Werte!

<?php

$pic = $_GET['pic']; // Diese Seite wurde mit dem Parameter pic=1 oder pic=-1 aufgerufen
if (isset($pic) ) { // pic hat Inhalt oder nicht
if ($pic== "") { // ggf. auf 1 setzen
$pic=1;
} // Endif
} // Endif

$File = fopen('./pic.txt', 'r+'); // Zähldatei öffnen
$counter = fread($File, filesize('./pic.txt')); // Zähler einlesen
$counter = $counter + $pic; // Zähler um übergebene Variable erhöhen

if ($counter <= 0 ) { // Zähler ggf. auf Null setzen
$counter=1;
} // Endif
rewind($File);
fwrite($File, $counter); // Datei auf Server mit aktuellem Wert sichern
fclose($File); // Ende im Gelände

echo "Bild Nr: ".$counter.;

?>
<a href="index.php?pic=-1">[zurück]</a>
<br />
<a href="index.php?pic=1">[weiter]</a>

Vielleicht nicht die eleganteste Lösung, aber es funzt.

Trotzdem: Jemand eine einfachere Lösung parat?
Eine, die ich auch verstehe ;)

Du Armer hast da jetzt soviele Fehler gemacht, mehr geht fast nicht mehr. ;-)

Eigentlich hatte ich Dir eine Lösung schon fast fertig ausformuliert, sogar schon mit ersten Ansätzen für Sicherheit, gepostet. Aber das Grundproblem scheint mir das noch nicht vorhandene Verständnis für das Wechselspiel in Multi-User-Client-Server-Anwendungen zu sein.

Deine Idee funktioniert schon dann nicht mehr, wenn mehrere User wechselseitig die Bilder durchblättern wollen. Wenn ein User gerade heraufgezählt hat, zählen zwei andere gerade herunter. Was meinst Du wohl, was dann am Ende in der Datei steht.

Und da gibt es ja noch ein weiteres Problem mit der Datei. Sie kann, so wie Du es gemacht hast, sogar zur genau gleichen Zeit von mehreren Benutzern zum Lesen und zum Schreiben benutzt werden. Das geht dann irgendwann schief, und in der Datei stehen keine gültigen Werte mehr.

Und da Du herabzählst und heraufzählst und die Datei nur einen Wert enthält, der in der Länge variieren kann (die Zahl 100 ist zwei Stellen länger als die Zahl 9 in ihrer Darstellung), gibt dies eine zusätzliche Fehlermöglichkeit.

Du benötigst keine Datei. Ohne hast Du etliche Probleme weniger. Du müsstest Dir einfach nur nochmal meinen Vorschlag https://forum.selfhtml.org/?t=187186&m=1243929 angucken, daraus einen (kurzen) Code machen, den Du hier zur Diskussion postest und alles wird gut.

Hab Vertrauen. :-)

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de