Seiteaufruf verhindern!

widi

Grünschnabel
Hallo,
ich habe zwei seiten index.php und richtig.php.
Auf index.php steht ein Bestätigungsbutton auf richtig.php.
In richtig.php gibt's eine function die dem User punkte gutschreibt!
Problem liegt daran,daß man die seite wiederaufrufen kann und weitere punkte zu bekommen! Ich habe mit Userid-Sperre probiert und es bringt nicht viel,weil nach enden der Sperre die richtig.php wiederaufrufbar ist!
Gibt's vieleicht eine Möglichkeit das zu unterbinden und bei Aktualisieren der seite entweder ein Error kommt,oder zurück zu index.php geleitet wird?
Ich hoffe habe ich mich klar ausgedrückt.:)
 
Hi,

ma kann über die Variable $HTTP_REFERRER (oder so ähnlich) herausfinden, von wo ein Script aufgerufen wird.
Du kannst also im Script prüfen, ob der Referrer die index.php ist, und nur dann machst Du die Gutschrift, ansonsten leitest Du auf index.php um ;)


Dunsti
 
Original geschrieben von Dunsti
Hi,

ma kann über die Variable $HTTP_REFERRER (oder so ähnlich) herausfinden, von wo ein Script aufgerufen wird.
Du kannst also im Script prüfen, ob der Referrer die index.php ist, und nur dann machst Du die Gutschrift, ansonsten leitest Du auf index.php um ;)


Dunsti

Danke für die Hilfe,aber es wird bei mir,wenn ich diesen Code in richtig.php eingebe
---------------------------------------------------------------------

if ($HTTP_REFERRER == "index.php") {
auszuführender code wenn richtig
}
else {
oder was weiß ich
}
---------------------------------------------------------------------

zeigt es "oder was weiß ich" und möchte,daß "auszuführender code wenn richtig" angezeigt wird.
Was mache ich falsch?
:)

Und wenn ich sogar den Text ändere und danach die richtig.php aktualisiere,zeigt es mir immer noch den "auszuführender code wenn richtig" an!
 
Zuletzt bearbeitet:
Der Referer wird NICHT in dieser Form funktionieren

$HTTP_REFERRER == "index.php")

Weil Referer erstens mit EINEM "R" geschrieben wird und zweitens der Referer in folgender Form vorliegt "http://www.dieseite.de/deinformular.php".

Schau Dir mal die Funktionen "ereg" oder "preg_match" (wenn ich mich nicht täusche) an. Damit kannst Du einen Teilstring überprüfen.

Zusatz: Der Referer ist NICHT vertrauenswürdig, da er vom Browser generiert wird (man kann ihn also mit ein wenig Kenntnis oder auch mit einem Tool sogar blocken oder einfach nur verändern/fälschen).

Greetz,
Neuro
 
Wenn dein Browser noch immer den alten Text anzeigt, solltest du mal in den Optionen das Caching deaktivieren :)

Und zu dem aktualisierungsproblem fallen mir auf die schnelle zwei ebenso gute Lösungen( bzw. extras) ein.

1. kannst du den Leuten´nen cookie verpassen
2. sind sessions auch sehr effektiv
achja :) und
3. kann man per html diesen "nicht-aktualisieren-effekt" auch lösen indem man im <head> noch die 2 folgenden Zeilen hinzufügt
PHP:
<meta http-equiv=pragma content=no-cache>
<meta http-equiv=cache-control content=no-cache>

und ehm... versuch´s ma hiermit:

PHP:
if (substr($HTTP_REFERER,-9) == "index.php") {
    echo "jo - der is clean";
} else {
    Header("Location: index.php");
}
 
Original geschrieben von TeCe
Wenn dein Browser noch immer den alten Text anzeigt, solltest du mal in den Optionen das Caching deaktivieren :)

Und zu dem aktualisierungsproblem fallen mir auf die schnelle zwei ebenso gute Lösungen( bzw. extras) ein.

1. kannst du den Leuten´nen cookie verpassen
2. sind sessions auch sehr effektiv
achja :) und
3. kann man per html diesen "nicht-aktualisieren-effekt" auch lösen indem man im <head> noch die 2 folgenden Zeilen hinzufügt
PHP:
<meta http-equiv=pragma content=no-cache>
<meta http-equiv=cache-control content=no-cache>


und ehm... versuch´s ma hiermit:

PHP:
if (substr($HTTP_REFERER,-9) == "index.php") {
    echo "jo - der is clean";
} else {
    Header("Location: index.php");
}


Leider hat es nicht geklappt,aber Danke trotzdem für die Mühe!:)
Ich probiere lieber es mit Formularüberprüfung.
Mfg Widiger
 
Original geschrieben von TeCe
Was genau hat denn nicht geklappt?


Wenn ich von index.php den Button anklicke werde ich an diese Code geleitet
Header("Location: index.php");


Siehe den code in richtig.php

if (substr($HTTP_REFERER,-9) == "index.php") {
echo "jo - der is clean";
} else {
Header("Location: index.php");
}
 
Hast du dir mal testweise auf ner Seite nur diese Referer-Variable via Echo ausgeben lassen ? Ich habe zum Beispiel enorme Probleme damit, resp. die Variable ist leer.
 
Zurück