Newsgroup: it.comp.www.php
Titolo: Evita il post multiplo a seguito del refresh della pagina

<?php
/*
* L'utilizzo delle sessioni e' arbitrario,
* va bene qualsiasi sistema di archiviazione
* persistente.
*/
session_start ();
if (!isset ($_SESSION['hashes']) ||
    !is_array ($_SESSION['hashes'])) {
    $_SESSION['hashes'] = array ();    
}
/* Logica dell'invio */
$_POST['hash'] = isset ($_POST['hash']) ? $_POST['hash'] : '';
if (isset ($_POST['action']) &&
    $_POST['action'] == 1) {
 
    if (!in_array ($_POST['hash'], $_SESSION['hashes'])) {
        $_SESSION['hashes'][] = $_POST['hash'];
        print ("Questa &egrave; la prima volte che invii questa form!");
 
        /*
        * Inserisci qui il codice di gestione
        * dei dati della form.
        */
 
    } else {
        print ("Questa form &egrave; gi&agrave; stata inviata!");
        /*
        * Inserisci qui il codice di gestione
        * dell'errore.
        */
    }
}
/*
* La variabile hash contiene un identificativo
* univoco che distingue una determinata form/una
* precisa azione di submit.
*/
$hash = md5 (microtime ());  
?>
<form method="post" action="<?php print ($_SERVER['PHP_SELF']); ?>">
<input type="hidden" name="hash" value="<?php print ($hash); ?>" />
<input type="text" name="test" value="this is a test" />
<input type="hidden" name="action" value="1" />
<input type="submit" value="Invia" />
</form>
questo codice vermante fatto bene (io non sarei stato in grado) evita il
reinserimento dei dati al refresh della pagina
io volevo fare il tutto senza però usare le sessioni e dal commento del
codice sembra sia possibile ma volevo sapere se qualcuno poteva darmi
qualche dritta usando ad esempio variabili o campi input per esempio.
ciao a tutti e grazie per l'eventuale aiuto
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 esempio.
In verita' il commento dice "va bene qualsiasi sistema di archiviazione
persistente". Il server deve essere in grado di "ricordare" se un post
e' gia' stato inviato (da qui il "persistente" del commento). Per fare
questo nel codice sono state usate le sessioni, ma puoi farlo anche
usando un database od un file (anche se sconsigliato).
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 usando un database od un file (anche se sconsigliato).
grazie per la risposta e la precisazione ma un metodo con quello che
indico io non c'è proprio?
ciao e grazie ancora


 indico io non c'è proprio?
Il sistema proposto per funzionare DEVE appoggiarsi ad un sistema di
persistenza,la soluzione che hai indicato tu non si appoaggia a nessun
sistema di persistenza per cui non puo' funzionare.


 sistema di persistenza per cui non puo' funzionare.
ok grazie per la risposta e soprattutto per la disponibilità
ciao


 sistema di persistenza per cui non puo' funzionare.
ho però un problema in locale gira perfettamente mentre montato sul un
server esterno non riconosce cha la pagina ha già girato. da cosa può
dipendere?


 dipendere?
error_reporting = E_ALL, display_errors = On
Non e' che ci sono dei warning relativi all'avvio delle sessioni?


 Non e' che ci sono dei warning relativi all'avvio delle sessioni?
il browser non mi restituisce nessun errore. come posso interrogarli?


 il browser non mi restituisce nessun errore. come posso interrogarli?
Mi sembra di avelo gia' scritto questo.


                    Il 24 Mar 2005, 16:41, "Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha
scritto:

tutto ok avevo dimenticato un pezzo di codice.
ciao e grazie di tutto anche per la pazienza
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/