2013-01-15 2 views
0

Я использую сеансы для моего проекта expressionengine. Я использовал следующие методы для установки сеансов в верхней части страницы.Вопрос о родной сессии PHP на expressionengine

if (session_id() == ''){ 
     session_start(); 
    } or 

    if(!isset($_SESSION)){ 
     session_start(); 
    } 

     or 

    if(empty($_SESSION['userid'])){ 
     session_start(); 
    } 

Я написал собственное плагин двигателя выражений, на котором я выполняю проверку сеанса.

Когда-то я наблюдал странное поведение сеансов. Он различается для разных URL-адресов. для http: // url он устанавливает по-другому и для www: // url он устанавливает по-разному. Как настроить и получить сеансы так, чтобы и http://example.com, и www.example.com выработали такой же результат.

Я также выполнил шаги с этого URL-адреса http://ellislab.com/forums/viewthread/231468/. Я опубликовал ту же самую проблему на http://ellislab.com/forums/viewthread/232604/. Но это не помогает мне.

Может кто-нибудь помочь мне в этом.

+1

'www: //' url? нет протокола www: // ... –

ответ

0

Благодаря @mishu. После того, как вы объяснили, что www является субдоменом и проблемой session_cookie, я немного экспериментировал, а затем немного искал.

Это сообщение о stackoverflow было очень полезно. PHP Sessions across sub domains

Я открыл файл index.php на корневую папку ExpressionEngine/CodeIgniter, а затем добавил строку ниже

ini_set('session.cookie_domain','.example.com'); 

Теперь его работает отлично. Если кто-то может кратко объяснить эту тему, это будет полезно для других разработчиков.

+0

http://stackoverflow.com/questions/4948340/how-to-pass-session-variable-to-a-page-in-the-parent-directory также полезен после. –

+0

добро пожаловать. И именно поэтому я дал ссылку на эту конкретную функцию, а не только для того, чтобы предложить вам ее использовать. Возможно, используемая вами система имеет рекомендуемую оболочку, но эта страница руководства имеет то преимущество, что она является хорошей отправной точкой для понимания идеи (описание и ссылки на другие ресурсы); Я рад, что вы решили свою проблему – mishu

2

Небольшое примечание: www является субдоменом, а не протоколом. Так что это www.example.com, а не www: //example.com

Это говорит о том, что проблема заключается в том, что cookie сеанса (я думаю, вы используете cookie сеанса) не распознается на разных поддоменах , так что вам нужно будет сделать его доступным на всей области

вы можете проверить эту функцию PHP для более подробной информации: http://php.net/session_set_cookie_params

Смежные вопросы