2010-12-15 31 views
0

Je vais avoir un problème à la conversion de ce CI, je ne suis pas au courant des séances de CI, aidez-moi s'il vous plaîtconverti à CodeIgniter

if (!isset($_SESSION["gids"])) { 
    $_SESSION["gids"] = array(); 
} 

//check for current product in visitor's shopping cart content 
$i=0; 
while ($i<count($_SESSION["gids"]) && $_SESSION["gids"][$i] != $_GET["add2cart"]) $i++; 

if ($i < count($_SESSION["gids"])) //increase current product's item quantity 
{ 

} 
else //no such product in the cart - add it 
{ 
    $_SESSION["gids"][] = $_GET["add2cart"]; 
} 

Répondre

3

Pour définir une variable de session, utilisez:

$this->session->set_userdata('gids') 
Pour obtenir

données à partir d'une variable de session:

$this->session->userdata('gids'); // returns falls if gids does not exists 

Pour obtenir des données de variables GET:

$this->input->get('add2cart'); 

Référence:
CodeIgniter Input Class
CodeIgniter Session Class

0

Tout d'abord, vous devez savoir que par défaut CodeIgniter stocke ses variables de session dans le cookie. Si vous souhaitez que la session soit stockée dans un emplacement susceptible de contenir des données de grande taille, modifiez les paramètres afin qu'elle utilise la table de base de données pour stocker les données de session. Ouvrez système/application/config.php et modifier la section $ config [ 'de sess_use_database'] ligne en session Variables dans:

$config['sess_use_database'] = TRUE; 

et créer la table de base de données de session:

CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL, 
ip_address varchar(16) DEFAULT '0' NOT NULL, 
user_agent varchar(50) NOT NULL, 
last_activity int(10) unsigned DEFAULT 0 NOT NULL, 
PRIMARY KEY (session_id) 
); 

Pour utiliser sessions, vous devez d'abord charger la bibliothèque de session: (par exemple, dans le système/application/contrôleur/cmilestone.php)

function CMilestone(){ 
     parent::Controller(); 
     $this->load->library('Session'); 
} 

Ensuite, vous pouvez définir la session à l'intérieur de l'une des méthodes:

function something() { 
    if ($this->session->userdata('gids') === false) $this->session->set_userdata('gids',array()); 
    $i=0; 
    $gids = $this->session->userdata('gids'); 
    while ($i<count($gids) && $gids[$i] != $_GET["add2cart"]) $i++; 

if ($i < count($gids)) //increase current product's item quantity 
{ 

} 
else //no such product in the cart - add it 
{ 
    $gids[] = $_GET["add2cart"]; 
    $this->session->set_userdata('gids',$gids); 
} 

Mais je pense que vous devriez vraiment utiliser POST pour faire des opérations. Si vous souhaitez utiliser POST et le filtre xss de CI, le $ _GET ["add2cart"] sera remplacé par $ this-> input-> post ('add2cart', true)