• User Attivo

    Dove sbaglio? Login.php

    Ragazzi potete gentilmente sistemarmi questa pagina? teoricamente se ID E PASS SONO GIUSTI dovrebbe stamparmi delle frasi, ma niente.. aiutatemi please

    [PHP]
    <?

    include ('includes/mysql_conn.php');

    $query = mysql_query("SELECT * FROM utenti");

    while($riga=mysql_fetch_array($query)) {

    $usrName = $riga['1'];
    $usrPass = $riga['2'];
    }

    $usrPassMD5 = md5('$usrPass');

    function autenticazione() {

    global $usrName, $usrPass, $PHP_AUTH_USER, $PHP_AUTH_PW;

    if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="il mio reame"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Messaggio da inviare se si preme il tasto Cancel';
    exit;
    }
    if (($usrName == $PHP_AUTH_USER) and ($usrPassMD5 == $PHP_AUTH_PW)) {
    echo "<p>Ciao {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>Hai inserito {$_SERVER['PHP_AUTH_PW']} come tua password.</p>";
    }
    }

    autenticazione();

    ?>
    [/PHP]


  • User

    Ciao,

    due domande:

    $usrName = $riga['1'];
    $usrPass = $riga['2'];
    le colonne nella tabella si chiamano rispettivamente 1 e 2?

    $usrPassMD5 == $PHP_AUTH_PW

    $PHP_AUTH_PW è una variabile criptata in MD5? Altrimenti non puoi fare il confronto....

    se lo è prova ad utilizzare la funzione

    int strcmp ( string str1, string str2 )

    per fare il confronto tra le due stringhe...

    Saluti,

    Federico.


  • User Attivo

    ho provato ad ovviare così al problema ma non va cmq...potete vedere se in qualche modo riuscite a farlo andare? più che altro xkè mi interessa davvero impararne il corretto funzionamento..

    [PHP]<?

    include ('includes/mysql_conn.php');

    $query = mysql_query("SELECT * FROM utenti");

    while($riga=mysql_fetch_array($query)) {

    $usrName = $riga['username'];
    $usrPass = $riga['password'];
    }

    $usrPassMD5 = md5('$usrPass');
    $PHP_AUTH_PW_CRIPT = md5('$PHP_AUTH_PW');

    function autenticazione() {

    global $usrName, $usrPass, $PHP_AUTH_USER, $PHP_AUTH_PW;

    if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="il mio reame"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Messaggio da inviare se si preme il tasto Cancel';
    exit;
    }
    if (($usrName == $PHP_AUTH_USER) and ($usrPassMD5 == $PHP_AUTH_PW_CRIPT)) {
    echo "<p>Ciao {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>Hai inserito {$_SERVER['PHP_AUTH_PW']} come tua password.</p>";
    }
    }

    autenticazione();

    ?>[/PHP]


  • User

    Mi sono resoconto che fai una cosa sbagliata/inutile al fine del ciclo:

    $query = mysql_query("SELECT * FROM utenti");

    while($riga=mysql_fetch_array($query)) {

    $usrName = $riga['username'];
    $usrPass = $riga['password'];
    }

    il ciclo while continua a riassegnare continuamente la variabile $usrName e $usrPass ma così non ti crei un array.

    Il risultato di questo ciclo è avere nelle due variabili il contenuto dei campi "username" e "password" dell'ultimo record della tabella.

    Se vuoi salvarti tutti i record della tabella devi scrivere:

    $query = mysql_query("SELECT * FROM utenti");

    while($riga=mysql_fetch_array($query)) {

    $usrName[] = $riga['username'];
    $usrPass[] = $riga['password'];
    }
    e poi controllare che lo user e la pass inserite siano uguali ad almeno una coppia di user e pass che hanno stesso indice.

    Naturalmente ti conviene risistemare il codice in questo modo:

    while($riga=mysql_fetch_array($query)) {

    $usrName[] = $riga['username'];
    $usrPass[] = md5($riga['password']);
    }

    Così ti salvi le variabili già criptate nei due array e puoi fare il confronto diretto con $PHP_AUTH_PW_CRIPT (a patto naturalmente che anche questa sia MD5)

    saluti,

    Federico


  • User

    Ciao,

    ti do un'altro suggerimento,

    per controllare se l'username e la password che inserisci sono presenti nei due array puoi utilizzare la funzione:

    if(in_array($PHP_AUTH_USER,$usrName) AND in_array($PHP_AUTH_PW_CRIPT,$usrPass))

    Federico.


  • User Attivo

    nona vevo considerato la questione dell'array, però pur sostituendo l'array il problema sussiste, può esserci un problema qui?

    function autenticazione() {

    global $usrName, $usrPass, $PHP_AUTH_USER, $PHP_AUTH_PW;

    if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="il mio reame"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Messaggio da inviare se si preme il tasto Cancel';
    exit;
    }
    if (($usrName == $PHP_AUTH_USER) and ($usrPass == $PHP_AUTH_PW_CRIPT)) {
    echo "<p>Ciao {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>Hai inserito {$_SERVER['PHP_AUTH_PW']} come tua password.</p>";
    }
    }


  • User

    Se adesso utilizzi gli array non puoi fare un confronto tra una variabile ed un'array...devi utilizzare l'if che ti ho postato in precedenza...

    if(in_array($PHP_AUTH_USER,$usrName) AND in_array($PHP_AUTH_PW_CRIPT,$usrPass))

    Così vedi se le due variabili sono presenti nell'array...

    Tutto questo giusto per fare una prova...

    Ricordati che poi nome utente e password "matchanti" devono avere lo stesso indice nei due array...altrimenti potresti aver trovato entrambi ma che riferiscono es. User ad un utente e Pass ad un'altro.


  • User Attivo

    ho sistemato così, ma cmq il problema continua a persistere.. 😞

    [PHP]<?

    include ('includes/mysql_conn.php');

    $query = mysql_query("SELECT * FROM utenti");

    while($riga=mysql_fetch_array($query)) {

    $usrName[] = $riga['username'];
    $usrPass[] = $riga['password'];
    }

    $PHP_AUTH_PW_CRIPT = md5('$PHP_AUTH_PW');

    function autenticazione() {

    global $usrName, $usrPass, $PHP_AUTH_USER, $PHP_AUTH_PW, $PHP_AUTH_PW_CRIPT;

    if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="il mio reame"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Messaggio da inviare se si preme il tasto Cancel';
    exit;
    }
    if(in_array($PHP_AUTH_USER,$usrName) AND in_array($PHP_AUTH_PW_CRIPT,$usrPass)) {
    echo "<p>Ciao {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>Hai inserito {$_SERVER['PHP_AUTH_PW']} come tua password.</p>";
    }
    }

    autenticazione();

    ?>[/PHP]


  • User

    Cosi ho testato e funziona:

     
    <?
    include ('includes/mysql_conn.php');
    $query = mysql_query("SELECT * FROM utenti");
    while($riga=mysql_fetch_array($query)) {
    $usrName[] = $riga['username'];
    $usrPass[] = md5($riga['password']);
    }
    $PHP_AUTH_PW_CRIPT = md5($_SERVER['PHP_AUTH_PW']);
    function autenticazione() {
    global $usrName, $usrPass, $PHP_AUTH_PW_CRIPT;
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="il mio reame"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Messaggio da inviare se si preme il tasto Cancel';
    exit;
    } 
    if(in_array($_SERVER['PHP_AUTH_USER'],$usrName) AND in_array($PHP_AUTH_PW_CRIPT,$usrPass)) {
    echo "<p>Ciao {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>Hai inserito {$_SERVER['PHP_AUTH_PW']} come tua password.</p>";
    }
    }
    autenticazione();
    ?>
    
    

    Se la password nel campo "password" del tuo DB è già MD5 puoi evitare di fare: $usrPass[] = md5($riga['password']);

    scrivendo semplicemente $usrPass[] = $riga['password'];

    Naturalmente se l'utente inserisce dei valori sbagliati nel form così fatto non otterrà altro che una pagina bianca...


  • User Attivo

    e nel caso in cui volessi matchare user e pass con lo stesso id come posso fare?

    inoltre, ultimissima domanda, prometto!

    avevo creato quest'altro file x effettuare la registrazione, xò mi sa che ho commesso lo stesso errore facendo restituire all'array solo l'ultima registrazione, quindi nel caso di registrazioni con lo stesso user o mail non di seguito, mi registra anche se i record sono già presenti nel db. come posso ovviare al problema?

    [php]
    <?

    /*

    • Creato Da: Pixelate
    • Nome File: Registrazione.php
      */

    include ('includes/mysql_conn.php');

    /* Acquisizione Variabili Registrazione Da Register.php */

    $username = @$_POST['username'];
    $password = @$_POST['password'];
    $email = @$_POST['email'];
    $citta = @$_POST['citta'];

    $Warn1 = "Impossibile effettuare la registrazione. L'Username inserito risulta giá registrato.";

    $Warn2 = "Impossibile effettuare la registrazione. L'email inserita risulta giá registrata.";

    $Warn3 = "<strong>Username</strong> o <strong>Password</strong> troppo corti. La loro lunghezza minima é di 6 caratteri.";

    $query = mysql_query("SELECT * FROM utenti");

    while($riga=mysql_fetch_array($query)) {

    $usrId = $riga['id'];
    $usrName = $riga['username'];
    $usrPass = $riga['password'];
    $usrEmail = $riga['email'];
    }

    // Criptazione MD5 Password
    $passwordcript = md5('$password');

    // Sistemo le variabili
    $username = str_replace("<", "<", $username);
    $username = str_replace(">", ">", $username);
    $password = str_replace("<", "<", $password);
    $password = str_replace(">", ">", $password);

    (trim($username) == "");
    (trim($password) == "");

    if ($usrId == 0) {
    $grado = 1;
    } else {
    $grado = 5;
    }

    if ($usrName == $username) {
    echo "$Warn1";
    }

    elseif ($email == $usrEmail) {
    echo "$Warn2";
    }

    elseif (strlen($username) < 6 or strlen($password) < 6) {
    echo "$Warn3";
    }

    // Esecuzione Query Di Inserimento In Database Mysql
    else {

    $query = mysql_query ("INSERT INTO utenti (username, password, email, grado, citta) VALUES ('$username', '$passwordcript', '$email', '$grado', '$citta')");

    mysql_close($db);

    header ("Location: regok.php");
    }

    if ($Warn1 == TRUE or $Warn2 == TRUE or $Warn3 == TRUE) {
    include('registra.php');
    }
    ?>
    [/PHP]


  • User

    Devi fare un ciclo dove controlli lo user incrementando un contatore:

    $cont = 0;
    $trovato = 0;

    for ($i = 0; $i < sizeof($usrName); $i++)
    {
    if($_SERVER['PHP_AUTH_USER'],$usrName)
    if ($PHP_AUTH_PW_CRIPT,$usrPass) $trovato = 1;
    }

    if ($trovato == 1) //L'utente è registrato

    Per l'altra domanda:

    Questo deve diventare così:

    while($riga=mysql_fetch_array($query)) {

    $usrId[] = $riga['id'];
    $usrName[] = $riga['username'];
    $usrPass[] = $riga['password'];
    $usrEmail[] = $riga['email'];
    }


  • User Attivo

    ma così facendo riesco cmq ad effettuare registrazioni illimitate con lo stesso user..


  • User Attivo

    @federico.p said:

    Cosi ho testato e funziona:

    > 
    <?
    include ('includes/mysql_conn.php');
    $query = mysql_query("SELECT * FROM utenti");
    while($riga=mysql_fetch_array($query)) {
    $usrName[] = $riga['username'];
    $usrPass[] = md5($riga['password']);
    }
    $PHP_AUTH_PW_CRIPT = md5($_SERVER['PHP_AUTH_PW']);
    function autenticazione() {
    global $usrName, $usrPass, $PHP_AUTH_PW_CRIPT;
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="il mio reame"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Messaggio da inviare se si preme il tasto Cancel';
    exit;
    } 
    if(in_array($_SERVER['PHP_AUTH_USER'],$usrName) AND in_array($PHP_AUTH_PW_CRIPT,$usrPass)) {
    echo "<p>Ciao {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>Hai inserito {$_SERVER['PHP_AUTH_PW']} come tua password.</p>";
    }
    }
    autenticazione();
    ?>
    
    >``` 
    Se la password nel campo "password" del tuo DB è già MD5 puoi evitare di fare: $usrPass[] = md5($riga['password']);
     
    scrivendo semplicemente $usrPass[] = $riga['password'];
     
     
     
     
    Naturalmente se l'utente inserisce dei valori sbagliati nel form così fatto non otterrà altro che una pagina bianca...
    
    nn va neanche così cmq.. mi restituisce sempre pagina bianca, eppure i dati sono tutti giusti..

  • User

    Perchè prima hai provato ad inserire un nome utente e una password errati...giusto?

    così facendo riempi le 2 variabili di sessioni e ai prossimi refresh passi il controllo isset dell'user ma senza avere nessuna risposta...


  • User Attivo

    no, ho provato subito con dati ESATTI e non effettua il login dandomi pagina bianca, secondariamente scrivendo dati ERRATI mi recuperava comunque la pagina bianca..