Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Problema Cookie

  1. #1

    Problema Cookie

    Il cookie in questione si chiama "emailmittente":
    Codice PHP:
    <?php
    /***
    Se non esiste alcun cookie
    ***/
    if(empty($HTTP_COOKIE_VARS)){

    $message="" ;

    /***
    Invia un cookie temporaneo
    ***/
    setcookie("emailmittente",$message) ;

    /***
    Refresh della pagina per poter leggere i dati appena inviati
    ***/
    header("Location: ".$_SERVER["PHP_SELF"]) ;

    }

    /***
    Se il cookie esiste e register_globals= On
    ***/
    elseif(isset($emailmittente)){

    echo(
    $emailmittente) ;

    }

    /***
    Se esiste l'array $_COOKIE (php >= 4.1) e se l'array non è vuoto (cioè se il cookie è stato inviato con successo)
    ***/
    elseif (isset($_COOKIE)&& !empty($_COOKIE)){

    echo(
    $_COOKIE["emailmittente"]) ;

    }

    /***
    Se nessuna delle ipotesi precedenti si avvera ricorriamo all'array $HTTP_COOKIE_VARS
    ***/
    else{

    echo(
    $HTTP_COOKIE_VARS["emailmittente"]) ;

    }

    ?>
    Come faccio ad inserire il cookie in un form, come il seguente, ad esempio?
    Codice PHP:
    <form>
    La tua E-mail:<input type="text" id="emailmittente" name="emailmittente">
    </
    form
    In poche parole, il contenuto (un'email) di quel Cookie deve essere riportato all'interno dell'input del form.

  2. #2
    Dovrebbe bastare qualcosa del genere:
    codice:
    <form>
    La tua E-mail:<input type="hidden" id="emailmittente" 
    name="emailmittente" value="<?php echo $_COOKIE['emailmittente']; ?>">
    </form>
    Devi usare type hidden e non text, altrimenti è un campo di testo modificabile dall'utente!
    Visita il mio blog e canale YouTube dedicati a programmazione web e sicurezza informatica.

  3. #3
    Originariamente inviato da thecodingmonk
    Dovrebbe bastare qualcosa del genere:
    codice:
    <form>
    La tua E-mail:<input type="hidden" id="emailmittente" 
    name="emailmittente" value="<?php echo $_COOKIE['emailmittente']; ?>">
    </form>
    Devi usare type hidden e non text, altrimenti è un campo di testo modificabile dall'utente!
    Infatti deve essere possibile all'utente modificarla
    Questo è il campo e-mail, che dovrebbe far apparire nel riquadro l'email registrata dell'utente.
    Da questo errore:

    Notice: Undefined index: emailmittente in C:\Program Files (x86)\EasyPHP-5.4.0RC4\www\sito\pages\im.php on line 12

  4. #4
    Prova a settare il tempo nel cookie:
    codice:
    setcookie("emailmittente",$message,time()+3600) ;

  5. #5
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    @plopper: ti voglio un gran bene, ma potresti cortesemente prima leggere il codice, poi pensare trenta secondi e poi postare qualcosa di sensato?

    @Cloud web: Il motivo per cui hai quel notice è che nel momento in cui carichi la pagina con il form il cookie che stai cercando di leggere non esiste ancora. Quali sono gli step effettui per visualizzare la form?

  6. #6
    Ho cambiato un po di cose sulla base dei tuoi suggerimenti. Cosi:
    Codice PHP:
    <form name="upload" id="upload" method="post" action="vai.php" enctype="multipart/form-data">

    La tua E-mail:<input type="text" id="emailmittente" name="emailmittente" value="<?php 
    // impostare il cookie che registra l'email
    if(empty($HTTP_COOKIE_VARS))
    {
    setcookie ("emailmittente"); 
    }
    else
    {
    echo 
    $_COOKIE['emailmittente']; 
    }
    ?>">
    <input type="submit" id="go" name="go" value="Vai">
    </form>
    Ma non registra il Cookie, come mai?
    P.S.: il cookie dorebbe registrare l'e-mail inserita nel campo del form.

  7. #7
    Originariamente inviato da Cloud Web
    Ho cambiato un po di cose sulla base dei tuoi suggerimenti. Cosi:
    Codice PHP:
    <form name="upload" id="upload" method="post" action="vai.php" enctype="multipart/form-data">

    La tua E-mail:<input type="text" id="emailmittente" name="emailmittente" value="<?php 
    // impostare il cookie che registra l'email
                                                                
    if(empty($HTTP_COOKIE_VARS))
    {
    setcookie ("emailmittente"); 
    }
    else
    {
    echo 
    $_COOKIE['emailmittente']; 
    }
    ?>">
    <input type="submit" id="go" name="go" value="Vai">
    </form>
    Ma non registra il Cookie, come mai?
    P.S.: il cookie dorebbe registrare l'e-mail inserita nel campo del form.
    Perchè dichiari solo il titolo del cookie devi dagli un valore
    comunque devi dichiararlo prima del confronto nel form sennò non stamperà
    mai il valore
    codice:
    <?php 
    // impostare il cookie che registra l'email
    
    if(empty($HTTP_COOKIE_VARS))
    {
    setcookie ("emailmittente",$_POST['emailmittente']); 
    //ti consiglio poi di settare il time() cosi da farlo durare quanto vuoi tu
    }
    ?>
    <form name="upload" id="upload" method="post" action="vai.php" enctype="multipart/form-data">
    
    La tua E-mail:<input type="text" id="emailmittente" name="emailmittente" value="<?php if(!empty($_COOKIE['emailmittente'])){echo $_COOKIE['emailmittente'];} ?>">
    <input type="submit" id="go" name="go" value="Vai">
    </form>
    Originariamente inviato da _debo
    @plopper: ti voglio un gran bene, ma potresti cortesemente prima leggere il codice, poi pensare trenta secondi e poi postare qualcosa di sensato?

    @Cloud web: Il motivo per cui hai quel notice è che nel momento in cui carichi la pagina con il form il cookie che stai cercando di leggere non esiste ancora. Quali sono gli step effettui per visualizzare la form?
    Si è capito che tu sei il genio del php in assoluto ma non vedo
    perchè devi criticare ogni tentativo di aiuto (che il codice sia corretto o no),
    dai la tua risposta e basta

  8. #8
    Originariamente inviato da Plopper
    Perchè dichiari solo il titolo del cookie devi dagli un valore
    comunque devi dichiararlo prima del confronto nel form sennò non stamperà
    mai il valore
    codice:
    <?php 
    // impostare il cookie che registra l'email
    															if(empty($HTTP_COOKIE_VARS))
    {
    setcookie ("emailmittente",$_POST['emailmittente']); 
    }
    else
    {
    echo $_COOKIE['emailmittente']; 
    }
    ?>
    <form name="upload" id="upload" method="post" action="vai.php" enctype="multipart/form-data">
    
    La tua E-mail:<input type="text" id="emailmittente" name="emailmittente" value="<?php echo $_COOKIE['emailmittente']; ?>">
    <input type="submit" id="go" name="go" value="Vai">
    </form>
    Cosi, mi riappare la Notice:
    Notice: Undefined index: emailmittente in C:\Program Files (x86)\EasyPHP-5.4.0RC4\www\sito\pages\im.php on line 12

  9. #9
    Originariamente inviato da Cloud Web
    Cosi, mi riappare la Notice:
    Notice: Undefined index: emailmittente in C:\Program Files (x86)\EasyPHP-5.4.0RC4\www\sito\pages\im.php on line 12
    Prova col codice che ho rimesso sopra sennò non ti so dire

  10. #10
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Si è capito che tu sei il genio del php in assoluto ma non vedo
    perchè devi criticare ogni tentativo di aiuto (che il codice sia corretto o no),
    dai la tua risposta e basta
    Te lo spiego subito perché, non perché sono un genio del PHP o meno semplicemente perché quando si aiuta la gente la si deve appunto aiutare e non dare risposte a caso.
    Lo scopo di un forum è di imparare e migliorare quindi è opportuno dare risposte pertinenti e funzionali.
    Se dai una risposta che svia l'utente dalla reale soluzione perché errata non lo stai di certo aiutando.

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.