与虚拟主机的会话问题

时间:2010-07-13 17:19:03

标签: php session https

大家好!我有一个关于会议的问题希望有人可以帮助我。我有一个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

2 个答案:

答案 0 :(得分:1)

正如已经说过的那样,可能是因为你正在使用安全的cookie。

请注意,如果您没有使用安全cookie,则需要注意应用程序的逻辑以强制执行其安全性。从HTTPS转到HTTP是可以的,但是,您应该丢弃HTTPS会话。否则,攻击者可以从HTTP连接获取cookie并通过HTTPS连接使用它,假装被认证为合法用户。

答案 1 :(得分:0)

问题在于:

session.cookie_secure On On

如果cookie是会话cookie安全的,它只能由客户端通过https发送。

更改该设置或在session_start之前调用session_set_cookie_params并指定您不需要安全Cookie,例如:

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