Visualizzazione risultati 1 fino 6 di 6

Discussione: [diviso] Problema nel confronto delle password

  1. #1
    Guest

    Predefinito [diviso] Problema nel confronto delle password

    Salve a tutti,

    Ne approfitto per chiedervi un aiuto. Ho realizzato una specie di login e password. Solo che non riesco a mettere al confronto le due password. ora invio il codice di quello che sono riuscito a fare. Mi seriverebbe che se le password non coincidono, ti rimanda alla pagina di registrazione, invece se le password coincidono ti effettua l'inserimento nel database. Ecco il codice. il file si chiama: "salva.php"

    Codice PHP:

    <?php

    require_once("connetti.php");
    require_once(
    "data.php");

    $login = $_POST['login'];
    $pass = $_POST['pass'];
    $pass2 = $_POST['pass2'];
    $pass = sha1($pass);

    //CONTROLLO SE L'USERNAME UTILIZZATO DA UN NUOVO UTENTE E' GIA' IN USO OPPURE NO


    $query = "SELECT login FROM utenti WHERE login = '$login'";
    $result = mysql_query($query) or die("Errore nella query:".mysql_error());

    if (
    mysql_num_rows($result) > 0){ // SE TROVO UN UTENTE CON QUELL'USERNAME MI DICE CHE IN USO
    echo "Il nome $login è in uso";
    echo
    "<a href=\"inserimento.html\"> Torna Indietro</a>";
    }

    else {
    $sql= "INSERT INTO utenti(login, pass) VALUES('$login', '$pass')";

    mysql_query($sql);


    $query = "SELECT id FROM utenti WHERE login = '$login' AND pass = sha1('$pass')";
    $result = mysql_query($query);
    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }
    else{
    echo
    ' Utente registrato con successo !!!!!';
    }


    }
    ?>
    Spero di ricevere risposte, perkè dino ad ora nessuno mi ha risposto. grazie per l'aiuto anticipatamente.
    Ultima modifica di alemoppo : 20-09-2011 alle ore 14.55.39 Motivo: [quote] -> [php]

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

    Predefinito

    Codice PHP:
    $sql= "INSERT INTO utenti(login, pass) VALUES('$login', '$pass')";

    mysql_query($sql);


    $query = "SELECT id FROM utenti WHERE login = '$login' AND pass = sha1('$pass')";
    $result = mysql_query($query);
    $pass è già stata criptata all'inizio, se lo fai una seconda volta, on coincide più!.
    In generale, però, non è necessario rifare una query per controllare se è stato correttamente registrato: oltre che sprechi una query (su altervista son limitate, con le classi del database), è sufficiente controllare l'esito della prima mysql_query().

    Per evitare sql_injection, dovresti filtrare TUTTI i dati provenienti dal form, dalla mysql_real_escape_string().

    Per il tuo problema della password, puoi far così:

    fai una query del tipo:

    Codice PHP:
    $query = "SELECT login, password FROM utenti WHERE login = '$login'";
    Poi, se entra nell'if:
    Codice PHP:
    if (mysql_num_rows($result) > 0){ // SE TROVO UN UTENTE CON QUELL'USERNAME MI DICE CHE IN USO
    fai un ulteriore if di controllo per la password: controlli che quella prelevata dal database sia uguale a quella passata dal form.


    Poi, credo che prima di eseguire la query per immettere un nuovo utente, dovresti controllare se le due password coincidono:

    Codice PHP:
    else {
    if(
    $pass != sha1($pass2))
    die(
    'le due password non coincidono');
    $sql= "INSERT INTO utenti(login, pass) VALUES('$login', '$pass')";
    Ciao!

  3. #3
    Guest

    Predefinito

    Ciao,

    Grazie per la risposta rapida. Non ho capito una cosa. In pratica dal codice che ti ho inviato, mi consigli di toglierre la seguente riga:


    mysql_query($sql);
    o ho capito male ????

    EDIT1:
    Ciao alemoppo,

    Perdonami, mi potresti riscrivere il codice con le modifiche ??? CHe non sono riuscito a capirlo molto bene. Scusami.

    EDIT2:
    Ari Ciao per la terza volta,

    Scusami se ti disturbo. Ma ti volevo far sapere che il tuo esempio di 3 righe che da solo non ci sono arrivato è andato a buon fino. Mi puoi dire per favorequal'è il doppio controllo della query ???? Così lo tolgo. Ti posto il codice con l'aggiunta delle righe consigliate da te, e ho aggiunto anche quello che dicevi su sql_injection (mysql_real_escape_string()).. Grazie ancora e scusami per il disturbo.

    Codice PHP:

    <?php

    require_once("connetti.php");
    require_once(
    "data.php");

    $login = $_POST['login'];
    $pass = $_POST['pass'];
    $pass2 = $_POST['pass2'];
    $pass = sha1($pass);


    // Query
    $query = sprintf("SELECT * FROM Utenti WHERE login='%s' AND pass='%s'",
    mysql_real_escape_string($login),
    mysql_real_escape_string($pass));

    //CONTROLLO SE L'USERNAME UTILIZZATO DA UN NUOVO UTENTE E' GIA' IN USO OPPURE NO


    $query = "SELECT login FROM utenti WHERE login = '$login'";
    $result = mysql_query($query) or die("Errore nella query:".mysql_error());

    if (
    mysql_num_rows($result) > 0){ // SE TROVO UN UTENTE CON QUELL'USERNAME MI DICE CHE IN USO
    echo "Il nome $login è in uso";
    echo
    "<a href=\"inserimento.html\"> Torna Indietro</a>";
    }
    else {
    if(
    $pass != sha1($pass2))
    die(
    ' - le due password non coincidono');

    else {
    $sql= "INSERT INTO utenti(login, pass) VALUES('$login', '$pass')";

    mysql_query($sql);


    $query = "SELECT id FROM utenti WHERE login = '$login' AND pass = sha1('$pass')";
    $result = mysql_query($query);
    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }
    else{
    echo
    ' Utente registrato con successo !!!!!';
    }


    }
    }
    ?>
    Mi puoi dare la tua conferma se è esatto o meno per favore ???? Grazie, attendo tua risposta.
    Ultima modifica di alemoppo : 21-09-2011 alle ore 01.00.51 Motivo: Non fare doppi post: usa il tasto "Edita"!

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

    Predefinito

    Una cosa del genere:

    Codice PHP:
    <?php

    require_once("connetti.php");
    require_once(
    "data.php");

    $login = mysql_real_escape_string($_POST['login']);
    $pass = mysql_real_escape_string($_POST['pass']);
    $pass2 = mysql_real_escape_string($_POST['pass2']);
    $pass = sha1($pass);

    // Query
    $query = sprintf("SELECT * FROM Utenti WHERE login='%s' AND pass='%s'", $login,$pass); //questa riga non lì'ho capita: prepari la variabile $query, poi il comando dopo la sovrascrivi :|

    //CONTROLLO SE L'USERNAME UTILIZZATO DA UN NUOVO UTENTE E' GIA' IN USO OPPURE NO
    $query = "SELECT login FROM utenti WHERE login = '$login'";
    $result = mysql_query($query) or die("Errore nella query:".mysql_error());

    if (
    mysql_num_rows($result) > 0){ // SE TROVO UN UTENTE CON QUELL'USERNAME MI DICE CHE IN USO
    echo "Il nome $login è in uso";
    echo
    "<a href=\"inserimento.html\"> Torna Indietro</a>";
    }
    else {
    if(
    $pass != sha1($pass2))
    die(
    ' - le due password non coincidono');

    else {
    $sql= "INSERT INTO utenti(login, pass) VALUES('$login', '$pass')";
    $resul = mysql_query($sql);
    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }
    else{
    echo
    ' Utente registrato con successo !!!!!';
    }
    }
    }
    ?>
    Ciao!
    Ultima modifica di alemoppo : 21-09-2011 alle ore 01.03.48

  5. #5
    Guest

    Predefinito

    Ciao Alemoppo,

    Grazie, per la risposta. Comunque pe ril confronto delle password ho risolto. Un'altra cosa ti vorrei chiedere. Devo fare la pagina di login, ma con le sessioni, mi puoi dare un'aiuto a svilupparla ???? Ti ringrazie.

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

    Predefinito

    Siamo OT, comunque vedi qui.

    Ciao!

Regole di scrittura

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