Files
qcmmaker/current_version/classes/.svn/text-base/session.php.svn-base
2013-08-07 14:41:29 +02:00

115 lines
2.5 KiB
Plaintext

<?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;
}
}
?>