Files
youlegames/codes/agent/game/api/tests/unit/test_session_persistence.php
2026-03-15 01:27:05 +08:00

103 lines
4.4 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* 测试session跨请求持久化功能
* 用于排查微信登录中session丢失问题
*/
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo "<!DOCTYPE html><html><head><meta charset='UTF-8'><title>Session持久化测试</title></head><body>";
echo "<h1>Session持久化测试</h1>";
// 启动session
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
echo "<h2>当前Session信息</h2>";
echo "<p>Session ID: " . session_id() . "</p>";
echo "<p>Session 名称: " . session_name() . "</p>";
echo "<p>Session 状态: " . session_status() . "</p>";
// 检查是否有测试数据
if (isset($_GET['action'])) {
switch ($_GET['action']) {
case 'set':
// 设置测试数据
$_SESSION['test_time'] = time();
$_SESSION['test_data'] = 'Test session data - ' . date('Y-m-d H:i:s');
$_SESSION['test_counter'] = isset($_SESSION['test_counter']) ? $_SESSION['test_counter'] + 1 : 1;
echo "<p style='color: green;'>✅ Session数据已设置</p>";
break;
case 'check':
// 检查测试数据
if (isset($_SESSION['test_time'])) {
echo "<p style='color: green;'>✅ Session数据存在</p>";
echo "<p>设置时间: " . date('Y-m-d H:i:s', $_SESSION['test_time']) . "</p>";
echo "<p>测试数据: " . $_SESSION['test_data'] . "</p>";
echo "<p>访问计数: " . $_SESSION['test_counter'] . "</p>";
} else {
echo "<p style='color: red;'>❌ Session数据不存在</p>";
}
break;
case 'clear':
// 清除测试数据
unset($_SESSION['test_time']);
unset($_SESSION['test_data']);
unset($_SESSION['test_counter']);
echo "<p style='color: orange;'>🗑️ Session数据已清除</p>";
break;
}
}
echo "<h2>当前Session内容</h2>";
echo "<pre>" . print_r($_SESSION, true) . "</pre>";
echo "<h2>PHP Session配置</h2>";
echo "<table border='1' cellpadding='5'>";
echo "<tr><th>配置项</th><th>值</th></tr>";
echo "<tr><td>session.save_handler</td><td>" . ini_get('session.save_handler') . "</td></tr>";
echo "<tr><td>session.save_path</td><td>" . ini_get('session.save_path') . "</td></tr>";
echo "<tr><td>session.cookie_lifetime</td><td>" . ini_get('session.cookie_lifetime') . "</td></tr>";
echo "<tr><td>session.cookie_path</td><td>" . ini_get('session.cookie_path') . "</td></tr>";
echo "<tr><td>session.cookie_domain</td><td>" . ini_get('session.cookie_domain') . "</td></tr>";
echo "<tr><td>session.cookie_secure</td><td>" . (ini_get('session.cookie_secure') ? 'Yes' : 'No') . "</td></tr>";
echo "<tr><td>session.cookie_httponly</td><td>" . (ini_get('session.cookie_httponly') ? 'Yes' : 'No') . "</td></tr>";
echo "<tr><td>session.use_cookies</td><td>" . (ini_get('session.use_cookies') ? 'Yes' : 'No') . "</td></tr>";
echo "<tr><td>session.use_only_cookies</td><td>" . (ini_get('session.use_only_cookies') ? 'Yes' : 'No') . "</td></tr>";
echo "</table>";
echo "<h2>HTTP头信息</h2>";
echo "<pre>";
foreach ($_SERVER as $key => $value) {
if (strpos($key, 'HTTP_') === 0) {
echo "$key: $value\n";
}
}
echo "</pre>";
echo "<h2>Cookie信息</h2>";
echo "<pre>" . print_r($_COOKIE, true) . "</pre>";
echo "<h2>操作</h2>";
echo "<p>";
echo "<a href='?action=set' style='margin-right: 10px; padding: 5px 10px; background: #007cba; color: white; text-decoration: none;'>设置Session数据</a>";
echo "<a href='?action=check' style='margin-right: 10px; padding: 5px 10px; background: #28a745; color: white; text-decoration: none;'>检查Session数据</a>";
echo "<a href='?action=clear' style='margin-right: 10px; padding: 5px 10px; background: #dc3545; color: white; text-decoration: none;'>清除Session数据</a>";
echo "<a href='?' style='margin-right: 10px; padding: 5px 10px; background: #6c757d; color: white; text-decoration: none;'>刷新页面</a>";
echo "</p>";
echo "<h2>跨请求测试</h2>";
echo "<p>1. 点击「设置Session数据」</p>";
echo "<p>2. 在新标签页中打开此页面</p>";
echo "<p>3. 点击「检查Session数据」看是否能读取到刚才设置的数据</p>";
echo "<h2>微信登录相关测试</h2>";
echo "<p><a href='debug_weixin.php' target='_blank'>查看微信登录调试信息</a></p>";
echo "</body></html>";
?>