转换为codeigniter

时间:2010-12-15 01:27:30

标签: codeigniter

我在将此转换为CI时遇到问题,我对CI中的会话不熟悉,请帮助我

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"];
}

2 个答案:

答案 0 :(得分:3)

要设置会话变量,请使用:

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

从会话变量中获取数据:

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

从GET变量获取数据:

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

参考:
CodeIgniter Input Class
CodeIgniter Session Class

答案 1 :(得分:0)

首先,您必须注意,默认情况下,CodeIgniter会将其会话变量存储在cookie中。如果您希望将会话存储在可容纳大型数据的某个位置,请更改设置以使其使用数据库表来存储会话数据。打开system / application / config.php并将Session variables部分中的$ config ['sess_use_database']行更改为:

$config['sess_use_database'] = TRUE;

并创建会话数据库表:

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)
);

要使用会话,必须先加载会话库:(例如,在system / application / controller / cmilestone.php中)

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

然后你可以从一个方法中设置会话:

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);
 }

但我认为你应该真的使用POST来做操作。如果你想使用POST和CI的xss过滤器,那么$ _GET [“add2cart”]将替换为$ this-&gt; input-&gt; post('add2cart',true)