2010-07-13 4 views
2

все! У меня вопрос о сеансах, надеюсь, кто-то может мне помочь. У меня настроен тестовый сервер apache, который использует виртуальные хосты для http и https. Я поставил следующие файлы в моем HTTPS и это работает:сессия вопрос с виртуальным хостом

mytest.php:

// this starts the session 
session_start(); 
// this sets variables in the session 
$_SESSION['color']='red'; 
$_SESSION['size'] ='small'; 
$_SESSION['shape']='round'; 
echo "Done"; 

mytest2.php:

// this starts the session 
session_start(); 
// echo variable from the session, we set this on our other page 
echo "Our color value is ".$_SESSION['color']; 
echo "Our size value is ".$_SESSION['size']; 
echo "Our shape value is ".$_SESSION['shape']; 

Но это не работает, когда я осматриваю копию в HTTP.

phpinfo() в обоих одинаковы:

session 
Session Support enabled 
Registered save handlers files user sqlite 
Registered serializer handlers php php_binary wddx 

Directive Local Value Master Value 
session.auto_start Off Off 
session.bug_compat_42 On On 
session.bug_compat_warn On On 
session.cache_expire 180 180 
session.cache_limiter nocache nocache 
session.cookie_domain no value no value 
session.cookie_httponly Off Off 
session.cookie_lifetime 0 0 
session.cookie_path// 
session.cookie_secure On On 
session.entropy_file no value no value 
session.entropy_length 0 0 
session.gc_divisor 100 100 
session.gc_maxlifetime 1440 1440 
session.gc_probability 1 1 
session.hash_bits_per_character 4 4 
session.hash_function 0 0 
session.name PHPSESSID PHPSESSID 
session.referer_check no value no value 
session.save_handler files files 
session.save_path /tmp /tmp 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies Off Off 
session.use_trans_sid 0 1 
+0

«это не работает, когда я просматриваю копию в http». Можете ли вы быть более конкретным? Являются ли эти два сценария в разных доменах? –

+0

№. Я использую http://192.168.1.101/mytest.php и http://192.168.1.101/mytest2.php и https://192.168.1.101/mytest.php и https://192.168.1.101/mytest2. php – Lucas

+1

Вы собираетесь с http на https-соединение? Попробуйте распечатать sessionid(), чтобы узнать, изменяются ли идентификаторы сеансов при переключении страниц ... –

ответ

0

Проблема заключается в следующем:

session.cookie_secure On On 

Если куки куки сессии безопасным, он будет отправлен только через HTTPS с помощью клиент.

Изменить что INI установки или вызвать session_set_cookie_params до session_start и указать там не требуется безопасное печенье, например:

session_set_cookie_params(0, '/', "example.com", false); 
+0

это работало. Спасибо!! – Lucas

1

Как уже было сказано, это, вероятно, потому, что вы используете безопасный печенье.

Обратите внимание, что если вы не используете безопасные куки-файлы, вам необходимо быть осторожными в логике вашего приложения, чтобы обеспечить его безопасность. Это нормально, чтобы перейти от HTTPS к HTTP, но тогда вы должны отказаться от сеанса HTTPS. В противном случае злоумышленник может получить cookie из HTTP-соединения и использовать его через соединение HTTPS, делая вид, что аутентифицирован как законный пользователь.

+0

+1 для обеспечения безопасности. Ты подтолкнул меня на это! – Timothy

Смежные вопросы