PHP

php. перенаправить на другую страницу

здравствуйте! есть код:
<?php
if ($_POST['next'] == true){
$file = "usr/".$_POST['id-tb']."/data/real.sqr";
if (file_exists($file)) {
$next_auto = file_get_contents($file);
if ($_POST['psw-tb'] == $next_auto){
//переход по ссылке на страницу пользователя
echo "Успешная авторизация! ";
}
else {
echo "Не верный ID или Пароль! ";
}
} else {
echo "Не верный ID или Пароль! ";
}
}
?>
необходимо, чтобы после успешной авторизации он меня перенаправлял на страницу пользователя, у которого брал пароль. как осуществить переход по ссылке?
заранее спасибо!!!!
P.S. header не поможет - мой скрипт не может располагаться до заголовка
В твоём случае можно обыграть ситуацию таким образом
<?php
function redirect($url = null, $is_301 = true)
{
if ($is_301) {
header("HTTP/1.1 301 Moved Permanently");
}
if (is_null($url)) {
$url = $_SERVER['REQUEST_URI'];
}
header("Location: $url");
exit;
}

if ($_POST['next'] == true) {
$file = "usr/" . $_POST['id-tb'] . "/data/real.sqr";
if (file_exists($file)) {
$next_auto = file_get_contents($file);
if ($_POST['psw-tb'] == $next_auto) {
// сохраняем сообщение для пользователя в cookie на срок хранения 1 минуту
setcookie("msg_for_user", "Успешная авторизация! ", time() + 60);
//переход по ссылке на страницу пользователя
redirect("your_url");
} else {
echo "Не верный ID или Пароль! ";
}
} else {
echo "Не верный ID или Пароль! ";
}
}

?>

А на странице пользователя достаём сообщение из cookie
<?php
if (isset($_COOKIE['msg_for_user'])) {
echo $_COOKIE['msg_for_user'];
// удаляем из cookie сообщение, чтобы при обновлении страницы не получить поторное сообщение
setcookie("msg_for_user", "", time() - 1);
}
?>

Но это только выход из сложившейся ситуации.
Для того, чтобы избежать подобных косяков нужно проектировать приложение таким образом, чтобы echo вызывалось только один раз, в самом конце скрипта.
Например так:
<?php
$myArrayForPrint = array();

// какие-либо действия

$myVarForPrint[] = "Выводим что-то. ";

// ещё какие-то действия

$myVarForPrint[] = "Выводим что-то ещё.";
if ($something) {
$myVarForPrint[] = "Если верно";
} else {
$myVarForPrint[] = "Если не верно";
}

// ...а в конце скрипта делаешь
echo implode(PHP_EOL, $myVarForPrint);

?>
Это для наглядности, чтобы ты проникся идеей, а вообще для этих целей используют буферизацию вывода http://php.net/manual/ru/book.outcontrol.php
Неизвестно Неизвестно
Неизвестно Неизвестно
3 401
Лучший ответ