Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema con gestione utenti

    Salve ragazzi, ho un problema con il quale non riesco a venire a capo.

    Dunque, ho un sito dove per mezzo di un form ci si registra in un database utenti che contiente nome, cognome, mail e password.

    Quando ci si logga, lo script php non fa altro che connettersi al database e fare delle virifiche, in particolare ne fa tre:
    1- se la mail esiste nel database;
    2- se la mail esiste ma la password è sbagliata segnala errore
    3- se mail e password sono corretti allora redirect in un'altra pagina.

    Il problema è il seguente: se il database contiente solamente un utente, il php esegue i suoi controlli correttamente, e segnala gli opportuni errori. Ma se gli utenti sono più di uno iniziano i guai, in particolare mi dice che l'utente non è presente nel database, quando realmente lo è.
    Vi posto il codice.

    Codice PHP:
    <?php 
    $host
    ="localhost"
    $user="xxxxxxxxx"
    $database="xxxxxxxx"
    //Reperisco variabili      
    $mail=$_POST['maillogin']; 
    $passwordlogin=$_POST['passwordlogin'];
    print(
    $mail);
    echo(
    "
    "
    );
    print(
    $passwordlogin); 
    //Controllo campi vuoti
    if ($mail == "") {
    echo 
    "<script type=\"text/javascript\">alert(\"Devi inserire una mail\"); history.go(-1)</script>";
    exit;         
    }     
    if(
    $passwordlogin == ""){ 
    echo 
    "<script type=\"text/javascript\">alert(\"Devi inserire una password\"); history.go(-1)</script>";             
    exit;
    }
    //Connessione al DB     
    $db mysql_connect($host$user"password") or die ("Impossibile connettersi al server");     
    mysql_select_db($database,$db) or die ("Impossibile connettersi al database");
    //Crypto password
    $passwordlogin MD5($passwordlogin);
    //Seleziono tabella 
    $result mysql_query("SELECT * FROM utenti");
    //Controllo mail e password
    while($row mysql_fetch_array($result)){
    //Mail insesistente 
    if ($mail != $row['mail']) {
    echo 
    "<script type=\"text/javascript\">alert(\"Non risulti essere registrato\"); history.go(-1)</script>";         
    exit;         
    }         
    //Password errata         
    if ($mail == $row['mail']  && $passwordlogin != $row['password']) {                     
    echo 
    "<script type=\"text/javascript\">alert(\"Password non corrispondente, riprova\"); history.go(-1)</script>";         
    }         
    //Login corretto         
    if ($mail == $row['mail']  && $passwordlogin == $row['password']) {                      /
    /
    Avvio sessione             
    // chiusura database      
    mysql_close($db);  ?>
    Credo che il problema sia contenuto nel while perché se ho 1 utente funziona a dovere se ne ho più di uno dice che non esiste. Ma come è possibile?

    Grazie per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Scusa ma mi sembra piuttosto ovvio, se tu fai questo confronto

    $mail != $row['mail'] e dai un errore nel caso non siano uguali è scontato
    che darà errore con piu utenti, perchè l'e-mail è uguale solamente ad un utente
    in tutto il database (o almeno si spera)

    Comunque bastava fare un semplice select nel database con i rispettivi campi
    ed un conto dei rows per fare il login invece di quel pasticcio

  3. #3
    Hai perfettamente ragione. Pensavo che scorresse il database e solo dopo aver controllato che fossero tutte diverse allora dava errore.

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.