Ho appena realizzato un piccolo form di login per un'area di amministrazione, e vorrei sentire i vostri pareri,consigli o qualsiasi altra cosa che abbiate da chiedermi o dirmi;
lo username e la password vengono confrontati con i valori salvati in un database e se sono corretti registro i dati dell'utente che si è loggato(username,ip,ora login,ora logout).
Ecco il codice:
LOGIN.CLASS.PHP
Codice PHP:
<?php
class loginClass{
private $key = 's6ufnNBBYJD=)/bndwudbacv$gwsnNUJufSAxwq02Ngf4%Wh!';
public function isConnected(){
return (isset($_SESSION['logged']) === true) ? true : false;
}
public function login($user, $pass){
$hashPass = PMA_blowfish_encrypt($pass, $key);
$sql = "SELECT id FROM users WHERE username='".$user."' AND password='".$hashPass."'";
$result = mysql_query($sql);
$row = mysql_num_rows($result);
if($row == '1')
{
$verifyStore = $this->storeLog($user,'LogIn');
if($verifyStore === true)
{
$_SESSION['logged'] = PMA_blowfish_encrypt("SESSION+VERIFIED", $this->key);
return true;
}
else
return false;
}
else
return false;
}
public function logout(){
$this->storeLog('','LogOut');
unset($_SESSION['logged'],$_SESSION['idSession']);
session_destroy();
}
private function storeLog($user,$action){
$CurrentTime = date('c');
if($action == 'LogIn')
{
$ip=$_SERVER['REMOTE_ADDR'];
$sql="INSERT INTO SiteAccess (id,user,ip,login_time,logout_time) VALUES('','".$user."','".$ip."','".$CurrentTime."','')";
$result=mysql_query($sql);
if($result === true)
{
$idSession = mysql_insert_id();
$_SESSION['idSession'] = PMA_blowfish_encrypt($idSession, $this->key);
return true;
}
else
return false;
}
elseif($action == 'LogOut')
{
$idSession=PMA_blowfish_decrypt($_SESSION['idSession'], $this->key);
$sql="UPDATE SiteAccess SET logout_time='".$CurrentTime."' WHERE id='".$idSession."'";
mysql_query($sql);
}
else
return false;
}
}
LOGIN.PHP
Codice PHP:
<!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<?php session_start();?>
<?php require_once 'PhpClass/connection.Class.php'; ?>
<?php require_once 'PhpClass/crypt.Class.php'; ?>
<?php require_once 'PhpClass/login.Class.php'; ?>
</head>
<html>
<body>
<?php
$log = new loginClass();
$verifyUserConn = $log->isConnected();
if($verifyUserConn === true)
header("Location: Pages/intro.php");
else
{
if(isset($_POST['uname']) && isset($_POST['passw']))
{
$filteredUser = mysql_real_escape_string($_POST['uname']);
$filteredPass = mysql_real_escape_string($_POST['passw']);
$connection = new connect();
$connection->connessioneMysql('root', '', 'localhost', 'administration');
$verifyLogin = $log->login($filteredUser, $filteredPass);
if($verifyLogin === true)
header("Location: Pages/intro.php");
else
header("Location: ".$_SERVER['PHP_SELF']);
}
else
{
?>
Inserire username e password
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Username<input type="text" name="uname">
Password<input type="password" name="passw">
<button type="submit">invia</button>
</form>
<?php
}
}
?>
</body>
</html>
Poi volevo chiedere se qualcuno avesse mai usato $_SERVER['PHP_AUTH_USER'] per le autenticazioni.
Grazie in anticipo per tutte le eventuali risposte