Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    190

    Elimina Variabile $_POST

    Codice PHP:
    /* -- Connessione al Database dei Commenti -- */
    include 'database_commenti.php';

    /* -- Inserimento del Commento -- */    
    if(count($_POST) > 0)
    {
        
    $ip $_SERVER['REMOTE_ADDR'];
        
    $agent $_SERVER['HTTP_USER_AGENT'];
        
    $date_db time();
        
        if(!empty(
    $_POST['commento'])) 
        {
            
    /* -- Settiamo il Commento -- */
            
    $commento htmlentities($_POST['commento']);
            
            
    /* -- Impostiamo la Query -- */
            
    $db_commenti_sec "INSERT INTO " $sec " (filename_code_extension, nickname, commento, userIP, country, date, agent) ";
            
    $db_commenti_sec.= "VALUES ('$sourceID', '$username', '$commento', '$ip', '$country', '$date_db', '$agent')";
            
            
    /* -- Salvataggio dei Dati nel DataBase -- */
            
    $write mysql_query ($db_commenti_sec) or die (mysql_error()); 
            if (
    $write === FALSE$status "Errore nel salvataggio del Commento. Riprova.";
            else 
    $status "Il commento è stato inserito correttamente";
            
            
    /* -- Distruggiamo la Variabile Commento -- */
            
    unset($_POST['commento']); 
        }
        else
        {
            
    /* -- Commento Vuoto | Errore -- */
            
    $status "[b]Inserisci il Testo del Commento![/b] (max 250 caratteri)";
        }

    Inserisce il commento e poi alla fine distrugge la variabile $_POST['commento']
    ma cio sembra non accadere perche ad ogni refresh della pagina mi inserisce lo stesso commento, cioè sempra non distruggere la variabile.
    Come mai?

  2. #2
    ho lo stesso tipo di problema

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    dopo l'esecuzione del form eseguite un reload della pagina, in maniera tale che un F5 non rinvii le informazioni del form di nuovo verso lo script, ma sia oramai vuoto.
    sometimes it's just like teaching pigs how to fly

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Re: Elimina Variabile $_POST

    Originariamente inviato da Lory9618
    ...
    Inserisce il commento e poi alla fine distrugge la variabile $_POST['commento']
    ma cio sembra non accadere perche ad ogni refresh della pagina mi inserisce lo stesso commento, cioè sempra non distruggere la variabile.
    Come mai?
    Tu distruggi la variabile $_POST['descrizione'], ma il browser ricorda cosa ha inviato, se tu fai il refresh dovrebbe apparirti un messaggio di notifica che ti chiede una cosa tipo "Vuoi reinviare i dati....blablabla?" rispondendo di si, il browser invia una richiesta uguale a quella precedente, che contiene quindi i dati post e $_POST['descrizione'] viene ricreata.

    Se il browser non ti chiede conferma per reinviare i dati, probabilmente è stato impostato il "si" per default.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    190
    Originariamente inviato da nickcv
    dopo l'esecuzione del form eseguite un reload della pagina, in maniera tale che un F5 non rinvii le informazioni del form di nuovo verso lo script, ma sia oramai vuoto.
    Quindi come risolvo?

    Originariamente inviato da Alhazred
    Tu distruggi la variabile $_POST['descrizione'], ma il browser ricorda cosa ha inviato, se tu fai il refresh dovrebbe apparirti un messaggio di notifica che ti chiede una cosa tipo "Vuoi reinviare i dati....blablabla?" rispondendo di si, il browser invia una richiesta uguale a quella precedente, che contiene quindi i dati post e $_POST['descrizione'] viene ricreata.

    Se il browser non ti chiede conferma per reinviare i dati, probabilmente è stato impostato il "si" per default.
    Infatti non mi chiede nessuna conferma

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Una volta eseguito lo script potresti effettuare un redirect su un'altra pagina invece di restare sulla stessa, a quel punto un F5 non avrebbe più l'effetto di reinviare i dati post.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    190
    Originariamente inviato da Alhazred
    Una volta eseguito lo script potresti effettuare un redirect su un'altra pagina invece di restare sulla stessa, a quel punto un F5 non avrebbe più l'effetto di reinviare i dati post.
    Bhe sarebbe buona come soluzione, pero visto che riguarda un commento la trovo una cosa poco comoda, altri metodi non ci sono?

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    come già detto esegui un reload della pagina... ovvero fai un redirect verso la stessa pagina.
    sometimes it's just like teaching pigs how to fly

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    190
    Originariamente inviato da nickcv
    come già detto esegui un reload della pagina... ovvero fai un redirect verso la stessa pagina.
    Cosi?

    Codice PHP:

    /* -- Filto Memoria Temporanea  -- */
        
    ob_start();

    /* -- Inserimento del Commento -- */    
    if(count($_POST) > 0)
    {
        
    $ip $_SERVER['REMOTE_ADDR'];
        
    $agent $_SERVER['HTTP_USER_AGENT'];
        
    $date_db time();
        
        if(!empty(
    $_POST['commento'])) 
        {
            
    /* -- Settiamo il Commento -- */
            
    $commento htmlentities($_POST['commento']);
            
            
    /* -- Impostiamo la Query -- */
            
    $db_commenti_sec "INSERT INTO " $sec " (filename_code_extension, nickname, commento, userIP, country, date, agent) ";
            
    $db_commenti_sec.= "VALUES ('$sourceID', '$username', '$commento', '$ip', '$country', '$date_db', '$agent')";
            
            
    /* -- Salvataggio dei Dati nel DataBase -- */
            
    $write mysql_query ($db_commenti_sec) or die (mysql_error()); 
            if (
    $write === FALSE$status "Errore nel salvataggio del Commento. Riprova.";
            else 
    $status "Il commento è stato inserito correttamente";
            
            
    /* -- Distruggiamo la Variabile Commento -- */
            
    unset($_POST['commento']); 
            
            
    /* -- -- */
            
    if (!isset($_SESSION['url_commenti']))
            {
                
    $url $_SERVER['HTTP_REFERER'];
                
    $_SESSION['url_commenti'] = $url;
            }
            
    header ("location: " $_SESSION['url_commenti']);
            
            
    /* -- Restituiamo l'OutPut -- */
            
    ob_end_flush();
        }
        else
        {
            
    /* -- Commento Vuoto | Errore -- */
            
    $status "[b]Inserisci il Testo del Commento![/b] (max 250 caratteri)";
        }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.