Reload/Refresh deaktivieren

Iceman8712

Gesperrt
Hallo zusammen

Ich hab mal eine ganz interessante Fragen (jedenfalls für mich) für euch :)
Gibt es ein PHP Script, dass das reloaden/refreshen der aktuellen Seite unterdrückt?

Es geht darum, dass ich nach einer Lösung suche, dass wenn man ein Formular abgeschickt hat, nicht F5 drücken kann und der Eintrag dann doppelt ist.

Ich stelle mir vor, dass es doch am einfachsten wäre, wenn es solch eine kleine Funktion gibt, die das unterdrückt.
Oder was gäbe es noch füre andere Lösungvorschläge?

Ich bin gespannt auf Eure Antworten.
Vielen Dank und einen schönen Gruss,

Iceman8712
 
Zuletzt bearbeitet:
nein geht nicht.
Du kannst am Client nichts mit PHP rumpfuschen.

Du kannst höchstens weiterleiten und verhindern, dass er nochmal auf die Formularseite geht - was du aber im Normalfall nicht willst
 
Ist es demfall am einfachsten, wenn man die Datenbankeinträge miteinander vergleicht und ihn nicht mehr eintragen lässt?
Oder was gibt es für eine Möglichkeit, dass der User ein abgeschicktes Formular nicht nochmals senden kann?

Gruss
Iceman8712
 
Zuletzt bearbeitet:
Oder was gibt es für eine Möglichkeit, dass der User ein abgeschicktes Formular nicht nochmals senden kann
keine. Wenn ich senden will, dann kann ich senden.

Du kannst überprüfen, ob das, was gesendet wird, für dich von Wert ist oder nicht.
Und dann kannst du entscheiden, was du damit machst.
 
Zu dem Thema haettest Du auch einiges ueber die Suchfunktion finden koennen. Und dann haettest Du herausgefunden, dass die leichteste und wohl auch effektivste Methode die von shutdown bereits erwaehnte Weiterleitung ist. Und zwar per header().
 
Ich hätte da noch mal die Frage: Dennis vllt erinnerst du dich, dass ich geschrieben habe das dein Design bei dieser Methode nicht vorhanden bzw leer aussehen müsste ;)

Also im Normalfall hmm oder anders ich habe wie viele andere auch eine Seite wo Inhalt in der Index.php includet wird. Und sobald ich dann nen header() mache kommt die Meldung ich hätte schon was gesendet ... Ist ja auch logisch weil die Index.php einen Kopfteil enthält bevor das includete Zeug aktiv ist. Wie löst man dann dieses Problem ihr habt doch keine weißen Seiten ohne HTML-Ausgabe oder was :suspekt:
 
Es kommt im Grunde nie dazu, dass eine leere Seite angezeigt wird. Der Eintrag der Daten in der Datenbank geht ja ziemlich schnell, und gleich darauf folgt die Weiterleitung zur naechsten Seite. Da der Browser von der durch das Formular aufgerufenen Seite nur Header (mit der Weiterleitung) bekommt gibt es auch nicht viel zu empfangen, sodass innerhalb eines Sekundenbruchteils direkt die naechste Seite (auf die weitergeleitet wurde) angefordert wird. Dementsprechend ist es fuer den User im Grunde so als wuerde direkt nach Versand des Formulars die Seite aufgerufen auf die im Script weitergeleitet wird.
 
Ja das verstehe ich schon aber wenn man eine Seite hat bsp. mit Tabellen

index.php
Code:
<html>
<head></head>
<body>
<table>
<tr>
<td><?php include $inhalt ?></td>
</tr>
</table>
...

Dann wird der header() in der includeten Datei ausgeführt bsp:

PHP:
$host  = $_SERVER['HTTP_HOST'];
  $uri  = $_SERVER['PHP_SELF'];
  // Logout
  if (isset($_GET['logout']))
  {
    session_destroy();
    session_unset();
    header("Location: http://$host$uri/login.php");
  /*  echo '<i>Ein Moment Geduld bitte...</i>
          <meta http-equiv="refresh" content="2; URL=index.php">';    */
  }
  else {
         include "links/option.php";
       }

dann kommt bei mir: Warning: Cannot modify header information - headers already sent by (output started at D:\xampplite\htdocs\HP\Doorstander\index.php:8) in D:\xampplite\htdocs\HP\Doorstander\links\log_admin.php on line 11

vorher wird doch nichts an den Browser geschickt ich lese aber nochmal nach bei der Funktion :rolleyes:
 
Doch, der HTML-Teil wird da schon an den Browser geschickt. Wenn Deine Seite so aufgebaut ist wirst Du wohl mit dem Output-Buffer arbeiten muessen.
 
Öhm ja ok kannste ma nen mini Beispiel posten wie man es aufbauen kann das man den Puffer nicht benötigt ? Kenne keine andere Variante.
 
Zurück