Мой хост (один) не позволяет мне изменять файл php.ini, и я не могу его найти (у меня, вероятно, даже нет доступа для чтения). Когда я пытаюсь заставить переменные сеанса проходить через поддомены, я не могу, поскольку файл cookie сеанса установлен только для основного домена (example.com). Я бы хотел, чтобы он был настроен на .example.com
Я попытался настроить файл php ini, чтобы разрешить это.
ini_set('session.cookie_domain', '.example.com');
Это не сработало, потому что мне не разрешено запускать функцию ini_set(). Я также попытался найти файл php.ini, но не смог найти его в моем FTP-клиенте. Используя phpinfo(), я обнаружил, что он находится в /etc/php, но у меня нет доступа к этому каталогу.
Я ожидаю, что это сработает, но очевидно, что это не так. Проверяя консоль разработчика в Firefox, путь к домену для файла cookie PHPSESSID по-прежнему example.com, а не .example.com.
Есть ли какое-либо обходное решение, кроме установки переменных сеанса в правильном поддомене с самого начала?






Вы можете установить переменную ini таким образом, прежде чем session_start ()
ini_set('session.cookie_domain', '.example.com' );
или для этого вопроса вы можете установить в файле htaccess вот так:
php_value session.cookie_domain .example.com
и из этого отвечать:
if (isset($_COOKIE['session_id']))
session_id($_COOKIE['session_id']);
Zend_Session::start(); //or session_start();
if (!isset($_COOKIE['session_id']))
setcookie('session_id', session_id(), 0, '/', '.yourdomain.com');
в конце, если какой-либо из этих способов не работает, вы можете изменить имя_сеанса
session_name('example_name');
затем используйте следующий код на странице php
session_set_cookie_params(0,"/",".example.com",FALSE,FALSE);
setcookie(session_name(), session_id(),0,"/","example.com");
session_start();
для получения дополнительной информации см. этот вопрос
Ясно, что вы не читали мой пост. Мне не разрешено запускать функцию ini_set. Метод .htaccess тоже не работает.
Параметры сессионных файлов cookie также можно установить с помощью session_set_cookie_params (). Домен - третий аргумент.
Это не лучшее решение!
Что касается вашей ситуации, и если вы не можете установить ее с помощью .htaccess, вы можете сделать перенаправление на свой субдомен (-а), создать сеанс и перенаправить обратно на URL-адрес, где вы хотите быть,
БЫВШИЙ : example.com -> любое действие -> перейти на sub1.example.com -> создать сеанс -> перейти на sub2.example.com -> создать сеанс -> ... -> перейти на example.com
Или : Вы также можете создать пиксельное изображение со ссылками на ваши поддомены, если не хотите использовать перенаправление
Чтобы эти два решения работали, вам необходимо настроить сеансы отдельно для каждого поддомена.
Никакая разумная служба виртуального хостинга не позволяет клиентам возиться с общесистемными настройками PHP, но это почти всегда излишне, учитывая, что вы можете использовать
.htaccess,.user.iniилиini_set()для большинства целей. Однако, если самini_set()был забанен (это то, что вы имеете в виду, не так ли?), Это явный признак того, что они не хотят, чтобы вы что-либо настраивали. В таком случае поиск способа может привести к удалению аккаунта из-за нарушения условий использования. Наверное, это даже не многосайтовый план. Всего два цента.