Так что я использую $_GET
захватить URL, чтобы использовать его позже, но когда я использую $_GET
это не будет перенаправлять!
Итак, вот мой пример кода:
URL: http://localhost/project/active.php/?s=ieugfshd&h=qwuyrbcq&i=1
PHP-код:
<?php
include 'init.php';
$s = trim($_GET['s']);
$h = trim($_GET['h']);
$i = trim($_GET['i']);
$q = key_check($s,$h,$i);
if($q == 1)
{
header("location:password_active.php");
exit;
}
if($q == 0)
{
header("location:login_failed.php");
exit;
}
?>
РЕДАКТИРОВАТЬ:
функция key_check ()
function key_check($k1,$k2,$id)
{
$query = mysql_query("select key1 from users where user_id = '$id'");
$key1 =mysql_result($query,0);
$query = mysql_query("select key2 from users where user_id = '$id'");
$key2 =mysql_result($query,0);
$y=strcmp($k1,$key1);
$z=strcmp($k2,$key2);
if($y || $z == 0)
{
return 1;
}
else
{
return 0;
}
}
Теперь, когда я пытаюсь это сделать, я получил «1», но я получаю
Эта веб-страница имеет цикл перенаправления
Но мой password_active.php
не имеет никаких перенаправлений. Это просто HTML-страница.
URL, который вы используете для доступа к вашему скрипту:
http://localhost/project/active.php/?s=ieugfshd&h=qwuyrbcq&i=1
Это загружает active.php
, который выполняет свою роль, а затем пытается отправить следующий заголовок:
header("location:password_active.php");
Браузер получает этот заголовок и пытается разрешить этот относительный URL, добавив password_active.php
после последней косой черты перед строкой запроса (что ?s=xxx
строка).
Итак, ваш браузер загружается:
http://localhost/project/active.php/password_active.php?s=ieugfshd&h=qwuyrbcq&i=1
Это загружает active.php
снова, который снова выполняет свою роль, а затем снова отправляет тот же заголовок и загружает эту страницу:
http://localhost/project/active.php/password_active.php?s=ieugfshd&h=qwuyrbcq&i=1
Снова. И опять. И опять. После нескольких попыток ваш браузер понимает, что что-то идет не так, и останавливается.
Вы должны использовать абсолютный URL в заголовке HTTP:
header("Location: /project/password_active.php");
Также обратите внимание, как должны быть написаны HTTP-заголовки в соответствии со стандартом.
Случайные заметки:
$s
а также $h
оба пароля. Вам следует хэш их, и не передавая их через URL.if($y || $z == 0)
вряд ли будет работать, как вы думаете, так как он будет оцениваться как if y or not z
в псевдокоде, в то время как вы, возможно, хотели if not y and not z
для проверки пароля.Кроме того, хорошая точка для звонка exit()
после Location
заголовок. Вы никогда не должны забывать об этом, так как это очень важно и может вызвать некоторые проблемы в ваших сценариях, если вы их забудете.
Попробуйте удалить / после file.php. Как index.php? I = sa