|
автор: MoriK (04.04.2006 в 17:23) |
|
| файл login.php методом POST отправляет данные о логине и пароле в файл main.php:
main.php в случае некорректной аутентификации автоматически перебрасывает обратно
на login.php
main.php:
<?PHP
include("authlib.inc");
$id = get_user_id(@$_POST['login'],@$_POST['pass']);
if ($id == -1) {
print header ("Location: login.php");
exit;
}
?>
Результат:
Warning: Cannot modify header information - headers already sent by (output started at z:\home\localhost\www\main.php:2) in z:\home\localhost\www\main.php on line 6
в общем print header ("Location: login.php"); не хочет робить! | |
|
|
|
|
|
|
|
для: MoriK
(04.04.2006 в 17:23)
| | Предупреждение: Невозможно передать данные заголовков - заголовки уже отправлены.
Вывод был начат на строке 2 файла main.php.
Строка 2 - это include? этот файл вообще есть? | |
|
|
|
|
автор: MoriK (04.04.2006 в 17:35) |
|
|
для: Trianon
(04.04.2006 в 17:29)
| | Как переводится я знаю.
<?PHP
print header ("Location: login.php");
exit;
?>
Если оставить этот вариант, таже ошибка.... че делать!?!?!? | |
|
|
|
|
|
|
|
для: MoriK
(04.04.2006 в 17:35)
| | Та же ошибка? Значит еще до первой угловой скобки <?php у Вас в файле лежат какие то символы.
СТОП!
Почему print header?
просто header("Location: login.php");
print - это же вывод данных! | |
|
|
|
|
автор: MoriK (04.04.2006 в 17:45) |
|
|
для: Trianon
(04.04.2006 в 17:36)
| | Тоже самое((
<?PHP
//include("authlib.inc");
//$id = get_user_id(@$_POST['login'],@$_POST['pass']);
//if ($id == -1) {
header ("Location: login.php");
exit;
//}
?>
Warning: Cannot modify header information - headers already sent by (output started at z:\home\localhost\www\main.php:2) in z:\home\localhost\www\main.php on line 6 | |
|
|
|
|
|
|
|
для: MoriK
(04.04.2006 в 17:45)
| | прикрепите файл аттачем. | |
|
|
|
|
|
|
|
для: MoriK
(04.04.2006 в 17:45)
| | смотрите внимательнее, эта классическая ошибка с посылкой заголовком или записью куков. они обязательно должны посылаться до любого вывода в браузер. | |
|
|
|
|
автор: MoriK (05.04.2006 в 07:30) |
|
|
для: Лёлик
(04.04.2006 в 17:54)
| | Ну вы же сами видите что ета команда первая идет в окне....
Может из за того что это окно было методом пост из другой странички открыто, т.е. были переданы вполне конкретные параметры... | |
|
|
|
|
|
|
|
для: MoriK
(05.04.2006 в 07:30)
| | хм... тут действительно не разберёшься без атача. по идее мог вызвать ошибку Инклуд, но поскольку он закоментен то я даж не знаю....
а main.php случаем не вставляется куданибудь Инклудом? | |
|
|
|
|
автор: Морик (05.04.2006 в 08:29) |
|
|
для: 10100100
(05.04.2006 в 07:46)
| | В общем вот сехма:
login.php (запускается первым)
<HTML>
<FORM method='POST' action = 'main.php'>
Логин:   <INPUT TYPE=text name='login'><br>
Пароль: <INPUT TYPE=password name='pass'><br>
<INPUT TYPE=submit name='send' value='Войти'>
</FORM>
</HTML>
main.php
<?PHP
include("authlib.inc");
$id = get_user_id(@$_POST['login'],@$_POST['pass']);
if ($id == -1) {
header ("Location: login.php");
exit;
}
?>
authlib.inc
<?php
$passwd["Ivanov"]["id"] = 1289;
$passwd["Ivanov"]["password"] = "pass1";
$passwd["Petrov"]["id"] = 1423;
$passwd["Petrov"]["password"] = "table";
$passwd["Sidorov"]["id"] = 4598;
$passwd["Sidorov"]["password"] = "nothing";
function get_user_id($login, $password) {
GLOBAL $passwd;
if ($passwd[$login]["password"] == $password) {
return $passwd[$login]["id"];
} else {
return -1;
}
}
function get_correct_login($user_id) {
GLOBAL $passwd;
return in_array($user_id, $passwd);
}
?> | |
|
|
|
|
|
|
|
для: Морик
(05.04.2006 в 08:29)
| | Я, например, ничего такого не вижу. Перед <?php мог затесаться пробел, пустая строка, или вообще невидимый символ вроде нуля. Кроме того, в некоторых случаях в выводимый поток начинает писать сам php. Что показывает просмотр в виде HTML на той странице, где вывыводится headers already sent...? | |
|
|
|
|
|
|
|
для: Морик
(05.04.2006 в 08:29)
| | Проверь еще чтобы в конце фала authlib.inc не было пустой строки или пробела. Т.е. символ > должен быть последним. | |
|
|
|
|
|
|
|
для: to4kaRU
(05.04.2006 в 11:30)
| | Это конечно нужно проверить. На будущее.
Да только сейчас вызов его закомментирован. А ошибка остается.Так что дело не в нем. | |
|
|
|
|
|
|
|
для: Trianon
(05.04.2006 в 11:32)
| | Да, действительно.. только мне сдается, что автор сам что-то немного напутал.. Посмотрите на сообщение об ошибке, в посте, где строка с include закомментирована - там говорится, что вывод начат во второй строке, а ошибка в 6-ой, в то время, как header по коду находится в пятой.. Может, я чего-то не понимаю, но что-то тут не так... | |
|
|
|
|
|
|
|
для: to4kaRU
(05.04.2006 в 11:46)
| | Пустая строка, наверное. Я отметил такую возможность в реплике 10:04 | |
|
|
|
|
автор: MoriK (05.04.2006 в 10:35) |
|
|
для: MoriK
(04.04.2006 в 17:23)
| | я так понял надо забить....(( | |
|
|
|
|
|
|
|
для: MoriK
(05.04.2006 в 10:35)
| | Попробуй " echo "<head><meta http-equiv=\"Refresh\" content=\"1; url=имя_файла_перехода\"></head>"; | |
|
|
|