我正在通过nettuts关注“构建购物车”教程。我甚至没有进入前5分钟而且我遇到了问题。
看来我的会话系统无法正常工作并传递数据。我做了一些阅读,我看到CI不使用普通的php会话,而是使用会话ID作为标识符将它们存储在数据库中。
所以我检查了,我的所有数据库设置都是正确的,我根据我找到的一些堆栈答案设置了会话表和字段。我可以看到CI写入并将数据存储到会话表中,但购物车不会在页面中保存项目。
我正在自动加载
$autoload['libraries'] = array('database', 'cart');
$autoload['helper'] = array('form', 'html', 'url');
我设置了这个
$config['encryption_key'] = '';
^我的加密密钥由字母和数字组成,如果可以使用的话。
我看到这被设置为false所以我将其设置为true
$config['sess_use_database'] = TRUE;
这是购物车控制器的开始...
class Dazcart extends CI_Controller
{
//adds item to shopping cart
function Addtocart()
{
$item = array(
'id' => '42',
'name' => 'Octane Lean Build Fast',
'qty' => 1,
'price' => 347,
'options' => array ('flavor' => 'chocolate')
);
$return = $this->cart->insert($item);
echo "<pre>";
print_r($this->cart->contents());
echo "</pre>";
}
function Showcart()
{
$cartcontents = $this->cart->contents();
echo "<pre>";
print_r($cartcontents);
echo "</pre>";
}
}
现在每次加载/ Dazcart / Addtocart时,它都会通过print_r语句确认该项目已成功存储到购物车中。
但是如果我加载/ dazcart / Showcart,print_r语句只显示一个空数组,告诉我数据没有通过会话传递。 &gt; :(
我知道这是新手的东西,但我现在花了好几个小时,我是Code Igniter的新手。我只是想弄清楚这一点,所以我可以了解更多并让我的网站运行起来。 #frustrated
感谢您的帮助。
更新
这是我在配置文件中的会话设置
$config['sess_cookie_name'] = 'cisession';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
我注意到$ config [&#39; sess_use_database&#39;]原来是假的,我把它设置为true。
如果CI没有使用普通的php会话,我该如何进行会话转储?
答案 0 :(得分:2)
由于@SamDufel指出会话存储在cookie中,因此数据库只是可选的,因此当您向会话添加数据时,它会将其存储在cookie中。你需要加载会话,
$autoload['libraries'] = array('database', 'cart', 'session');