это из-за бесконечных циклов перенаправления страниц. который будет создан вашим кодом.
$p = $_GET['p'];
if ($p == 'foo') {
header("Location: login.php?p=foo"); // This doesn't work
// And if I remove the ?p=foo,
// it redirect to the page but
// the 'foo' function is not called
}
}
каждый раз, когда вы выполняете код на этой странице, условие будет иметь значение true, то есть $_GET['p']
всегда будет содержать значение foo и будет снова и снова перенаправляться на ту же страницу. определить, какой PHP прекратит выполнение вашего скрипта.
Я не могу понять, почему вы хотите перенаправить на ту же страницу снова, даже если условие выполнено. Мое предложение состоит в том, чтобы избежать этого. просто проверьте, хочет ли переменная перенаправить на ту же страницу, если да. затем пропустите страницу, если нет, затем перенаправьте на предпочтительный пункт назначения.
if (array_key_exists("login", $_GET)) {
$p = $_GET['p'];
if ($p == 'foo') {
//sice the variable foo redirects to the same page skip this path and do nothing
} else {
//any other url redirection goes here
header('Location: index.php?bar');
}
}
пока может быть другой путь. приведенный выше код также должен работать, и он позволит избежать попадания в бесконечный цикл перенаправления страниц.