34require_once dirname(__DIR__) .
'/dbxSession.class.php';
36$fail =
static function (
string $message,
int $code): void {
37 fwrite(STDERR,
"FAIL: $message\n");
46dbx()->browser->_robot = 1;
47if (!
$session->is_ephemeral_anonymous_session_request(
false)) {
48 $fail(
'Ein anonymer Robot ohne Session-Cookie wird nicht als fluechtig erkannt.', 1);
51dbx()->browser->_robot = 0;
52if (
$session->is_ephemeral_anonymous_session_request(
false)) {
53 $fail(
'Ein normaler Gast ausserhalb des Full-Page-Caches wird verworfen.', 2);
55if (!
$session->is_ephemeral_anonymous_session_request(
true)) {
56 $fail(
'Ein cookie-loser Gast auf einem sicheren Full-Page-Cache-Hit bleibt persistent.', 3);
59$_COOKIE[session_name()] =
'existing-session-id';
60session_id(
'existing-session-id');
61if (
$session->is_ephemeral_anonymous_session_request(
true)) {
62 $fail(
'Eine vorhandene Cookie-Session wird auf einem Cache-Hit verworfen.', 4);
64$_COOKIE[session_name()] =
'invalid-or-stale-session-id';
65if (!
$session->is_ephemeral_anonymous_session_request(
true)) {
66 $fail(
'Ein ungueltiger Session-Cookie umgeht die fluechtige Cache-Hit-Behandlung.', 5);
71dbx()->browser->_robot = 1;
73if (
$session->is_ephemeral_anonymous_session_request(
false)) {
74 $fail(
'Ein POST-Request wird als fluechtiger Robot-Read behandelt.', 6);
79if (
$session->is_ephemeral_anonymous_session_request(
false)) {
80 $fail(
'Eine authentifizierte Session wird als fluechtig behandelt.', 7);
84dbx()->browser->_robot = 1;
85$tmp = rtrim(sys_get_temp_dir(),
'/\\') . DIRECTORY_SEPARATOR
86 .
'dbx-session-ephemeral-' . bin2hex(random_bytes(6));
87if (!mkdir(
$tmp, 0700,
true) && !is_dir(
$tmp)) {
88 $fail(
'Temporaeres Session-Testverzeichnis konnte nicht erstellt werden.', 8);
91session_save_path(
$tmp);
92session_id(
'dbxrobotsessiontest20260724');
93if (!session_start()) {
94 $fail(
'PHP-Testsession konnte nicht gestartet werden.', 9);
98if (!
$session->discard_ephemeral_anonymous_session(
false)) {
99 $fail(
'Die fluechtige Robot-Session wurde nicht verworfen.', 10);
101if (session_status() === PHP_SESSION_ACTIVE) {
102 $fail(
'Die fluechtige PHP-Session ist nach dem Verwerfen noch aktiv.', 11);
105$files = glob(
$tmp . DIRECTORY_SEPARATOR .
'sess_*') ?: array();
111 $fail(
'Die fluechtige PHP-Sessiondatei ist liegen geblieben.', 12);