我在将此转换为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"];
}
答案 0 :(得分:3)
要设置会话变量,请使用:
$this->session->set_userdata('gids')
从会话变量中获取数据:
$this->session->userdata('gids'); // returns falls if gids does not exists
从GET变量获取数据:
$this->input->get('add2cart');
答案 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)