Newsgroup: it.comp.www.php
Titolo: Refreshing form invio email

ho fatto un form di invio email usando il seguente:
pnMail($mail, "oggetto", $messaggio, "
From:pi...@puto.com
" )
 una volta inviata  l'email, se faccio il refresh della pagina,
continua a inviarla 
e' possibile evitare l'invio per ogni refresh?
TIA.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 continua a inviarla  e' possibile evitare l'invio per ogni refresh?
O utilizzi le sessioni/cookie per "registrare" l'avvenuto invio Oppure
fai un redirect verso una pagina di risposta separata.
-- 
I am what I am, I do what I can
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y
L'uomo, conscio di sbagliare, persevera.

 fai un redirect verso una pagina di risposta separata.
pero' se fa indietro e ri-refresh .... si puo' disabilitare
il tasto indietro?


 il tasto indietro?
E' un problema lato client. Il PHP non centra. Per evitare qualsiasi
problema utilizza cookie o sessioni.


 
E' nella progettazione il problema (o errore).
fai una pagina "ponte" che non arriverà mai al client, altrimenti non 
risolvi.
ad esempio:
1)pagina_form.php con action="elabora.php"
2)in elabora.php mandi email, registri i POST, fai operazioni su DB ecc.
alla fine metti un bel header("Location: feedback.php");
3) feedback.php : innocua pagina con al massimo variabili GET tipo
feedback.php?esito=ok oppure feedback.php?esito=ko
ma niente POST
In pratica nella history del client arriva solo la pagina 1 e 3.
E client non vede, post non duole.
(Bé sono fuso, devo smettere di lavorare 12 ore al dì)
ciao
marcello verona

 alla fine metti un bel header("Location: feedback.php");
 
mi sembra che il reindirizzamento con
header("Location: feedback.php");
possa essere fatto solo all'inizio.....o no?


 possa essere fatto solo all'inizio.....o no?
No, puo' anche essere l'ultima istruzione di uno script. L'importante è
che prima non venga inviato nulla al buffer d'uscita.


 che prima non venga inviato nulla al buffer d'uscita.
infatti precedentemente invio quindi....
il codice in questione e' il seg: 
nel corpo sono definite le funzioni preview e submit che semplicemente 
impostano l'email da spedire in fondo alla pagina ho: 
global $request_preview, $request_ok; 
$req = ""; 
if ($request_preview) $req = "PREVIEW"; 
elseif ($request_ok) $req = "OK"; 
switch($req) { 
case "PREVIEW": 
PreviewContact(); 
break; 
case "OK": 
SubmitContact(); 
break; 
default: 
defaultDisplay(); 
break; 
} 
?> 
refreshando lancio continuamente SubmitContact(); 
come posso rompere sto ciclo?


 come posso rompere sto ciclo?
Hai pensato di utilizzare ob_start etc per inviare al buffer solo
quando sei sicuro che non devi piu' inviare header?
In alternativa puoi fare un print di javascript che faccia il redirect.
Non proprio pulito ma funzionale.


 Non proprio pulito ma funzionale.
ma in questo modo non mi aprirebbe un'altra finestra?
thx


 thx
infatti :
print("<script language = \"javascript\">
window.open('pippo.php')</script>"
me ne apre una seconda :-(


 window.open('pippo.php')</script>"
Infatti un beamato ciufolo:
<script language="javascript">
	location.href = "pippo.php";
</script
