Hi! This is a quite weird and annoying problem, which is reproduced with the script below.
- Say we have two pages:
script.php
andscript.php?second
. - Page 1 creates some database entries and redirects to page 2.
- On page 2, the user is presented with an editor for said entries.
If page 1 for some reason crashes on the first try, and prints some error message, a strange thing will happend. If we refresh page 1 (and this time it redirects fine), every consecutive refresh (of page 2) will actually refresh page 1 and again redirect to page 2.
In the above example this would create new database entries for every refresh, which is the problem I want to circumvent by redirecting to page 2.
<?php
header('Content-type: text/plain');
session_start();
if (!isset($_GET['second'])) {
$_SESSION['counter'] = isset($_SESSION['counter']) ? $_SESSION['counter'] + 1 : 1;
/*$_SESSION['counter'] = 0;
exit('asd');*/
header("Location: {$_SERVER['PHP_SELF']}?second", true, 303);
exit;
}
echo "Counter: {$_SESSION['counter']}";
To try the above complete script, first run it with the commented code intact, then by enabling the commented code.
I've tried 301, 302 and 303 redirections. Does someone know why this is happening?