Невозможно разбить строковый литерал на несколько строк в файлах CMakeLists.txt или в сценариях CMake. Если вы включаете новую строку в строку, в самой строке будет буквальная новая строка.
# Don't do this, it won't work, MYPROJ_VERSION will contain newline characters:
set(MYPROJ_VERSION "${VERSION_MAJOR}.
${VERSION_MINOR}.${VERSION_PATCH}-
${VERSION_EXTRA}")
Однако CMake использует пробелы для разделения аргументов, поэтому вы можете изменить пространство, разделяющее аргумент, на (/ g1)
Вы можете перефразировать эту более длинную строку:
set(MYPROJ_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${VERSION_EXTRA}")
в качестве этих двух более коротких строк:
set(MYPROJ_VERSION
"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${VERSION_EXTRA}")
Они полностью эквивалентны.
Попробуйте:
session_start();
$sessionId = session_id();
зарегистрировал пользователя. Когда пользователь переключится на другой субдомен, он отправит идентификатор сеанса в URL-адрес, подобный этому user.mydomain.com/?id=$sessionId
$sessionId = $_GET['id'];
session_start($sessionId);
Теперь пользователь получит все значения сеанса и останется в системе.
Другой вариант, который работал для меня: это принудительное имя сеанса:
session_name("myWebsite");
session_start();
Я знаю, что это довольно старый, но для дальнейшего расширения предложения @ CTT - мне нужно было добавить файл php.ini в каждый подкаталог (который будет выполнять php-код и требует сеанса) моего поддомена с помощью следующий текст:
suhosin.session.cryptdocroot=Off
suhosin.cookie.cryptdocroot=Off
Надеюсь, это поможет (мне потребовались годы, чтобы понять это).
измените имя сеанса в верхней части файла основных функций, например
session_name('mysession');
, затем используйте следующий код на странице php
session_set_cookie_params(0,"/",".example.com",FALSE,FALSE);
setcookie(session_name(), session_id(),0,"/","example.com");
session_start();
, наконец, измените сеанс по умолчанию имя субдомена и удалить файл cookie по умолчанию в файле основных функций субдомена, например:
/*default session name*/
session_name("mysession");
/*remove the PHPSESSID and default session name from subdomain's cookie*/
setcookie( "mysession", "",1,"/" );
setcookie( "PHPSESSID", "",1,"/" );
, если вы продолжаете использовать свое имя файла cookie как PHPSESSID, просто удалите все функции с помощью
"mysession" string like session_name('mysession'), setcookie( "mysession", "",1,"/" );
затем проверьте существующие файлы cookie вашего браузера, просто удалите все куки домена и поддомена и повторите процесс.
Вот 4 варианта.
Поместите это в свой php.ini:
session.cookie_domain = ".example.com"
Или в свой .htaccess:
php_value session.cookie_domain .example.com
Или как первое в вашем скрипте:
ini_set('session.cookie_domain', '.example.com' );
Или в конфигурации пула php-fpm для вашего сайта:
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');
Это хорошее решение, но вы не можете использовать его во всех ситуациях. Для примера это не сработает, если вы не можете полагаться на несезонные файлы cookie.
Это действительно ДОЛЖНО работать, если вы используете его правильно.
ini_set('session.cookie_domain', '.example.com' );
Например, вам нужно поставить его перед session_start()
, а также во всех файлах, которые вызывают session_start()
У меня была эта проблема, и оказалось, что я использую разные файлы php.ini для двух разных поддоменов. Эти ini-файлы задавали разные переменные session.save_path . По очевидным причинам это должно быть одинаковым для всех поддоменов, которым необходимо обмениваться сеансами.
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');
безопасность будет проклята, если вы так расстроены неполными или плохими ответами, как я, это ваш спаситель. Он просто работает.
да. ini_set
работает. но не забудьте уничтожить все кеши и файлы cookie браузера, чтобы увидеть, как это работает.
xxx.example.com
и yyy.example.com
, ваши php-файлы должны начинаться следующим образом. ini_set('session.cookie_domain', '.example.com' ); session_start();