|
|
|
| Я попробовал сделать авторизацию как в книге "Практика...", второе издание. Тестировал в Денвере. Пишет ошибку
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\mycms.ru\www\adminpage\index.php:1) in Z:\home\mycms.ru\www\adminpage\utils\security.php on line 6
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\mycms.ru\www\adminpage\index.php:1) in Z:\home\mycms.ru\www\adminpage\utils\security.php on line 7
|
Файл \adminpage\index.php начинается так: require_once("utils/security.php");
Файл security.php точно такой же, как в книге security_mod.php
Шестая и седьмая строчки такие:
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
|
А вообще начало такое:
<?php
require_once("config.php");
// Если пользователь не авторизовался - авторизуемся
if(!isset($_SERVER['PHP_AUTH_USER']) || (!empty($_GET['logout']) && $_SERVER['PHP_AUTH_USER'] == $_GET['logout']))
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
|
Не могу понять, в чём ошибка. | |
|
|
|
|
|
|
|
для: ildarufa
(26.11.2009 в 20:13)
| | у вас может пробел стоит перед <?php (причем в файле index.php)
раз первая строчка то наверняка проблема в этом
А так суть ошибки в том что заголовки ушли раньше(на 1 строке index.php) чем вы саморучно их отправляете | |
|
|
|
|
|
|
|
для: tvv123456
(26.11.2009 в 21:09)
| | Не нашёл пробела. | |
|
|
|
|
|
|
|
для: ildarufa
(26.11.2009 в 22:28)
| | ищи в config.php пробелы, причём как до <?php так и после ?> | |
|
|
|
|
|
|
|
для: ildarufa
(26.11.2009 в 22:28)
| | Вот тут же написано:
output started at Z:\home\mycms.ru\www\adminpage\index.php:1
Это редактор настроен с БОМ. Три байта все дело портят. | |
|
|
|
|
|
|
|
для: ildarufa
(26.11.2009 в 22:28)
| | >Не нашёл пробела.
ну смотрите что у вас в 1-ой строке файла index.php заголовки уходят именно с этой строки | |
|
|
|
|
|
|
|
для: tvv123456
(27.11.2009 в 00:58)
| | да не что в первой строчке, а что в первом байте.
И если там нечто отличное от 0x3C - дальше можно не писать. | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2009 в 01:09)
| | Обычно все ищут проблему в первой строчке (пробел перед тегом), я столкнулся с тем, что у меня проблема с хедерами была, когда я подключил файл, у которого пробел был ПОСЛЕ последнего тега ?> | |
|
|
|
|
|
|
|
для: GeorgeIV
(27.11.2009 в 09:59)
| | и она тоже диагностировалась как output started at file:1? | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2009 в 12:13)
| | А РЕШЕНИЕ ПРОБЛЕМЫ КАКОЕ? я у себя удалил когда-то полностью 1-ую строку и заново прописал открытие рнр(вроде больше проблем не было) | |
|
|
|
|
|
|
|
для: tvv123456
(27.11.2009 в 12:24)
| | я это (27.11.2009 в 01:09) - Вам написал?
Решение любой проблемы начинается с её (проблемы) понимания. | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2009 в 12:28)
| | я со своим опытом в 2 месяца не понял :) думаю кто-то еще не поймет
(про 2 месяца это насмешка над собой(чтоб никто не обиделся)) | |
|
|
|
|
|
|
|
для: tvv123456
(27.11.2009 в 12:31)
| | Что я непонятно написал?
Первым байтом файла должен быть байт с кодом символа < (начало <?php)
Последним байтом (подключаемого) файла должен быть байт с кодом символа > (хвост ?>)
Что непонятно? | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2009 в 13:54)
| | Не так то конечно понятно просто 0x3C - не очень было понятно :), но вообщем суть я правильно автору указал, первый символ в строке не <, а скорее всего пробел, но автор его не нашел как и я в свое время не смог найти(пришлось всю строку удалять)
Думаю остальные обсуждения бесмыслены | |
|
|
|
|
|
|
|
для: tvv123456
(27.11.2009 в 13:57)
| | Суть у нас как раз кардинально отличается.
Вы говорите про первый символ первой строки, а я про первый байт.
В зависимости от субъективной трактовки они запросто могут не соответствовать друг другу.
Отсюда следует еще и та простая мысль, что первое движение при анализе проблемы headers already sent - движение в сторону hex-viewer'а файлов.
Текстовый редактор покажет всякое разное. Шестнадцатеричный просмотрщик по F3/F4 в FAR или т.п. врать не станет. | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2009 в 14:02)
| | Действительно дело было в невидимом пробеле. Я просто поменял кодировку (сделал без BOM) и всё встало на свои места. Спасибо большое всем за помощь! | |
|
|
|