TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen
Registrieren Hilfe Community Downloads

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29.05.2006, 13:32   #1 (permalink)
Stickstoff Junkie
 
Benutzerbild von Fabian
 

Registriert seit: 02.02.2002
Beiträge: 3.678

Fabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer Anblick

Standard PHP-Formular: Zweites Absenden verhindern?

Hi,

ihr habt doch bestimmt einen genialen Trick für folgendes Problem auf Lager:

Ich möchte verhindern, dass ein Benutzer nach dem Absenden eines Formulars mit dem Zurück-Button seines Browsers die Daten ein zweites mal eingeben kann.

Meine Lösungsvorschläge:
1. eine ID beim Aufrufen des Formulars generieren und diese in einer Datenbank speichern, wurde das Formular bereits gesendet, wird es beim nächsten mal nicht noch einmal ausgeführt.
2. man lässt nur eindeutige Datenbankeinträge zu, sprich überprüft, ob der Eintrag schon vorhanden ist.

Aber bei beiden Lösungen muss ich nochmal die Datenbank fragen, gibt es hier keine geschickte Methode mit versteckten Eingabefeldern, um ein nochmaliges Absenden zu verhindern?
Fabian ist offline   Mit Zitat antworten
Alt 29.05.2006, 16:57   #2 (permalink)
Overclocker
 

Registriert seit: 24.05.2002
Beiträge: 200

BenniG. wird schon bald berühmt werdenBenniG. wird schon bald berühmt werden

Standard AW: PHP-Formular: Zweites Absenden verhindern?

Du kannst auch Session-Variablen setzen..
Auf deiner Eintrageseite:
PHP-Code:
<?
session_start
();
if (!isset(
$_SESSION("gesendet"))) {
   
$_SESSION("gesendet")=true;
   
//Eintrag in der Datenbank machen
} else {
   echo 
"Nur ein Eintrag pro Person!!";
}
?>
Wenn ein Benutzer dann aber irgendwann später nochmal auf die Seite kommt, oder sie SessionID ändert kann er sich nochmal eintragen..

Ansonsten würd ich den Ansatz mit der Eindeutigkeit weiterverfolgen, du kannst z.B. einen eindeutigen Index auf alle Spalten setzen, dann bekommst du eine Fehlermeldung, wenn du nochmal genau das selbe in die DB schreiben willst..

Geändert von Markus (10.06.2006 um 19:54 Uhr)
BenniG. ist offline   Mit Zitat antworten
Alt 29.05.2006, 17:31   #3 (permalink)
Stickstoff Junkie
 
Benutzerbild von Fabian
 

Registriert seit: 02.02.2002
Beiträge: 3.678

Fabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer Anblick

Standard AW: PHP-Formular: Zweites Absenden verhindern?

Na danke schonmal, ich denke ich mache eine Kombination.

Die reine "Ist ein Eintrag schon da"-Sicherung ist mir etwas wenig, weil man dann ja nur eine kleine Änderung gemacht haben kann.

Aber die Session-ID muss ich immer intern nochmal auf dem Server speichern, oder kennt da jemand noch einen Trick?
Fabian ist offline   Mit Zitat antworten
Alt 29.05.2006, 23:33   #4 (permalink)
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: PHP-Formular: Zweites Absenden verhindern?

einfach nach dem absenden einen redirect auf die seite ohne dem POST haufen im request setzen


header:location('meineseite.php');
tele ist offline   Mit Zitat antworten
Alt 30.05.2006, 06:31   #5 (permalink)
Overclocker
 

Registriert seit: 24.05.2002
Beiträge: 200

BenniG. wird schon bald berühmt werdenBenniG. wird schon bald berühmt werden

Standard AW: PHP-Formular: Zweites Absenden verhindern?

Zitat:
Zitat von tele
einfach nach dem absenden einen redirect auf die seite ohne dem POST haufen im request setzen


header:location('meineseite.php');


Das mit der Session hab ich ja oben quasi schon drin, einfach da wo
//Eintrag in der Datenbank machen
steht deine SQL-Anfrage zum Speichern der (Adress?)Daten machen..
das ganze geht natürlich auch über cookies..
PHP-Code:
<?
if (!isset($_COOKIE("gesendet"))) {
   
setcookie("gesendet"truetime()+3600*24*30);  /* expire in 30 Days */
   //Eintrag in der Datenbank machen
} else {
   echo 
"Nur ein Eintrag pro Person!!";
}
?>

Geändert von Markus (10.06.2006 um 19:54 Uhr)
BenniG. ist offline   Mit Zitat antworten
Alt 30.05.2006, 07:01   #6 (permalink)
Stickstoff Junkie
 
Benutzerbild von Fabian
 

Registriert seit: 02.02.2002
Beiträge: 3.678

Fabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer Anblick

Standard AW: PHP-Formular: Zweites Absenden verhindern?

Zitat:
Zitat von tele
einfach nach dem absenden einen redirect auf die seite ohne dem POST haufen im request setzen
header:location('meineseite.php');
Eine automatische Weiterleitung habe ich bereits eingebaut, aber der User kann doch trotzdem den Zurück-Button im Browser nutzen, oder sehe ich das falsch?
Oder macht das header:location etwas andere als echo-redirect...
Fabian ist offline   Mit Zitat antworten
Alt 30.05.2006, 07:27   #7 (permalink)
Hardware Freak
 
Benutzerbild von BomberD
 

Registriert seit: 10.04.2002
Beiträge: 7.476

BomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer Anblick

Standard AW: PHP-Formular: Zweites Absenden verhindern?

Hi,

ich kann dir leider nicht sagen wies geht. Aber vielleicht kannst du die Gültigkeit der Eingabemaske Löschen.

Ne Art ID die zugeteilt, wird wenn das Formularfenster geöffnet wird (Also der Link oder Button mit dem Man zum Formular kommt). Wenn das Formular abgesendet wurde, wird die ID ungültig.
Die ID müsstest du meiner Meinung nach nicht in ner DB Speichern. Sondern als Laufzeitvariable. Klick Variable erzeugen. senden Variable rücksetzen.

Leider kenn ich mich mit PHP nicht aus. Aber ich würde versuchen in der Richtung nach ner Lösung zu suchen.

Geändert von BomberD (30.05.2006 um 07:30 Uhr)
BomberD ist offline   Mit Zitat antworten
Alt 30.05.2006, 08:21   #8 (permalink)
Nachtduscher
 
Benutzerbild von _Smash_
 

Registriert seit: 22.01.2002
Beiträge: 12.569

_Smash_ ist ein wunderbarer Anblick_Smash_ ist ein wunderbarer Anblick_Smash_ ist ein wunderbarer Anblick_Smash_ ist ein wunderbarer Anblick_Smash_ ist ein wunderbarer Anblick_Smash_ ist ein wunderbarer Anblick_Smash_ ist ein wunderbarer Anblick

Standard AW: PHP-Formular: Zweites Absenden verhindern?

Sagt mal lest ihr BenniG.´s Posts nicht? Er hat quasi alles schonmal geschrieben, was ihr hier vorschlagt, sogar mir Codebeispielen.
Ihr seid ja nur neidisch, weil ich der einzige bin, zu dem die leisen Stimmen sprechen!
TweakPC IRC Channel: #tweakpc im Quakenet (irc.quakenet.org)
Satzzeichen folgen direkt hinter einem Wort. Es ist kein Leerzeichen dazwischen!
_Smash_ ist offline   Mit Zitat antworten
Alt 30.05.2006, 08:34   #9 (permalink)
Hardware Freak
 
Benutzerbild von BomberD
 

Registriert seit: 10.04.2002
Beiträge: 7.476

BomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer Anblick

Standard AW: PHP-Formular: Zweites Absenden verhindern?

Gelesen schon, aber überlesen. Sry Benny.

Meine Kollegin hat noch gemeint sie haben mal etwas ähnliches gemach tund im PHP Formular nach dem Erfolgreichen Senden die Variablen in den Feldern gelöscht. Das heist die Eingabefelder sind beim zurückgehen nach dem Senden wieder leer.
Sie ist der Meinung, dass das so auch gehen sollte.
BomberD ist offline   Mit Zitat antworten
Alt 30.05.2006, 08:48   #10 (permalink)
Overclocker
 

Registriert seit: 24.05.2002
Beiträge: 200

BenniG. wird schon bald berühmt werdenBenniG. wird schon bald berühmt werden

Standard AW: PHP-Formular: Zweites Absenden verhindern?

Mit autocomplete hat man so ein form dann in null komma nix wieder mit den alten werten gefüllt
Wenn man ein Cookie setzt, ob das Formular ausgefüllt wurde (wird bei einigen umfragen (z.B. bei Onlinekosten) so gemacht) hat man schonmal eine Menge User ausgesperrt, wer von denen weiß schon wie man Cookies löscht
Die Eingabefelder löschen kannst du eh nur Clientseitig per Javsscript z.B. ..
BenniG. ist offline   Mit Zitat antworten
Alt 05.06.2006, 20:43   #11 (permalink)
Stickstoff Junkie
 
Benutzerbild von Fabian
 

Registriert seit: 02.02.2002
Beiträge: 3.678

Fabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer AnblickFabian ist ein wunderbarer Anblick

Standard Lösung

Soderle,

ich habe in Anlenung an die Lösung von BenniG folgendes eingebaut:

PHP-Code:
<?php
session_start
();
if (
$_SESSION[reload]=='no') {echo 'Weiterleitung';exit;}
$_SESSION[reload]='no';
?>
Das ganze wird dann noch mit einem Check auf doppelten Eintrag in der Datenbank kombiniert, damit nicht bei einem zweiten seperaten Aufruf nochmal eingetragen wird.

Also Danke für den Tip ... die positive Bewertung dürfte dich erreicht haben.

Geändert von Markus (10.06.2006 um 19:55 Uhr)
Fabian ist offline   Mit Zitat antworten
Alt 10.06.2006, 19:55   #12 (permalink)
BofH
 
Benutzerbild von Markus
 

Registriert seit: 22.01.2002
Beiträge: 2.384

Markus sorgt für eine eindrucksvolle AtmosphäreMarkus sorgt für eine eindrucksvolle AtmosphäreMarkus sorgt für eine eindrucksvolle Atmosphäre

Standard AW: PHP-Formular: Zweites Absenden verhindern?

und wenn man [ php ] anstatt code nutzt siehts auch noch schön aus
Markus ist offline   Mit Zitat antworten
Antwort

Stichworte
absenden, phpformular, verhindern, zweites


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
"Server nicht gefunden" nach Absenden von Formularen Phoenix73 Internet & Webprogramme 5 15.01.2008 20:54
PDF-Formular erstellen UnoOC Windows & Programme 2 06.09.2006 11:14
Zweites NT einbauen!?! Bad Blade Gehäuse und Case-Modding 10 25.04.2005 16:31
Zweites OS auf PDA! paulef Notebooks, Laptops, PDAs, Handy usw. 2 04.04.2005 15:32
PHP Formular ExOrBiTaNt Programmiersprachen 4 06.04.2003 19:11


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr.






Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved