Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Problema con cookie

  1. #1

    Problema con cookie

    nn ho mai avuto a che fare con i cookie perchè con sezioni amministrative preferisco evitarli.
    però qua mi tocca impostarli per avere un login duraturo.
    ho provato così:
    Codice PHP:
    function login($utente$password) {
        global 
    $config;
        try {
            
    $query $config->getPdo()->prepare("SELECT * FROM clienti .......");
            
    $query->execute();
            if (
    $query->rowCount() == 1) {
                
    $_SESSION['login'] = TRUE;
                
    $_SESSION['cliente'] = $utente;
                
    setcookie('SITO'$utentetime() + 60 60 24 365'/''www.sito.it');
                echo 
    '<script type="text/javascript">document.location.href="index.php";</script>';
                return 
    TRUE;
            } else {
                echo 
    'Username o password sbagliati';
                return 
    FALSE;
            }
        } catch (
    PDOException $e) {
            die(
    $e->getMessage());
        }

    in home page per vedere se tutto funziona:
    Codice PHP:
        <?php
        
    if (isset($_COOKIE['SITO'])) {
            echo 
    'OK';
        } else {
            echo 
    ' NO';
        }
        
    ?>
    esce sempre NO.
    il cookie nn viene mai settato.
    eppure nn capisco visto che la funzione per satter i cookie è abbastanza semplice, tutti gli esempi trovati in giro usano setcookie() praticamente allo stesso modo.
    avete qualche idea?

  2. #2
    Sei in locale o remoto?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    in remoto.
    sto in una sottocartella del sito che sto rifacendo.
    www.sito.it/beta/b2b

    è la pagina per il login.
    quando faccio il submit del form faccio il login.
    funziona tutto, tranne la creazione del cookie.

  4. #4
    capito dov'è il problema: in pratica il cookie va settato prima di qualsiasi parte HTML mi pare di aver capito.
    quindi ho messo questo in home:
    Codice PHP:
    <?php
    if (!isset($_COOKIE['SITO'])) {
        
    setcookie("CIMODA"$_SESSION['cliente'], time() + 2592000); // COOKIE VALIDO PER 30 GIORNI
    }
    ?>
    <!DOCTYPE HTML>
    .....
    $_SESSION['cliente'] è vuoto finchè nn faccio il submit e riempio la variabile di sessione con un valore.
    ora il problema è un altro:
    Codice PHP:
        public function verificaSessione() {
            if (isset(
    $_SESSION['log']) || isset($_COOKIE['CIMODA'])) {
                return 
    $_SESSION['log'];
            } else {
                return 
    FALSE;
            }
        } 
    questa la funzione di controllo. se la variabile di sessione O il cookie sono settati allora posso accedere a tutto, senno no e vengo rispedito al form di login.
    chiudo il browser, lo riaprro e il cookie c'è.
    però mi fa rifare il login.
    perchè???

  5. #5
    Originariamente inviato da fermat
    Codice PHP:
        public function verificaSessione() {
            if (isset(
    $_SESSION['log']) || isset($_COOKIE['CIMODA'])) {
                return 
    $_SESSION['log'];
            } else {
                return 
    FALSE;
            }
        } 
    Non conosco il codice a monte, ma la funzione che hai scritto è concettualmente errata. Verifichi una condizione in OR e poi restituisci uno dei due valori controllati, nel tuo caso $_SESSION['log'], ma la condizione è vera anche se $_SESSION['log'] non è valorizzato ma lo è $_COOKIE['CIMODA']. In tal caso la funzione restutuisce un bel null.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    hai ragione cretinata mia.
    Codice PHP:
        public function verificaSessione() {
            if (isset(
    $_SESSION['login_eseguito']) || isset($_COOKIE['CIMODA'])) {
                return 
    TRUE;
            } else {
                return 
    FALSE;
            }
        } 
    nn mi ricordo manco più perchè avevo messo così.
    cmq pare funzionare tutto.
    grazie!!

  7. #7
    come nn detto, nn riesco a resettarlo.
    quando clicco sul link di logout attivo questa funzione:
    Codice PHP:
        public function logout() {
            
    session_start();
            
    session_unset();
            
    session_destroy();
            
    $this->pdo NULL;
            
    header('location:end.php');
        } 
    in end.php ho semplicemente messo questo:
    Codice PHP:
    <?php
    setcookie
    ($_COOKIE['SITO'], ""time() - 60 60 24 7);
    ?>
    <!DOCTYPE HTML>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <title>END</title>
        </head>
        <body>
        </body>
    </html>
    vengo correttamente reindirizzato su end.php ma il cookie rimane valorizzato.

  8. #8
    Magari così:

    Codice PHP:
    setcookie('SITO'""time() - 60 60 24 7); 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    magari te hai perfettamente ragione e sono io che è venerdi e sono arrivato alla frutta.

    grazie!!!

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.