Сессия прерывается при использовании mod_rewrite и не переходит в index.phpPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Сессия прерывается при использовании mod_rewrite и не переходит в index.php

Сообщение Anonymous »

Поэтому я использую mod_rewrite.
Я вызываю файл создания сеанса при каждой загрузке страницы. Он создает сеанс с парой переменных.
Когда я захожу в подпапку, он также использует тот же файл создания сеанса для создания того же сеанса и переменных. Затем, когда я перехожу в папку домена, то есть: https://domainname.com/, но не перехожу на https://domainnamd.com/index.php, сеанс не сохраняется.
Но когда я получил до https://domainname.com/index.php, сеансы сохраняются со всеми переменными.
Я подозреваю, что при использовании перезаписи мода и переходе в папку домена без нацеливания на конкретный файл это эквивалентно выполнение перенаправления, при котором запуск сеанса не вызывается на домашней странице https://domainname.com/.
Помимо обеспечения того, чтобы все ссылки использовали URL-адрес https://domainname.com/index.php, есть ли способ гарантировать сохранение сеанса независимо от того, какой URL-адрес вызывается?
Мой файл .htaccess (только важные биты):

Код: Выделить всё


RewriteEngine On
RewriteCond %{HTTP_HOST} !=localhost:8080
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Header set Strict-Transport-Security "max-age=31536000;includeSubDomains; preload"
Header set Referrer-Policy: no-referrer
Header set X-Content-Type-Options nosniff

Header Set Permissions-Policy: geolocation=(self)

Header set Content-Security-Policy "upgrade-insecure-requests;"

Header always set X-Frame-Options SAMEORIGIN

RewriteRule !(\.gif|\.jpe?g|\.png|\.php|\.css|\.js|\.html|\.ihtml|\.htm)$ index.php [nocase,last]

Спасибо
Я перепробовал сотню способов, чтобы справиться с этим, но все равно ничего.
** обновление с информацией об инициализации сеанса. **

Я бы также добавил, что когда я захожу на https://domainname.com/home, сеанс сохраняется.

Так что это происходит только тогда, когда Я захожу на https://domainname.com/, но это не так.

Следующий код вызывается во включенном файле на каждой странице. Никакого другого начала сеанса больше нигде на сайте нет.

Я также использовал несколько версий тестирования с phprc и php.ini, указывающими на папку сеанса, путь к набору сеансов и домен сеанса. , при настройке куки или сессии это ничего не изменило. Он до сих пор это делает.

В некоторых случаях тестирования он фактически сохранял сеанс в папке сеанса, но не извлекал этот сеанс, а запускал новый.

Код: Выделить всё


session_start();
$this->SHOP_SESSION_ID = session_id();
if(!isset($_COOKIE['COOKIE_SESSION_ID']))
{
setcookie('COOKIE_SESSION_ID',
$this->SHOP_SESSION_ID, $this->EXPIRE_NUM_SECS);
}
if(!isset($_SESSION['SHOP_SESSION_ID']))
{
$_SESSION['SHOP_SESSION_ID'] = $this->SHOP_SESSION_ID;
define('SESS_ID',           $this->SHOP_SESSION_ID);
define('SHOP_SESSION_ID',   $this->SHOP_SESSION_ID);
}
else
{
define('SESS_ID',           $this->SHOP_SESSION_ID);
define('SHOP_SESSION_ID',   $this->SHOP_SESSION_ID);
}

большое спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -index-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»