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