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