Top-Themen

Aktuelle Themen (A bis Z)

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, 7235 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 ..
Ähnliche Inhalte
PHP
MySQL Update eines Datensatz mit Variable
gelöst Frage von Jens4everPHP4 Kommentare

Hallo zusammen, ich habe jetzt 2 h gesucht und versucht und komme gerade nicht weiter Ich habe eine Mail-Verifizierung ...

PHP
PHP soll Datensätze in der Datenbank überprüfen
Frage von YanmaiPHP2 Kommentare

Hallo ihr Administratoren ;) Ich habe eine Datenbanktabelle "Freundschaftsanfragen". Wenn Benutzer a Benutzer b eine Freundschaftsanfrage schickt, dann wird ...

Windows Server
Druck über Browser
Frage von NathalemWindows Server1 Kommentar

Hallo sehr geehrte Administratoren und Administroninnen, Ich würde gerne unseren Printserver entsprechent anpassen dass es möglich ist ohne weitere ...

Datenbanken
MySQL Function Anzahl Datensätze ermitteln
gelöst Frage von MultiStormDatenbanken4 Kommentare

Hallo, aktuell stehe ich vor einem Problem bei dem ich nicht weiter komme. ich wollte mit eine MySQL funtion ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 4 StundenInternet3 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 11 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 22 StundenWindows 103 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 TagSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless16 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...