php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
doppelte datenbankeinträge mit firefox


 
wickersham
09-05-2006, 20:10 
 
hi @ all!

ich hab ein problem mit firefox und einer mySql-Datenbank und zwar werden durch den folgenden quelltext 2 neue einträge in die datenbanktabelle news aufgenommen:

<?
$SQL_Befehl = "insert into news (nnr, nnachricht, nueberschrift) values (null, '".$_POST[fnnachricht]."', '".$_POST[fnueberschrift]."')";
$resultat = mysql_db_query("Datenbankname", $SQL_Befehl);

if ($resultat) {
echo "News erfolgreich eingefügt!";
} else {
echo "Es ist ein Fehler aufgetreten!";
}
?>

beim 2. eintrag wird zwar ein neue zeile in der tabelle news erstellt, jedoch werden keine werte eingetragen.
das komische daran ist, dass das problem nur bei verwendung des mozilla firefox auftritt, während es mit dem IE einwandfrei funktioniert.

ich hoffe, dass mir jemand bei diesem problem weiterhelfen kann.

gruss
wickersham ;)

 
wahsaga
09-05-2006, 22:07 
 
Hast du denn die Generierung der Query und ihre Ausführung irgendwie davon abhängig gemacht, ob die POST-Parameter überhaupt existieren und gefüllt sind ...?

 
wickersham
10-05-2006, 10:00 
 
hi!

nein diese abhängigkeit hab ich nicht mit eingebaut, aber ich hab schon probiert ob es daran liegen könnte, ob parameter übergeben werden oder nicht, tut es aber nicht.

vielleicht ist es noch von bedeutung, dass die daten über ssl verschlüsselt werden.

gruss
wickersham :)

 
Daniela
10-05-2006, 10:31 
 
tut es aber nicht das wage ich zu bezweifeln.
Wenn du dein Skript aufrufst schreibt das bei jedem Seitenaufruf einen neuen Eintrag in die DB... da ist das egal ob FF oder IE

 
wickersham
10-05-2006, 14:32 
 
@Daniela: ich glaube du hast mein posting etwas falsch verstanden und zwar meinte ich, dass ich es bereits ausprobiert hab zB statt $_POST[...] direkt werte in die sql-abfrage reinzunehmen.
und an dem fakt, dass mít firefox 2 neue einträge gemacht werden kann ich leider auch nichts ändern. :dontknow:
zumindest nicht ohne fremde hilfe, ansonsten hätte ich hier nicht dieses thema gestartet. ;)

gruss
wickersham :)

 
Slava
10-05-2006, 15:22 
 
es ist bekannt, dass mozila sogar bei änderung von der fenstergrösse ein request auslösen kann.
aus diesem Grund muss du ein mechanismus einbauen, der ein doppelpost vermeidet.
dass kannman z.b.s durch erstellen von einem hidden-formularfeld, der bei ankommen von POST -variable mit gleichem namen ein zusätzlicher wert setzt.
wenn formular zweite mall gepossten wird, kannst du durch abfangen von diesem wert die eintragung von daten verhindern.
--------------------
<form ......>
<input type="hidden" name="posttest" value="<? if(isset($_POST["posttest"])) echo "gepostet"; ?>">
</form>
--------------------------------------------------
//bei ankommen
if(!empty($_POST["posttest"]))
{dein insert}

 
wickersham
10-05-2006, 16:41 
 
@Slava: Vielen, vielen Dank!!! Funktioniert jetzt einwandfrei mit beiden Browsern. Das hab ich nicht gewust, dass der Mozilla "unbeabsichtigte" requests auslöst.

Auch noch THX an alle Vorposter, die sich bemüht haben, dass problem zu lösen.

gruss
wickersham ;)

 
Slava
10-05-2006, 17:16 
 
Na ja!
das sind die Erfahrungen die mir richtig die Nerven gekostet haben:motz:


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:26 Uhr.