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

在cakephp 2页控制器中读取用webroot编写的会话,php,session,cakephp,cakephp-2.0,Php,Session,Cakephp,Cakephp 2.0,我在app/webroot/myscript/antispam.php中有一个脚本 代码就像 @session_start(); $_SESSION['my_anti_spam'] = 'myantispam'; 但是当我试着从pagescontroller读到它时 @session_start(); debug($_SESSION); 它没有任何会话 我该怎么办?如何从controller读取写入webroot文件夹的会话?您不需要在Cake中调用会话start,它会自动调用它 在反垃圾邮

我在app/webroot/myscript/antispam.php中有一个脚本

代码就像

@session_start();
$_SESSION['my_anti_spam'] = 'myantispam';
但是当我试着从pagescontroller读到它时

@session_start();
debug($_SESSION);
它没有任何会话


我该怎么办?如何从controller读取写入webroot文件夹的会话?

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

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

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

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

您可以将其放在控制器或视图上:

$this->Session->write('my_anti_spam', 'myantispam');
然后,您可以通过以下方式阅读会话:

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

检查是否在调用会话启动pagescontroller@JasonOOO是的,有。检查我的更新代码试试这个:如果SESSION_start{$_SESSION['my_anti_spam']='myantispam';}否则echo'SESSION notstart'@jasonoo我把它放在antispam.php上,仍然不起作用