在cakephp 2页控制器中读取webroot中的会话

时间:2014-04-08 20:42:11

标签: php session cakephp cakephp-2.0

我有一个脚本位于app / webroot / myscript / antispam.php

代码就像

@session_start();
$_SESSION['my_anti_spam'] = 'myantispam';

但是当我尝试从pagescontroller中读取它时,

@session_start();
debug($_SESSION);

它没有任何会话。

我该怎么办?如何从控制器中读取写在webroot文件夹上的会话?

3 个答案:

答案 0 :(得分:0)

您不需要在Cake中调用会话启动,它会自动调用它。

在您的反垃圾邮件脚本中,您将需要以下内容:

define('DS', DIRECTORY_SEPARATOR);
session_save_path(dirname(dirname(dirname(__FILE__))) . DS . 'tmp' . DS . 'sessions');

session_name('CAKEPHP');

session_start(); 

这假设你在app / tmp / sessions目录中存储会话,即你的app / Config / core.php文件中有这样的东西:

Configure::write('Session', array(
    'defaults' => 'cake',
    'timeout' => 6 * 60,    // Timeout in minutes
    'autoRegenerate' => false,
    'ini' => array(
      'session.cookie_secure' => false
    )
));

答案 1 :(得分:0)

为什么需要在webroot索引文件中设置会话?如果你想在整个项目中使用这个会话,请在appController beforeFilter方法中添加会话。

答案 2 :(得分:0)

您可以将其放在控制器上或查看:

$this->Session->write('my_anti_spam', 'myantispam');

然后您可以通过以下方式阅读会话:

<?php echo $this->Session->read("my_anti_spam");?>

您可以通过以下方式销毁会话:

$this->Session->delete('my_anti_spam');