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:
Controller$registry->router = new router($registry);$lang = $registry->router->getCulture();/*** Set the culture of user ***/$registry->user = new User(new Session());$user = $registry->user;{$user->setCulture(USER_DEFAULT_CULTURE);}/*** Changement de culture ***/{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:
UserTrackerpublic 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$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 !
