<?php
/**
*
*
* @version $Id$
* @copyright 2009
*/
class mod_user {
static private $user;
function index_exp(){
$page = page::Open();
$page->ExeTpl('index.tpl');
return true;
}
function deconnexion_exp(){
$page = page::Open();
$sql = DB_Driver::Open();
$sql->table = 'session';
$sql->Update(array('user'=>0), array('sessid'=>session::ID()));
$page->assign('message', 'vous avez été deconnecté');
$page->ExeTpl('connexion.tpl');
}
function inscription_exp(){
$page = page::Open();
$url = URL_Analyser::Open();
$alert = Alert::Open();
switch($url->GetUrlDir(-1)){
case 'inscription':
case 'start.htm':
$page->ExeTpl('inscription.tpl');
break;
case 'post.htm';
if (self::post()) {
$page->ExeTpl('finish.tpl');
} else {
$page->ExeTpl('inscription.tpl');
}
break;
default:
return false;
} // switch
}
function connexion_exp(){
$page = page::Open();
$url = URL_Analyser::Open();
$alert = Alert::Open();
if (session::GetVar('tentative') > 3) {
$page->assign('captcha', true);
}
switch($url->GetUrlDir(-1)){
case 'connexion':
case 'start.htm':
$page->ExeTpl('connexion.tpl');
return true;
break;
case 'post.htm';
if (!isset($_POST['login'],$_POST['pass'])) {
$page->assign('message', 'mot de passe ou login non renseigné.');
$page->ExeTpl('connexion.tpl');
} elseif (
self::connexion($_POST['login'],$_POST['pass'], @$_POST['captcha'])
){
$page->ExeTpl('index.tpl');
} else {
$page->assign('message', 'mot de passe ou login incorrect.');
$page->ExeTpl('connexion.tpl');
}
break;
default:
return false;
} // switch
}
private function post(){
$page = page::Open();
if (!isset(
$_POST['pseudo'],
$_POST['id'],
$_POST['pass'],
$_POST['pass2'],
$_POST['nee'],
$_POST['email']))
{
$page->assign('message', 'tous les champs sont obligatoire.');
return false;
}
if ($_POST['pass'] != $_POST['pass2'] || strlen($_POST['pass'])<6) {
$page->assign('message', 'les mots de passe ne sont pas identiques, ou font moins de 6 caractères.');
return false;
}
if (self::post_champunique('login', $_POST['id'])) {
$page->assign('message', 'login déjà utilisé.');
return false;
}
if (self::post_champunique('pseudo', $_POST['pseudo'])) {
$page->assign('message', 'pseudo déjà utilisé.');
return false;
}
if (self::post_champunique('email', $_POST['email'])) {
$page->assign('message', 'email déjà utilisé.');
return false;
}
if (strtoupper($_POST['captcha']) != session::GetVar('captcha')) {
$page->assign('message', 'Retappez le code de l\'image.');
return false;
}
sscanf($_POST['nee'], '%02d/%02d/%04d', $d, $m, $y);
$activate = md5(uniqid());
$sql = DB_Driver::Open();
$sql->table = 'user';
$sql->InsertInto(array(
'login' => $_POST['id'],
'pseudo' => $_POST['pseudo'],
'cookie_pwd' => '',
'pwd' => hash('sha256', $_POST['pass']),
'email' => $_POST['email'],
'MSN' => @$_POST['MSN'],
'skype' => @$_POST['skype'],
'inscript' => date('Y-m-d H:i:s'),
'last' => '0000-00-00',
'useragent' => $_SERVER['HTTP_USER_AGENT'],
'naissance' => sprintf('%d-%d-%d', $y, $m, $d),
'activate' => $activate
));
mail($_POST['email'], 'Activation', '<html><body><a href="'.$activate.'">l</a></body></html>');
return true;
}
private function post_champunique($champ, $value){
$sql = DB_Driver::Open();
$sql->table = 'user';
$ret = $sql->Select(array($champ=>$value));
return (mysql_num_rows($ret) != 0)?(TRUE):(FALSE);
}
function init(){
$page = page::Open();
$page->module = 'user';
}
function autoload(){
$sess = session::ID();
$sql = DB_Driver::Open();
$sql->table = 'session';
$user = mysql_result($sql->Select(
array('sessid' => $sess)
), 0, 'user');
$sql->table = 'user';
self::$user = mysql_fetch_assoc($sql->Select(array('id' => $user)));
$page = page::Open();
$page->assign('user', self::$user);
$page->assign('test', 'Tous les champs sont obligatoires');
}
function GetUserInfo(){
return self::$user;
}
function connexion($user, $pass, $captcha = ''){
$tentative = session::GetVar('tentative');
$sql = DB_Driver::Open();
$sql->table = 'user';
$pass = hash('sha256', $pass);
$user = $sql->Select(array('pwd'=>$pass, 'login'=>$user));
if ($tentative > 4 && strtoupper($captcha) != session::GetVar('captcha')) {
session::SetVar('tentative', $tentative + 1);
return false;
} elseif (mysql_num_rows($user) == 0){
session::SetVar('tentative', $tentative + 1);
return false;
} else {
$sql->table = 'session';
$sql->Update(array(
'user'=>mysql_result($user, 0, 'id')
), array(
'sessid' => session::ID()
));
self::autoload();
session::SetVar('tentative', 0);
return true;
}
}
function GetAllUser(){
$sql=DB_Driver::Open();
$sql->table = 'user';
$users = array();
$result = $sql->Select(
array(), array('id', 'pseudo', 'login')
);
while($user = mysql_fetch_assoc($result)){
$users = array_merge($users, array('id'.$user['id']=>$user));
} // while
return $users;
}
}
?>