Я вызываю файл создания сеанса при каждой загрузке страницы. Он создает сеанс с парой переменных.
Когда я захожу в подпапку, он также использует тот же файл создания сеанса для создания того же сеанса и переменных. Затем, когда я перехожу в папку домена, то есть: 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