Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [MySql] Problema con il log in

    Ciao ragazzi... sto prendendo familiarità con il PHP grazie a questo lavoro, ma da parecchio tempo sto impazzendo dietro ad un problema di login, e non so più dove andare a mettere le mani.

    In pratica il form (adminLogin.php):


    <form id='loginFrm' action="../includes/login.php" method="post">
    <table cellpadding="5" cellspacing="0">
    ......
    <input name="user_name" id="user_name" type="text"/>
    ......
    <input name="password" id="password" type="password"/>
    .....
    <input type="submit" value="Login" id="submit" />
    .....
    </form>


    Mi rimanda ad una pagina che controlla i dati (login.php)


    <?PHP
    require_once('../DB/Sentry.php');
    $login = new Sentry();
    if($login->checkLogin($_POST['user_name'], $_POST['password'], 1)){
    header("Location: ../Admin/adminHome.php");
    }else{
    header("Location: ../Admin/adminLogin.php");
    }
    ?>


    nella pagina Sentry.php ho tutte le funzioni per accedere al database:



    <?PHP
    class Sentry{

    var $userData;

    //COSTRUZIONE SESSIONE -----------------------------------
    function Sentry(){
    session_start();
    header("Cache-control: private");
    }

    //LOGOUT ----------------------------------------------------------------------
    function logout(){
    unset($this->userData);
    session_destroy();
    return true;
    }


    //CHECK LOGIN --------------------------------------------------------------
    function checkLogin($userName = " ", $password = " ", $group=3){
    unset($this->userData);
    require_once('dbConnector.php');
    $user = $userName;
    $pass = $password;
    $valid = $group;

    if(isset($_SESSION['user']) && isset($_SESSION['pass'])){
    //SE L'USER E'LOGGATO VALIDA LA PASSWORD, CONTROLLA LE CREDENZIALI PER ACCEDERE AL DATABASE
    $userQuery = "SELECT * FROM cmsusers WHERE user_name = '" . $_SESSION['user'] . "' AND password = '" . $_SESSION['pass'] . "' AND access = " . $valid;
    $connector1 = new DbConnector();
    $getUser = $connector1->query($userQuery);
    //SE E'OK DAMMI TRUE, ALTRIMENTI DAMMI FALSE
    if($connector1->getNumRows($getUser) > 0){
    return true;
    }else{
    return false;
    }

    }else{
    //VALIDAZIONE INPUT, SE E'OK DAMMI TRUE, ALTRIMENTI DAMMI FALSE
    require_once('dbConnector.php');
    $connector2 = new DbConnector();
    $userQuery = "SELECT * FROM cmsusers WHERE user_name = '" . $user . "' AND password = PASSWORD('" . $pass . "') AND access = " . $valid;
    $getUser = $connector2->query($userQuery);
    $this->userData = $connector2->fetchArray($getUser);

    //SE L'UTENTE ESISTE, CREA LE VARIABILI DI SESSIONE E DAI TRUE, ALTRIMENTI... ARRABBIATI E DAMMI FALSO
    if($connector2->getNumRows($getUser) > 0){

    $_SESSION['user'] = $this->userData['user_name'];
    $_SESSION['pass'] = $this->userData['password'];
    $_SESSION['valid'] = $this->userData['access'];

    return true;

    }else{
    unset($this->userData);
    return false;
    }


    }

    }

    }
    ?>


    ...il risultato è che il login della prima pagina fallisce puntualmente. Non credo sia per colpa di una questione di utenti e pèermessi, perchè i dati che ho messo a manina nel database si vedono correttamente. Dove sbaglio?
    Ciao
    shine on you!!

  2. #2
    provato a far stampare la query che esegue...almeno vediamo se fino a lì è tutto ok...

  3. #3
    provo. Anzitutto ho trovato un errore nel sentry, il $valid è sbagliato
    shine on you!!

  4. #4
    Allora: la query è la seguente:

    SELECT * FROM cmsusers WHERE user_name = 'Administrator' AND password = PASSWORD('Belin') AND access <= 3

    (OK) che mi da come risultato

    Resource id #4

    ma l'array risulta vuoto....
    shine on you!!

  5. #5
    domanda inutile ma..suppongo tu abbia già controllato che ci sia almeno una riga nella tabella che soddisfa quelle condizioni...

    un print_r di $this->userData?

  6. #6
    Sono riuscito ad entrare. Il problema è nella query

    $userQuery = "SELECT * FROM cmsusers WHERE user_name = '" . $user . "' AND password = PASSWORD('" . $pass . "') AND access = " . $valid;


    Quella funzione PASSWORD(' ') non viene riconosciuta. L'ho congelata, ho aggiunto un record al database ed ora va.
    Devo trovare comunque una soluzione per nascondere il dato... ciao, grazie
    shine on you!!

  7. #7
    Originariamente inviato da crazy diamond
    Sono riuscito ad entrare. Il problema è nella query

    $userQuery = "SELECT * FROM cmsusers WHERE user_name = '" . $user . "' AND password = PASSWORD('" . $pass . "') AND access = " . $valid;


    Quella funzione PASSWORD(' ') non viene riconosciuta. L'ho congelata, ho aggiunto un record al database ed ora va.
    Devo trovare comunque una soluzione per nascondere il dato... ciao, grazie
    che dato vuoi nascondere? la password?

  8. #8
    si...
    shine on you!!

  9. #9
    registri sul db l'md5 o sha-1 della password

    quando devi fare il controllo, prendi la password, ne fai md5 e fai la select con quello...

  10. #10
    ok, vado così. Ciao, grazie ancora
    shine on you!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.