2014-04-08 16 views
0

我已經位於應用程序/ webroot的腳本/的MyScript/antispam.php寫在根目錄中的CakePHP 2頁控制器讀取會話

代碼就像

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

但後來當我試圖閱讀它來自pagescontroller,

@session_start(); 
debug($_SESSION); 

它沒有任何會話。

我該怎麼辦?我怎樣才能讀取從控制器寫在webroot文件夾中的會話?

+0

檢查:

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

您可以通過刪除會話如果session_start()在頁面控制器調用 –

+0

@JasonOOO是的,它已經。檢查我更新的代碼 – Harts

+0

試試這個:'if(session_start()){$ _SESSION ['my_anti_spam'] ='myantispam';} else echo'session notstarted'' –

回答

0

您不需要在Cake中調用會話啓動,它會自動調用它。

在你的反垃圾郵件腳本,你需要這樣的事情:

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

session_name('CAKEPHP'); 

session_start(); 

這是假設你是存儲在應用程序的/ tmp /會話目錄會話,也就是你有這樣的事情在你的應用程序/配置/core.php文件:

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

爲什麼你需要在webroot索引文件中設置會話?如果你想在整個項目中使用這個會話,請在appController的beforeFilter方法中添加會話。

0

你可以把這個控制器或者視圖上:

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

然後你就可以讀取會話:

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