2013-07-21 1 views
1

Nous construisons une boutique en ligne basée sur Codeigniter. Les produits sont enregistrés dans un panier avec l'aide de la classe Cart de Codeigniters.Comment maintenir une session active après la connexion (Codeigniter)

Lorsqu'un visiteur se connecte avec son compte, tous les produits qui sont déjà dans leur panier sont supprimés car une nouvelle session a commencé lorsque l'utilisateur connecté.

Comment pouvons-nous garder les produits dans le panier à ce stade ?

if($query->num_rows() == 1) 
    { 
     $user = $query->row_array(); 
     $data = array(
       'userid' => $user['id'], 
       'email' => $user['email'], 
       'validated' => true 
       ); 
     $this->session->set_userdata($data); 

     return true; 
    } 
+0

Je ne sais pas exactement, mais vous pouvez enregistrer dans la table temporaire et l'enregistrer avec user_id ... –

+0

C'est bizarre, Ajout de données de session personnalisé ne supprime pas l'ancienne session. pourriez-vous montrer la logique est pertinente pour le processus de connexion? –

+0

Il est difficile de l'enregistrer avec un user_id car l'enregistrement doit avoir lieu avant que l'utilisateur ne se connecte. –

Répondre

1

Vous devez créer nouvelle table dans la base, comme shoppingcarts, et passer tous les articles de cette classe graphique dans ce tableau, et l'ID utilisateur, puis lorsque journal utilisateur en une requête qui table avec son ID et l'ID ligne maintenant vous a tous products.But lorsque l'utilisateur bye supprimer simplement que les lignes dans la base et unset panier classe

$data = array(
        'id'  => 'sku_123ABC', 
        'qty'  => 1, 
        'price' => 39.95, 
        'name' => 'T-Shirt', 
        'options' => array('Size' => 'L', 'Color' => 'Red' 
        'user_id => '45') 
       ); 

    $this->cart->insert($data); 
    $chart = $this->cart->contents(); 
    $this->db->insert('shoppingcarts',$chart); 

Ceci est juste exemple simple, comment faire :)

+0

Je comprends le principe de la sauvegarde des éléments du panier dans la base de données. Mais pense toujours que je n'ai pas clarifié la situation correcte. Le problème est que le panier est vidé pendant que le visiteur est sur le site: le visiteur vient sur le site (pas connecté), met des produits dans le panier (on ne sait pas qui est l'utilisateur), puis décide de se connecter (nous savons maintenant de quel utilisateur il s'agit), et à ce stade, le panier est effacé. Comment savoir quels éléments du panier appartiennent à cet utilisateur? –

+0

Ne pas autoriser l'utilisateur à ajouter un graphique, jusqu'à ce qu'il soit connecté. –

1

Si les utilisateurs ont compte, vous besoin de sauvegarder les données dans la base de données.

Si les utilisateurs n'ont pas de compte et que vous souhaitez conserver son graphique (basé sur le navigateur), vous n'avez pas besoin de détruire la session lorsque l'utilisateur ferme la fenêtre. Vous devez le garder en session jusqu'à ce qu'il efface son tableau. Vous pouvez le faire sur le fichier config.php.

Questions connexes