Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Eingabeformular nach Senden in MYSQL Datenbank sendet beim Drücken des Browser Aktualisierungsbutton den Datensatz nochmal

Frage Entwicklung PHP

Mitglied: gechger

gechger (Level 1) - Jetzt verbinden

01.10.2009, aktualisiert 11.10.2009, 7161 Aufrufe, 6 Kommentare

Datensätze aus einem Eingabeformular werden erneut in eine Datenbank geschrieben, wenn das Formular nicht geschlossen wird und im Browser der Aktualisierungsbutton gedrückt wird. Wie verhindere ich das?

Hallo Forum,

wie im Vorwort bereits beschrieben, will ich verhindern, daß nach Absenden eines Datensatzes in die MySQL Datenbank der Datensatz mehrfach gespeichert wird, falls jemand den Aktualisierungsbutton drückt.

Versuche, die benutzen Variablen am Ende mit unset zu löschen, brachten kein Ergebnis. Der Browser scheint sich die Eingaben irgendwie zu merken.

Gibt es einen php Befehl zum Löschen des Caches oder eine andere sichere Methode, um dies zu verhindern?

Vielen Dank für jede Idee

Schöne Grüße
Christof
Mitglied: vonbredowp
01.10.2009 um 14:47 Uhr
Hallo Christof!

Auf die Schnelle:


Gib dem Benutzer / Besucher eine Session ID und gib ihm eine extra Var. , im Sinne von "hat_eingetragen" = true
Bitte warten ..
Mitglied: filippg
01.10.2009 um 14:53 Uhr
Hallo,

wenn der Nutzer "Aktualisieren" drückt werden die letzten Formulardaten nochmal gesendet - daher wird ein "unset" in PHP auch nicht helfen. Eine Methode, dem Browser das "nochmal senden" zu verbieten gibt es auch nicht direkt.
Eine Möglichkeit: du baust in das Formular ein verstecktes Feld ein (etwa "PostID"), das als Wert einen Identifier hat (etwa Datum+Uhrzeit+Zufallszahl). Wenn ein Datensatz gespeichert wird, wird dieser Wert mit in die DB geschrieben. Und vor jedem Speicher eines Datensatzes prüfst du, ob die PostID schon in der DB vorhanden ist. Wenn ja wird das speichern verweigert. Alternativ zur Speicherung in der DB kann man das auch über die PHP Session-Verwaltung lösen. Der Ansatz bleibt aber letztlich immer der gleiche: Du musst dafür sorgen, dass dieses Formular eindeutig identifizierbar ist und dann serverseitig schauen, ob es schon verarbeitet wurde.

Gruß

Filipp
Bitte warten ..
Mitglied: gechger
01.10.2009 um 15:07 Uhr
Grüß Dich,

eine ähnliche Idee hatte ich auch schon. Beim Aufrufen des Formulares wollte ich ein VAriable setzen:
$send="0";
Beim Versenden des Formulares sollte $send="1", drin stehen.

Der User hat nun aber die Möglichkeit, ohne das Formular zu verlassen, mehrere Datensätze hintereinander einzugeben. $send steht dann aber auf "1" und das Senden eines weiteren Datensatzes würde verhindert.
Er müßte dann immer das Formular verlassen und neu laden.

Unschön.

Ich denke, die Idee mit dem Leeren des Cache ist geschickter.

Aber schönen Dank für die Idee
Bitte warten ..
Mitglied: vonbredowp
01.10.2009 um 15:15 Uhr
eine ähnliche Idee hatte ich auch schon. Beim Aufrufen des
Formulares wollte ich ein VAriable setzen:


Nein, ich denke da verstehst du etwas falsch ;)

Das Session Management wird vom Server übernommen.

Schau dir kurz die drei Seiten dazu an:

http://tut.php-q.net/de/sessions.html
http://de3.php.net/manual/en/features.sessions.php
http://www.selfphp.de/praxisbuch/praxisbuch.php?group=35


Du kannst natürlich auch die IP als "Identifier" nehmen.
Bedeutet, dein Skript überprüft ob die IP schon was eingetragen hat oder nicht ;)
Bitte warten ..
Mitglied: gechger
01.10.2009 um 15:26 Uhr
Hallo Fillip,

das scheint die Idee zu sein, die ich gesucht habe.
Eine weitere Spalte in der Datenbank tut ja nicht weh. Datum und Zufallswert sollte genügen.

Vielen Dank

Schöne Grüße
Christof
Bitte warten ..
Mitglied: Guenni
01.10.2009 um 17:20 Uhr
Hi Christof,

ich rufe in einem solchen Fall die Funktion header auf, nachdem

der DB-Eintrag erfolgt ist:

Das Skript wird neu geladen und die POST-Daten sind nicht mehr da.

01.
<?php 
02.
 
03.
if(isset($_POST['Name_des_Submitbuttons'])){ 
04.
 . . . 
05.
 
06.
 ToDo 
07.
 
08.
 . . . 
09.
 
10.
 header("location:Name_des_Skript"); 
11.
12.
?>
Gruß
Günni
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Exchange Server
Exchange 2007 Datenbank restore ohne Exchange zu verändern - SBS2008

Frage von pitamerica zum Thema Exchange Server ...

Outlook & Mail
Outlook 2013 stürzt beim Senden ab (8)

Frage von ForgottenRealm zum Thema Outlook & Mail ...

Exchange Server
SBS 2011 Exchange Multidomain kein senden über Outlook möglich (1)

Frage von pla112 zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...