centraliser session pour utilisateur et ses fonctionnalitées ?

Rechercher

centraliser session pour utilisateur et ses...

Par Vini  -  1 reponse  -  Le 15/03/2009 14:09  -  Editer  - 

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

Par Vini  -  Le 17/04/2009 22:34  -  Haut de page  - 

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 !

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |