У меня была похожая проблема (хотя я хотел использовать данные из сеанса CMS Made Simple в другом php-файле). Для меня причина была следующая (как указано в моем комментарии к вопросу):
CMS Made Simple (CMS отныне) создает собственное имя сеанса. Это означает, что когда вы запускаете session_start () в отдельном php-файле, у него не будет того же имени сеанса. Следовательно, php-файл не сможет получить доступ к данным сеанса CMS, а CMS не сможет получить доступ к данным сеанса php-файла.
Решение логически вытекает из причины, вам нужно, чтобы они оба использовали одно и то же имя сеанса.
CMS устанавливает имя сеанса в include.php
, которое должно находиться в корневой папке приложения.
$dirname = dirname(__FILE__);
...
$session_key = substr(md5($dirname), 0, 8);
#Setup session with different id and start it
@session_name('CMSSESSID' . $session_key);
Итак, в вашем php-файле вам нужно будет сделать следующее ( до вызова session_start();
):
//Substitute the string $dirname for the result of __FILE__ in **include.php**!!!
$dirname = '/data/web/somefolder/someotherfolder/'
$session_key = substr(md5($dirname), 0, 8);
@session_name('CMSSESSID' . $session_key);
//Now you can call session_start();
Это позволяет вашему php-файлу получать доступ к сеансу CMS. Если вы используете какие-либо плагины, которые помещают важные данные в сеанс, вы должны быть осторожны, чтобы не стереть эти данные.
ПРИМЕЧАНИЕ. Я использую CMS версии 1.8.2, это решение может не работать, если вы используете другую версию.