PHP сессия выдает "session_set_cookie_params" новый идентификатор сессии для другой папки - PullRequest
0 голосов
/ 05 июня 2019

Добрый день,

У меня изящная проблема с моей сессией PHP. Самое большое из того, что оно работает большую часть времени. Но бывают моменты, это не так.

У меня есть система CMS, которая работает следующим образом:

(первая страница) https://www.example.com/

(вторая страница) https://www.example.com/stackoverflow-cool-site.html

(третья страница) https://www.example.com/houston-we-have-a-problem/what-problem-do-you-have.html

Теперь я попытался установить переменную SESSION для параметра GET на главной странице, чтобы, если сеанс был установлен, третья страница могла его использовать. E.g.:

htts: //www.example.com набор = good_weather

Теперь идентификатор сессии установлен для первой страницы: qavuaadh6l0b9qhmrv9unr0chc Но я заметил, что другие страницы дают: 2gmdggiv9k43khtsikm2eo1rvh

И, конечно, идентификатор сессии может быть чем угодно, и это не такая уж большая проблема. Но дело в том, что это другой ID СЕССИИ.

Теперь этот вопрос встал раньше ! И ответ был: session_set_cookie_params https://www.php.net/manual/en/function.session-set-cookie-params.php

Однако я уже сделал это. И в правильном порядке. Но, вероятно, не совсем так, как я должен. И мне действительно интересно, где моя проблема.

        session_set_cookie_params(
                                    self::$limit,           /// **** LIFETIME OF THE SESSION COOKIE (in seconds)
                                    self::$path,            /// **** THE DOMAIN FOR WHERE THE COOKIE WILL WORK. (single /  for all paths on the domain.)
                                    self::$domain,          /// **** DEFINE THE DOMAIN NAME
                                    self::$secure,          /// **** ONLY BY SECURE CONNECTIONS
                                    self::$httponly         /// **** INDICATE THAT THE SESSION COOKIE IS AVAILABLE THROUGH HTTP PROTOCOLS ONLY (not by Javascript)
                                );

А если вы заполните значения переменных, вы получите:

    session_set_cookie_params(
                    432000,
                    '/',
                    'example.com',
                    true,
                    true
                );

То, что я вижу и понимаю, должно быть правильно. Но это не так. Я надеюсь, что кто-то мог пролить свет на мою ошибку.

Заранее спасибо.

HTTPS Я захожу на сайт по протоколу HTTPS, и каждый вызов, который я делал с установленными сценариями, осуществляется только по HTTPS.

Сценарий У меня все звонки направлены на один и тот же скрипт. Я использую скрипт .htaccess, чтобы все это работало.

DirectoryIndex core/index.php

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ core/index.php?url=$1 [QSA,L]
 </IfModule>

1 Ответ

0 голосов
/ 05 июня 2019

Вы можете установить идентификатор сессии, если хотите. Вы должны сделать это до начала сессии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...