php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.12.2009, 11:18  
Erfahrener Benutzer
 
Registriert seit: 06.03.2009
Beiträge: 166
PHP-Kenntnisse:
Anfänger
strgg ist zur Zeit noch ein unbeschriebenes Blatt
Standard Formular Reload $POST_data nicht nochmal senden

Hi

- Ein File-Upload-Formular welches nach dem submit nicht extern weitergeleitet werden soll.
- Bei einem Refresh (oder Back) fragt der Browser (FF,IE) ob die Daten wiedergesendet werden sollen. Ziel dies zu unterbinden.

Versucht:
PHP-Code:
echo "<meta http-equiv=\"refresh\" content=\"0;url=".$HTTP_SERVER_VARS[php_SELF]."\">"
Versucht:
PHP-Code:
header("Expires: Sat,5 Jul 2000 00:00:00 GMT"); // Datum in der Vergangenheit 
Versucht:
PHP-Code:
setcookie("Killer",$value,time()+1);
setcookie("Killer",''); 
Alle bisherigen Versuche haben nichts bewirkt. Das Formular wird im Hintergrund zur Verarbeitung per action an eine php weitergereicht.

Gibts da ev. Tricks die Popups der Browser zu verhindern?

Danke und Gruss
strgg ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.12.2009, 11:25  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

Wenn man eine Seite per POST angefordert hat und dann die Seite aktualisiert müssen die POST Daten ja wieder gesendet werden, damit die gleiche Siete angezeigt werden kann. Dies fragt der Browser ab.
Du kannst versuchen den User per header auf die gleiche Seite aber per GET geladen weiter zu leiten, dann gibt es nicht mehr das Problem beim aktualisieren aber wenn er auf Zurück klickt wird wirst du nicht verhindern können, dass die Meldung in seinem Browser kommt.

lg
draco
draco88 ist offline  
Alt 22.12.2009, 11:32  
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 1.164
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

Möchtest du unterbinden, dass die Abfrage kommt oder dass die Daten neu gesendet werden?
dennis81 ist offline  
Alt 22.12.2009, 11:44  
Erfahrener Benutzer
 
Registriert seit: 06.03.2009
Beiträge: 166
PHP-Kenntnisse:
Anfänger
strgg ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Möchtest du unterbinden, dass die Abfrage kommt oder dass die Daten neu gesendet werden?
Wenn möglich irgendwie rumtricksen damit die Abfrage gar nicht erst kommt.
Schlussendlich geht es aber darum dass die Daten nicht erneut gesendet werden (auch wenn der User "falsch klickt"). Dies sehr störend da die Uploaddateien bis zu 50mb gross sein können.
strgg ist offline  
Alt 22.12.2009, 11:55  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Der einfachste weg ist eine Weiterleitung mit header('Location: ...'); zu machen. Diese Weiterleitung läuft dann über GET. Sollte man dann auf aktualisieren klicken dann würde die Seite ganz normal wieder laden.
Flor1an ist offline  
Alt 22.12.2009, 11:58  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von strgg Beitrag anzeigen
Wenn möglich irgendwie rumtricksen damit die Abfrage gar nicht erst kommt.
Schlussendlich geht es aber darum dass die Daten nicht erneut gesendet werden (auch wenn der User "falsch klickt"). Dies sehr störend da die Uploaddateien bis zu 50mb gross sein können.
JavaScript kann dir helfen. Upload per Ajax und dem swfUploader durchführen.

Somit gibt es kein reguläres POST request mehr was doppelt ausgeführt werden könnte.

Du könntest auch in der Session des Benutzers speichern das er den Upload bereits durchgeführt hat und dies bei einem erneutem Upload abfragen. Die Uploadsperre wird entfernt, sobald der User das Formular erneut aufruft. D.h. wenn über Reload oder Zurück das verarbeitende Script erneut aufgerufen wird, tut es einfach nichts.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

Geändert von Dark Guardian (22.12.2009 um 12:14 Uhr).
Dark Guardian ist offline  
Alt 22.12.2009, 12:23  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.234
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Dark Guardian Beitrag anzeigen
Du könntest auch in der Session des Benutzers speichern das er den Upload bereits durchgeführt hat und dies bei einem erneutem Upload abfragen. Die Uploadsperre wird entfernt, sobald der User das Formular erneut aufruft. D.h. wenn über Reload oder Zurück das verarbeitende Script erneut aufgerufen wird, tut es einfach nichts.
Stimmt so nicht. Sobald ein reguläres POST-Formular verwendet wird, wird auch die Datei in aller Regel IMMER wieder mitgesendet beim Aktualisieren. Auch ein Header oder sonsteine Sperre ändert de Fakto daran erst einmal nichts. Die Uploadsperre in der Session verhindert nicht, dass erst einmal die 50MB erneut über die Leitung gehen.

Die einzige saubere Lösung hast du mit Ajax jedoch bereits genannt.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 22.12.2009, 12:44  
Erfahrener Benutzer
 
Registriert seit: 06.03.2009
Beiträge: 166
PHP-Kenntnisse:
Anfänger
strgg ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Der einfachste weg ist eine Weiterleitung mit header('Location: ...');
Hab ich schon versucht ohne Wirkung (auf [php_SELF]). Falls Du das hinkriegst, bitte konkreten Code. Danke

Zitat:
Du könntest auch in der Session des Benutzers speichern das er den Upload bereits durchgeführt hat
Ist dies möglich, wie würdest Du denn dies vollziehen:
PHP-Code:
session_start( );
$_SESSION['filename']=$_FILES['name'];
if (!isset(
$_SESSION['filename']=''))
{
...

Auch wenns nicht gehen mag, poste doch mal den Code, rein aus Neugierde.

Zitat:
JavaScript kann dir helfen. Upload per Ajax und dem swfUploader durchführen.
Danke für den Hinweis. Wollte eigentlich diesen Umweg verhindern (Nutze fest definierte Klassen welche ich nun wahrscheinlich zur Implementation mit swfUploader aufbrechen muss) aber scheint wohl unumgänglich. Hoff nur, dass mir das nicht über den Kopf wächst.

Zitat:
SWFUpload is not a drag & drop upload control. It requires knowledge of JavaScript and the DOM.
Vom Regen in die Traufe. hehehe

Geändert von strgg (22.12.2009 um 12:53 Uhr).
strgg ist offline  
Alt 22.12.2009, 12:48  
Neuer Benutzer
 
Registriert seit: 26.11.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Schnatterinchen befindet sich auf einem aufstrebenden Ast
Standard

mache es auch über nen redirect und es funktioniert.
PHP-Code:
header('Location: index.php'); 
Das includen der aktuellen Seite erfolgt dann auf der index.php.
Schnatterinchen ist offline  
Alt 22.12.2009, 12:57  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.234
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Es geht um das Verhindern, dass mittels Zurück-Button zum Erneuten Versenden des Formulars und damit der Datei aufgefordert wird. Und die Header-Location Weiterleitung verhindert das schlichtweg nicht. Sie verhindert nur, dass ein direktes Klicken auf Aktualisieren einen erneuten Formularversand auslöst. Nach Klicken auf Zurück wird jedoch jeder aktueller Browser wieder das Formular versenden bzw. dazu auffordern.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Formular senden ohne Reload Marti95. JavaScript, Ajax und mehr 12 16.02.2011 06:27
Problem mit Formular, Daten an datenbank senden Aurec PHP Tipps 2008 11 20.11.2008 18:17
Formular an mehrere Empfänger senden wolfhill PHP Tipps 2008 6 09.04.2008 10:32
Formular nach senden schließen Perry_Rhodan PHP Tipps 2008 1 27.03.2008 17:11
POST Daten senden ohne Formular tinchen PHP Tipps 2007 6 07.03.2007 11:54
formular automatisch senden bark PHP Tipps 2006 1 11.01.2006 10:41
Formular an 2 Email adressen senden PHP Tipps 2006 7 07.01.2006 17:54
Nach dem Formular Senden Zurückgehen mit Browserbutton PHP-Fortgeschrittene 3 24.08.2005 12:12
Formular ohne Knopfdruck senden? NetLook PHP Tipps 2005-2 5 14.06.2005 16:04
Formular an PHP senden PHP Tipps 2005 6 11.04.2005 21:14
Formular an meine Email adresse senden 'progman' PHP Tipps 2005 1 01.03.2005 19:43
Daten aus Formular senden PHP Tipps 2005 12 14.01.2005 14:11
Ein Formular an $PHP_SELF senden?? PHP Tipps 2005 8 11.01.2005 01:30
Formular auf lokalem Server senden PHP Tipps 2005 2 01.01.2005 17:43
[Erledigt] Formular via Mail über Php senden? PHP Tipps 2004 3 21.07.2004 14:09

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php formular reload verhindern, php erneut senden verhindern, formular reload verhindern, php reload verhindern, php reload, formular erneut senden verhindern, php formular erneut senden verhindern, php formular doppelt senden, erneut senden verhindern, erneut senden verhindern php, http://www.php.de/php-einsteiger/62554-formular-reload-post_data-nicht-nochmal-senden.html, php form reload, php erneutes senden verhindern, formular reloads verhindern, php formular reload, php formular neu laden, html formular reload verhindern, form reload verhindern, reload verhindern php, php formular erneut senden

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:54 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum