POST-Anweisung doppelt ausführen

service4-you

Mitglied
Hallo,

ich habe ein grosses Problem und hoffe auf einen Tipp oder Hilfestellung.
Ich habe eine Funktion die über $_POST ausgeführt wird. Wenn man nun
im Menü auf einen anderen Menüpunkt geht z.B. FAQ und mit der Zurücktaste
auf der tastatur wieder zurcük kehr dann wird die Funktion nochmals ausgeführt.

Ich habe nun versucht eine SESSION zu setzen :
PHP:
$_SESSION[start] = "start"
Vor der Ausführung
PHP:
if ($fehler != "1" && $_SESSION == "start") 
{
....
}
und nach der Ausfürung
PHP:
unset($_SESSION['start']);
aber auch das funktioniert nicht. Die Problematik ist das die Webseite
mit einem mobilen Gerät aufgerufen wird und dann die WARNUNG das
bei "OK" die POST-Anweisung nochmals ausgeführt wird nicht kommt.

Hat irgend jemand eine Idee ?

Grüsse aus München
-- Alf --
 
Wenn gepostet wurde könntest du alle aktionen ausführen, mit header() die gepostete Seite überschreiben und dann eine seite anzeigen in die nicht hineingepostet wurde. Mit den Inhalten des Posts.
 
Hallo,

da ich nicht verstanden habe warum dein POST zweimal gesendet wird, möchte ich dir mal darstellen, wie ich meine POST versende, da diese nur einmal gesendet werden:

Formular mit Submit-Button (auszugsweise):
Form:
<form method="post" name="kontakt_form" action="<?php echo $_SERVER["PHP_SELF"]."?page=".$_GET['page'] ?>">
Button:
<input type="submit" name="kontakt_senden" value="Nachricht senden"/>

Jetzt ist das Formular abgeschickt und dies wird abgefangen über:

if(isset($_POST['kontakt_senden'])){
if($_POST['name'] == "" || $_POST['nachricht'] == ""){
echo "Versuchs nochmal oder sowas";
}
else(
senden($_POST['name'], $_POST['nachricht']);
}
}

Jetzt wurde die Funktion Senden aufgerufen:
function senden($sendername, $nachricht){
Diese schickt zum Ende ihrer Verarbeitung einen header zurück:
header("Location: ".$_SERVER["PHP_SELF"]."?page=".$_GET['page']."&gesendet=ja");
und Funktion senden schließen:
}
Fertig ist der POST Workaround. So wird über gesendet=ja dann überprüft ob bereits gesendet wurde und fertig. Ich hoffe ich konnte dir weiterhelfen.
MfG Thomas
 
Hallo @engelb danke, das habe ich auch gedacht, da es aber um ein
mobiles Gerät handelt ist jeder Seitenaufruf für den Ablauf nicht wirklich
so geeignet, deshalb suche ich nach einer schnelleren Lösung.

danke @anwendungsentwickl für Deine Antwort. Ist so auch einleuchtend,
jedoch ist es ein SMS-Portal und das sogenannte senden besteht aus über
20 Post-Variabeln gibt es da eine kleiner Lösung, ansonsten muss ich wohl
das ganze Script umbauen und dann hoffen das es funktioniert. Aber danke.

Grüsse aus München

--Alf --
 
Hallo,

es gibt bei PHP auch ein Array das alle POST und GET Variablen enthält das kannst du dann auch im Funktionsaufruf benutzen, anderseits brauchst du ja auch garnkeine Funktion sondern kannst den header auch schon im if(isset($_POST['kontakt_senden'])){ } Bereich verarbeiten.
Das Problem was dir zugrundeliegt ist doch einfach nur das du nach dem senden einer $_GET['gesendet'] Variable sagst das sie gesende worde und so kein weiteres senden ohne bestätigen des submit buttons erfolgt.

MfG Thomas
 
Zurück