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

Discussione: problema cookie

  1. #1

    problema cookie

    da quanto ho capito il comando setcookie() deve essere impostato ad inizio pagina, prima di qualsiasi altra cosa, ma se io volessi creare un cookie solo dopo aver effettivamente controllato che user e pass siano presenti nel database, quindi creare un cookie solo per un utente che si è autenticato come devo fare?

    avevo provato tipo così ma chiaramente da errore:


    $query = mysql_query("SELECT IDutenti FROM utenti WHERE nome='$nome' and pass='$pass'");

    $num = mysql_numrows($query);
    if ($num == 1) {

    echo "Utente loggato
    ";

    setcookie("log","$nome",time()+43200, "/");

    } ecc.....




    fare un include di un altro file che contiene il setcookie è la stessa cosa.
    allora come fare a creare il cookie solo per l'utente registrato nel db, e poi per il logout?

  2. #2
    non ad inizio pagina, bensi prima di qualsiasi output

  3. #3
    nel tuo caso che hai postato devi solamente scambiare la riga echo "..." con quella del setcookie (sempre che prima non ci siano altri echo, errori, ... qualsiasi forma di output.

  4. #4
    ok, ho capito grazie, ma casomai debba inserire altri echo prima non c'è nessun modo per non farmi dare questo errore?

    Warning: Cannot modify header information - headers already sent

  5. #5
    No, devi farla sempre prima di qualsiasi Output

  6. #6
    No, devi farla sempre prima di qualsiasi Output
    Assolutamente falso, puoi farlo anche dopo un output, basta solo catturare l'output e non inviarlo subito (per modo di dire).

    Ci sono delle funzioni apposite in PHP per non inviare l'output prima della fine dell'esecuzione dell'intera pagina.

    Sono le funzioni Output Control Functions, le trovi nel manuale PHP e c'è anche un articolo su freephp.

    Con queste funzioni puoi usare quanti echo o print vuoi prima di un setcookie() o header() e non darà nessun errore.

  7. #7
    devi usare le funzioni OB, ob_flush() e via di seguito.
    Prova a cercare su php.net

    Anche se comunque ti consiglio di non utilizzarle, a meno che sia indispensabile.
    Marco Bianucci
    marco@phoenixweb.it
    Hosting php
    Programmazione & WebDesign

  8. #8
    ho risolto mettendo i setcookie() in un file a parte e con qualche raggiro evitando di usare ob ed altre cose varie.

  9. #9
    Utente di HTML.it L'avatar di DRAKO
    Registrato dal
    Feb 2003
    Messaggi
    141
    Ho lo stesso problema pero vi posto il codice :
    <?php
    i


    if (trim($usr) == "" OR trim($pss) == ""): $errore=1;


    else:
    $usr = addslashes(stripslashes($usr));
    $pss = addslashes(stripslashes($pss));
    $usr = str_replace("<", "&lt;", $usr);
    $usr = str_replace(">", "&gt;", $usr);
    $pass = str_replace("<", "&lt;", $pass);
    $pass = str_replace(">", "&gt;", $pass);



    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query = "SELECT user,pass,registro FROM user";


    $result = mysql_query($query, $db);

    if (mysql_query($query, $db))
    echo "";
    //Query andata a buon fine
    ";
    else
    echo "";
    //Erorre durante l'inserimento";


    while ($row = mysql_fetch_array($result)){
    if (($row['user'] == $usr) && ($row['pass'] == $pss && $row['registro'] == 1 ))
    {
    setcookie("Test", "Prova per il cookie Test", time()+1200);

    }


    else{

    /***
    La variabile "cookieTest" esiste, quindi il cookie di prova è stato inviato ma evidentemente il browser lo ha rifiutato.
    ***/
    $abilitato=0 ;

    }

    }


    /***
    L'array $_COOKIE non è vuoto quindi il browser accetta i cookie
    ***/
    else{

    $abilitato=1 ;

    }



    }
    else
    {
    echo "Errore I dati inseriti sono sbajati;Oppure non hai confermato il login";
    #header("Location:login.php");

    }

    }


    mysql_close($db);endif;

    ?>
    E non riesco a trovare una soluzione

  10. #10
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392
    Codice PHP:
    if (mysql_query($query$db))
    echo 
    ""//primo echo
    //Query andata a buon fine
    ";
    else
    echo ""; //secondo echo
    //Erorre durante l'inserimento"
    ;


    while (
    $row mysql_fetch_array($result)){
    if ((
    $row['user'] == $usr) && ($row['pass'] == $pss && $row['registro'] == )) 

    setcookie("Test""Prova per il cookie Test"time()+1200);



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.