115 lines
2.5 KiB
PHP
115 lines
2.5 KiB
PHP
<?php
|
|
|
|
/* Session Class */
|
|
|
|
class PhpObject
|
|
{
|
|
private $asErrorStack;
|
|
|
|
function __construct()
|
|
{
|
|
$this->asErrorStack = array();
|
|
}
|
|
|
|
function addError($sError)
|
|
{
|
|
$this->asErrorStack[] = $sError;
|
|
}
|
|
|
|
function getCleanErrorStack()
|
|
{
|
|
$sErrorStack = implode("\n", $this->asErrorStack);
|
|
$this->asErrorStack = array();
|
|
return $sErrorStack;
|
|
}
|
|
|
|
function __destruct()
|
|
{
|
|
file_put_contents('log.html', "\n\n".date('r')."\n".$this->getCleanErrorStack(), FILE_APPEND);
|
|
}
|
|
}
|
|
|
|
class Session extends PhpObject
|
|
{
|
|
private $iUserId;
|
|
private $sLogin;
|
|
private $oMySql;
|
|
|
|
public function __construct($oMySql)
|
|
{
|
|
parent::__construct();
|
|
$iUserId = $sLogin = false;
|
|
$this->oMySql = $oMySql;
|
|
$this->syncSession();
|
|
}
|
|
|
|
private function syncSession()
|
|
{
|
|
if(isset($_SESSION['id_user']))
|
|
{
|
|
$this->iUserId = $_SESSION['id_user'];
|
|
}
|
|
if(isset($_SESSION['login']))
|
|
{
|
|
$this->sLogin = $_SESSION['login'];
|
|
}
|
|
}
|
|
|
|
private function setSession($iUserId, $sLogin)
|
|
{
|
|
$_SESSION['id_user'] = $iUserId;
|
|
$_SESSION['login'] = $sLogin;
|
|
$this->syncSession();
|
|
}
|
|
|
|
public function logMeIn($sLogin, $sPass)
|
|
{
|
|
$asUser = $this->oMySql->selectRow(MySqlManager::USER_TABLE, array(MySqlManager::USER_TABLE=>$sLogin));
|
|
if(!$asUser)
|
|
{
|
|
$this->addError('Utilisateur inconnu');
|
|
}
|
|
elseif($this->checkPassword($sPass, $asUser['pass']))
|
|
{
|
|
$this->setSession($asUser['id_'.MySqlManager::USER_TABLE], $sLogin);
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
$this->addError('mot de pass incorrect');
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function isLogguedIn()
|
|
{
|
|
$bLogguedIn = false;
|
|
if(isset($_SESSION['id_user']) && isset($_SESSION['login']) && $_SESSION['id_user']!='' && $_SESSION['login']!='')
|
|
{
|
|
$bLogguedIn = $this->oMySql->selectValue(MySqlManager::USER_TABLE, 'COUNT(1)', array('id_'.MySqlManager::USER_TABLE=>$_SESSION['id_user'], MySqlManager::USER_TABLE=>$_SESSION['login']));
|
|
}
|
|
return $bLogguedIn;
|
|
}
|
|
|
|
public function logMeOut()
|
|
{
|
|
$_SESSION = array();
|
|
return session_destroy();
|
|
}
|
|
|
|
public static function encryptPassword($sPass)
|
|
{
|
|
$sRandomText = 'F_RA-1H2dsdj)5fsd3sdPKUsdIN@(sZ.';
|
|
for($iIndex=0; $iIndex < strlen($sPass); $iIndex++)
|
|
{
|
|
$sPass[$iIndex] = $sRandomText[$iIndex%strlen($sRandomText)] ^ $sPass[$iIndex];
|
|
}
|
|
return md5($sPass);
|
|
}
|
|
private function checkPassword($sClearPass, $sEncodedPass)
|
|
{
|
|
return $this->encryptPassword($sClearPass) == $sEncodedPass;
|
|
}
|
|
|
|
}
|
|
?>
|