• ModSenior

    Controllo username e password

    nn riesco proprio a farli funzionare insieme
    ecco il codice da me usato

    [PHP]# Recupero i valori dal form
    $username = @$_POST['nomeutente'];
    $password = @$_POST['password'];
    $email = @$_POST['indirizzoemail'];

    //
    $query2 = "SELECT email FROM ud_utenti WHERE email = '$email'";
    $result2 = mysql_query($query2) or die("Errore nella query:".mysql_error());

    if (mysql_num_rows($result2) > 0){ //
    echo "$email è già in uso";
    echo "<a href="javascript:history.back()">Torna Indietro</a>";
    }

    else {}
    //CONTROLLO SE L'USERNAME UTILIZZATO DA UN NUOVO UTENTE E' GIA' IN USO OPPURE NO
    $query1 = "SELECT user FROM ud_utenti WHERE user = '$username'";
    $result1 = mysql_query($query1) or die("Errore nella query:".mysql_error());

    if (mysql_num_rows($result1) > 0){ // SE TROVO UN UTENTE CON QUELL'USERNAME MI DICE CHE IN USO
    echo "Il nome $username è in uso";
    echo "<a href="javascript:history.back()">Torna Indietro</a>";
    }

    else {

    invio dati al db

    $strSQL = "INSERT INTO ud_utenti(user, pass, email)";
    $strSQL .= "VALUES('$username', '$password', '$email')";
    mysql_query($strSQL) OR die("Errore nella query:".mysql_error());
    }[/PHP]


  • User Attivo

    $query2 = "SELECT email FROM ud_utenti WHERE email = '".$email."'";
    $query1 = "SELECT user FROM ud_utenti WHERE user = '".$username."'";
    $strSQL .= "VALUES('".$username."', '".$password."', '".$email."')";

    prova modificando queste righe... secondo me l'errore sta nel fatto che php non "guarda dentro" alle variabili se le inserisci tra apici singoli ('$variabile') e ti stamperebbe proprio $variabile! 🙂


  • User Attivo

    @joey santiago said:

    $query2 = "SELECT email FROM ud_utenti WHERE email = '".$email."'";
    $query1 = "SELECT user FROM ud_utenti WHERE user = '".$username."'";
    $strSQL .= "VALUES('".$username."', '".$password."', '".$email."')";

    prova modificando queste righe... secondo me l'errore sta nel fatto che php non "guarda dentro" alle variabili se le inserisci tra apici singoli ('$variabile') e ti stamperebbe proprio $variabile! 🙂

    Non riesco proprio a capirlo: o si usano i doppi apici o gli apici singoli, mica tutti e due insieme!
    Comunque, se scrive come hai detto tu, santiago, riceve sicuramente un errore, perchè, al massimo, ci vorrebbero gli slash \ davanti ai doppi apici all'interno della query 😉

    Gli apici singoli, comunque, sono propri delle query SQL e non causano, a quanto ne so io, nessun errore 🙂

    Perchè non provi a togliere le @ davanti alle variabili e vedi se ti ritorna un errore?
    Posta cumunque l'errore che ti risulta.

    Ciao.


  • User Attivo

    se usi i doppi apici nel modo in cui li ho usati io, succede questo:
    "bla bla bla '".$variabile."'bla bla"
    cioè si appende alla prima stringa, che si chiude con i doppi apici, la stringa $variabile, poi a questa si appende la stringa successiva, ecc... È un metodo che ho usato in molti file ed ha sempre funzionato...


  • Moderatore

    Non riesco proprio a capirlo: o si usano i doppi apici o gli apici singoli, mica tutti e due insieme!

    E perché?

    $query2 = "SELECT email FROM ud_utenti WHERE email = '".$email."'";
    corrisponde in pratica a:

    $query2 = " SELECT email FROM ud_utenti WHERE email = ' "; //<- non si escapa il singolo apice contenuto nei doppi apici
    $query2 = $query2 + $email;
    $query2 = $query2 + " ' "; // stesso motivo di sopra.

    Sintassi correttissima 🙂


  • Super User

    Ti consiglio vivamente di parsare i valori che metti nelle query, così come sono ora nel controllo email potrei benissimo effettuare una sql injection.


  • Moderatore

    🙂


  • User Attivo

    Oddio!, non ho visto i punti dopo il primo doppio apice e prima del secondo!!
    Pensavo avesse scritto '"$email"' invece che '".$email."'!
    Non ho letto i puntini!
    Colpa mia, scusate 😉


  • User

    Scusate l'ignoranza... cosa significa PARSARE? :mmm:
    Cosa avrebbe dovuto fare x evitare la sql injection?

    Ciao!


  • ModSenior

    wow avrò letto 10 volte ma nn ho capito niente