centraliser session pour utilisateur et ses...
Hello World !
je sais pas si mon titre veux dire grand chose mais bon j'ai pas trouver mieux lol !
voici mon cas j'ai créer les classes :
- User
- SessionStorage
- Shopping Cart
- UserTracker
et un sytème multilangue avec des fichiers de constantes !
je me suis basé sur les astuces que tu m'as données tout au long de ma petite application
que je monte au fur et à mesure !
mais sans plus tarder voici un peu de code :D
dans mon controller:
$registry->router = new router($registry);
$lang = $registry->router->getCulture();
/*** Set the culture of user ***/
define('USER_DEFAULT_CULTURE', 'FR');
User::setAvailableCultures(array('DE','BE','EN','FR','IT','PT'));
$registry->user = new User(new Session());
$user = $registry->user;
if(is_null($user->getCulture()))
{
$user->setCulture(USER_DEFAULT_CULTURE);
}
/*** Changement de culture ***/
if(!empty($lang))
{
try
{
$user->setCulture($lang);
}
catch(Exception $e)
{
throw $e;
}
}
require( __SITE_PATH . '/application/common/' . $user->getCulture() .'.php');
/*** Track bisitor ***/
$user->setUserTracker(new TrackUser());
$user->addUserVisitor();
la ou je bloque c'est comment utiliser l'objet SessionStorage dans les class utiliées par User
sachant que je fais $user = new User(new Session);
et j'en ai besoin dans ma class de UserTracker qui me permet de suivre le visiteur (User) et donc le tracker
pour des besoins de statistics !
exemple de mon code:
public function addVisitor()
{
try
{
$sql = 'INSERT INTO ' . self::T_STAT_NAV . ' ('
.self::F_ADDR.', '
.self::F_NAME_PAGE.', '
.self::F_DETAIL_PAGE.') VALUES (\''
.$_SERVER['REMOTE_ADDR'].'\', \''.$_SERVER['SCRIPT_NAME'].'\', \''
.$_SERVER['QUERY_STRING'].'\')';
$pdo = self::getConnection();
$pdo->beginTransaction();
$statement = $pdo->prepare($sql);
$statement->execute();
// Get the last id insert
$last = $pdo->lastInsertId();
$pdo->commit();
$sql = 'SELECT MAX('.self::F_NUM_VISITOR.')
AS '.self::F_COMPTEUR.'
FROM '.self::T_STAT_NAV.' ';
$sql = $pdo->prepare($sql);
$sql->execute();
$row = $sql->fetch(PDO::FETCH_OBJ);
$counter = $row->counter;
// if isset counter then $counter else $counter += 1
echo $counter = !isset($counter) ? $counter = 1 : $counter++;
$sql = 'UPDATE '.self::T_STAT_NAV.'
SET '.self::F_NUM_VISITOR.' = \''. $counter .'\'
WHERE ' .self::F_ID.' = ' . $last;
$pdo->beginTransaction();
$qid = $pdo->prepare($sql);
$qid->execute();
$pdo->commit();
$_SESSION['follow'] = true;
$_SESSION['numUser'] = $counter;
$_SESSION['url_completed'] = $_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'];
}
je précise au passage que je me suis inspirer de phpsolution("Christophe Villeneuve"**) **qui propose le script de tracking que je trouve pour ma part pas mal du tout et je le réadapte en objet !
donc dans ce cas je dois utilisé la session pour que le server ce souviens de l'utilisateur !
j'ai pensé dans cette classe à faire des **setters **et des **getters **pour les variable de sessions qui avec l'objet $user j'aurais plus cas set la session !
mais est bon ? ca me parait peut etre un peut bidouiller et il y'a peut etre mieux !
Merci d'avance pour votre aides !
Vini += 1 :D
Réponses apportées à cette discussion
Bon ben je vois toujours pas comment géré ce truc au mieux !
dois je créer un objet session dans la class tracker sachant que je fais new Session() en parametre
de User !
ou bien je dois utilisé des méthode static faire du hydrate !
bref je vois pas trop ! je galère comme d'hab !