Visualizzazione risultati 1 fino 4 di 4

Discussione: Problema con cookies per login...

  1. #1
    Guest

    Question Problema con cookies per login...

    Salve a tutti!
    Ho questo problema che non riesco proprio a risolvere...

    Ho creato un form di login che verifica la presenza dei dati con cui si sta eseguendo l'accesso nel database e se sono realmente presenti assegna all'utente in questione due cookie che portano come value il nickname dell'utente e il valore loggato che serve per accedere all'area protetta. Come nickname viene utilizzata la mail che si ha registrato.

    Codice PHP:
    <?php
    $nick
    = $_POST["nick"];
    $pass = $_POST["pass"];
    if(
    $_POST["invia"]){
    $conn = mysql_connect("localhost", "xxxxxx", "xxxxxx") OR
    die(
    "Impossibile stabilire una connessione con il database!");
    mysql_select_db("xxxxxxx", $conn);
    $vn = "SELECT * FROM users WHERE mail = '".$nick."'";
    $vp = "SELECT * FROM users WHERE pass = '".$pass."'";
    $result_nick = mysql_query($vn);
    $result_pass = mysql_query($vp);

    if (
    mysql_num_rows($result_nick) == "0"){
    if (
    mysql_num_rows($result_pass) == "0"){
    echo
    "<font color='red'>ERRORE!</font>";
    }
    }else{
    setcookie("login","valuedelcookie", time()+3600);
    setcookie("nick", $nick, time()+3600);
    header("location: /");

    }
    }
    ?>
    E fin qui tutto va bene...
    Il problema inizia quando devo verificare il cookie nella homepage!
    Io, infatti, ho una barra azzurra nella quale vi dovrebbe essere scritto "Iscriviti o Login" se l'utente non ha effettuato il login mentre vi dovrebbe comparire "$nick (la variabile della mail) proponi" se l'utente ha effettuato il login con dati corretti.
    Qualcuno mi sa spiegare cosa c'è che non va in questo codice? Mi sta fondendo il cervello!

    Codice PHP:
    <?php
    $nick
    = $_COOKIE["nick"];
    if(
    $_COOKIE["login"] == "loggato"){
    echo
    "$nick <a href='proponi.php'><font color='white' face='Arial Rounded MT Bold' size='2,9em'>Proponi un'idea!</a></font>";
    }
    if(
    $_COOKIE["login"] != "loggato"){
    echo
    "<a href='/registrati'><font color='white' face='Arial Rounded MT Bold' size='2,9em'>Iscriviti</a> o <font color='white' face='Arial Rounded MT Bold' size='2,9em'><span class='apri' style='cursor:hand;'><u>Login</u></span> - Sono le ore <span id='liveclock'></span></font></font>";
    }
    ?>
    Grazie a tutti coloro che mi aiuteranno a risolvere il problema! ;)
    Ciao!

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,786

    Predefinito

    Codice PHP:
    setcookie("login","valuedelcookie", time()+3600);
    Ma "valuedelcookie" l'hai sostituito con "loggato"? Perché poi lo confronti con 'loggato':
    Codice PHP:
    if($_COOKIE["login"] == "loggato")
    .


    Comunque, alcuni suggerimenti:

    1-
    Codice HTML:
    <font color='white' face='Arial Rounded MT Bold' size='2,9em'>
    Il tag <font> è stato deprecato, così come le proprietà html color=, face=, size=. Per fare queste cose, vanno usati i tag <span>, o <p>, o <div> o i vari <h1><h2>... (dipende dai casi), + css.

    2-
    Nel tuo sistema di login, se un utente crea un cookie nel suo browser, può accedere con qualsiasi user: per i sistemi login, non vanno usati i cookie nel modo in cui lo stai facendo: ti consiglio di utilizzare le sessioni! (fanno uso dei cookie, ma rendono sicuro il tutto).

    Se vuoi, puoi guardare questo script per (forse) migliorarti, anche se ancora non ho messo la spiegazione.

    Ciao!
    Ultima modifica di alemoppo : 27-07-2012 alle ore 19.49.48

  3. #3
    Guest

    Predefinito Tutto sbagliato, tutto da rifare...

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Codice PHP:
    setcookie("login","valuedelcookie", time()+3600);
    Ma "valuedelcookie" l'hai sostituito con "loggato"? Perché poi lo confronti con 'loggato':
    Codice PHP:
    if($_COOKIE["login"] == "loggato")
    .


    Comunque, alcuni suggerimenti:

    1-
    Codice HTML:
    <font color='white' face='Arial Rounded MT Bold' size='2,9em'>
    Il tag <font> è stato deprecato, così come le proprietà html color=, face=, size=. Per fare queste cose, vanno usati i tag <span>, o <p>, o <div> o i vari <h1><h2>... (dipende dai casi), + css.

    2-
    Nel tuo sistema di login, se un utente crea un cookie nel suo browser, può accedere con qualsiasi user: per i sistemi login, non vanno usati i cookie nel modo in cui lo stai facendo: ti consiglio di utilizzare le sessioni! (fanno uso dei cookie, ma rendono sicuro il tutto).

    Se vuoi, puoi guardare questo script per (forse) migliorarti, anche se ancora non ho messo la spiegazione.

    Ciao!
    Grazie mille per la risposta.
    Per quanto riguarda la value del cookie è una proprio svista. Ho controllato e nel codice originale entrambi i cookie sono "loggato".

    Essendo ancora alle prime armi con il linguaggio PHP non avevo considerato l'opzione delle sessioni, non essendo capace di gestirle e conoscendole solo "di nome" (Ok, sono proprio un ignorante )...
    Mi aspettavo che anche i cookie avessero alcune protezioni, ma a quanto pare mi sbagliavo! Grazie mille per la dritta!

    Infine, non importa se non hai risposto direttamente alla mia domanda poiché, a quanto pare devo cambiare praticamente tutto il sistema di login (?).
    Confidando nella pazienza degli altri utenti di Altervista rivolgo un saluto a tutti e rinnovo, più per curiosità ormai, la mia domanda. :)

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,786

    Predefinito

    prima della setCookie(), scrivi/stampi qualcosa? perché, usando dei dati nell'header della pagina, se viene scritto dell'html non può più modificare l'header.

    In ogni caso, prova a guardare sul browser se i cookie vengono realmente creati (come? dipende dal browser che stai utilizzando).

    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •