bei neuladen einer seite fehlermeldung anzeigen

ben_19

Mitglied
hallo!

Ich habe folgendes Script welches den Content einer Seite verwaltet. Ich benutze hierzu SPAW- einen WYSIWYG-Editor.

Datei: agb_edit.php
PHP:
<?
include("agb_inc.php");
include("agb_db_inc.php");
$abfrage = "update $tabelle set text='".$_POST['text']."'";
$result = mysql_query($abfrage, $conn);
if ($result)
	{
		echo "$erfolgreich";
	}
	else
	{
		echo "$fehler";
	}
?>

mit diesem script werden die eingetragenen änderungen dann in die datenbank gespeichert. mein problem: wenn man erfolgreich die änderungen eingetragen hat und die agb_edit.php neu lädt (F5 oder der Reloadbutton im Browser), dann sendet er natürlich alles noch einmal, allerdings hat er nun keine Werte mehr und schreibt einen leeren Datensatz in die Tabelle, womit der Eintrag gelöscht wird.

Das ist natürlich kontraproduktiv. Deshalb meine Frage: Gibt es eine Möglichkeit beim Neuladen der Seite eine Fehlermeldung anzuzeigen bzw. das irgendwie zu verhindern? Ich denke da an Javascript. Hat jemand nen anderen Vorschlag bzw. kann mir jemand helfen das umzusetzen?

Vielen Dank im Voraus :)
 
Wenn die Werte per $_POST übergeben werden, kannst du ja dieses machen:

PHP:
if (!isset($_POST['foo']) {

//normaler weiter machen
} else {
// doppelter Aufruf + Fehlermeldung
}
 
Ich hatte das mal so gelöst:
PHP:
<?
include("agb_inc.php");
include("agb_db_inc.php");
$abfrage = "update $tabelle set text='".$_POST['text']."'";
$result = mysql_query($abfrage, $conn);
$script = "<script type=\"text/javascript\">";
if ($result)
    {
        $script .= "alert('Erfolgreich');";
    }
    else
    {
        $script .= "alert('Nicht Erfolgreich');";
    }
$script .= "location.href='weiter.php'";
$script .= "</script>";
echo $script;
?>
Aber ob das so sinnvoll ist, ist ein andere Frage.
Einfach mal probieren.
 
Mein Vorschlag: Speichere im Formularskript einen bei jedem Aufruf neu generierten Zufallsschlüssel einmal in der Sitzung und einmal im Formular als verstecktes Formularelement. Im dem oben genannten Skript prüfst du dann, ob beide Schlüssel vorhanden und identisch sind. Ist dies nicht der Fall, wird das Skript abgebrochen beziehungsweise die Aktion nicht ausgeführt. Stimmen beide Schlüssel überein, wird die Aktion ausgeführt und der Schlüssel anschließend aus der Sitzung gelöscht.
 
hm, ich dachte eine javascript-meldung tuts auch ..

aber eure vorschläge verhindern grundsätzlich das neuladen der seite was mir besser gefällt .. ist das mit den schlüsseln nicht unnötig aufwändig?

gibts da einfachere möglichkeiten?

@ tobee: diese idee find ich gut .. d.h. es gibt gar keine möglichkeit die seite neuzuladen weil man direkt zu einer anderen weitergeleitet wird. richtig?
 
.. ist das mit den schlüsseln nicht unnötig aufwändig?
Nein, dies ist sogar notwendig. Denn da jeder Schlüssel nur einmal gültig ist, werden die Formulardaten auch nur einmal verarbeitet. Die anderen genannten Vorschläge können dies nicht verhindern. Und JavaScript ist auch nicht für Aufgaben gedacht, die der Server zu erledigen hat.
 
@ tobee: diese idee find ich gut .. d.h. es gibt gar keine möglichkeit die seite neuzuladen weil man direkt zu einer anderen weitergeleitet wird. richtig?
Ja, er wartet zwar noch die JavaScript Meldung ab, aber wechselt dann direkt auf die nächste Seite. Aber dann wäre ein F5 Reload ( ein neues Query ) nicht mehr möglich.
 
Ja, er wartet zwar noch die JavaScript Meldung ab, aber wechselt dann direkt auf die nächste Seite. Aber dann wäre ein F5 Reload ( ein neues Query ) nicht mehr möglich.
Es reicht schon aus JavaScript zu deaktivieren oder einfach die vorherigen Seite aufzurufen. Ein Schutz ist das keinesfalls.
 
@ Gumbo: und der vorschlag von tobee tuts nicht auch? wie würde ich denn das umsetzen mit den automatisch generierten schlüsseln? hab sowas noch nie gemacht
 
Zurück