Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ошибка файла авторизации

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Файл авторизации выдаёт ошибку
ren
Отправлено: 05 Октября, 2009 - 12:20:07
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Всем привет.

Подскажите как решить проблему.
файл авторизации который я подключаю к индексу выдаёт такую ошибку:

Warning: Cannot modify header information - headers already sent by
(output started at Z:\...\blocks\bd.php:6) in Z:\...\admin\lock.php on line 6

Warning: Cannot modify header information - headers already sent by
(output started at Z:\...\blocks\bd.php:6) in Z:\...\admin\lock.php on line 7

А вот начало кода исполнительного файла до 11 строки:
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. include('blocks/bd.php');  /*соответственно подключение к БД mysql*/
  3. if (!isset($_SERVER["PHP_AUTH_USER"]))
  4.  
  5. {
  6.         Header ('WWW-Authenticate: Basic realm="Admin Page"');
  7.         Header ('HTTP/1.0 401 Unauthorized');
  8.         exit();
  9. }
  10.  
  11. else {

(Добавление)
Забыл написать использую Денвер, может это играет роль, хотя врядли.

(Отредактировано автором: 05 Октября, 2009 - 12:21:28)

 
 Top
-=1100=-
Отправлено: 05 Октября, 2009 - 16:24:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 156
Дата рег-ции: Май 2007  
Откуда: Город Святого Петра


Помог: 0 раз(а)

[+]


А можно код
blocks/bd.php?


-----
INSPIRON |6400
 
 Top
Champion Супермодератор
Отправлено: 05 Октября, 2009 - 16:30:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Информация к размышлению:
Заголовки не могут быть посланы, если раньше они уже были посланы. Они посылаются автоматически, например, при выводе в браузер. Или если пробел затесался перед <?php.
(Добавление)
Написано, что они шлются файлом db.php. Смотри что там.
 
 Top
ren
Отправлено: 06 Октября, 2009 - 12:29:30
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Без проблем, вот файл bd.php

CODE (text):
скопировать код в буфер обмена
  1. <?
  2. $db = mysql_connect ('localhost','root','111111');
  3. mysql_select_db ('stroy_ka',$db);
  4. ?>


Вот собственно и весь код этого файла.

(Отредактировано автором: 06 Октября, 2009 - 12:30:11)

 
 Top
Champion Супермодератор
Отправлено: 06 Октября, 2009 - 12:34:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




1 - соединение нормально проходит?
2 - у тебя тэг <? обрабатывается php или просто в браузер выводится как етьс?
 
 Top
ren
Отправлено: 06 Октября, 2009 - 13:47:19
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




bd.php я использовал в других файлах для подключения к БД, чтобы 100 раз
не прописывать одно и то же. Работал он всегда без проблем.

Структура такая: к файлу index.php нежен доступ через пароль, поэтому я
прописывают так:

В начала файла index.php вставляю файл входа через пароль:
CODE (text):
скопировать код в буфер обмена
  1. <?php include ('lock.php'); ?>


Вот начало кода файла lock.php:
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. include ('blocks/bd.php');  /* Опять же подключение к БД */
  3.  
  4. if (!isset($_SERVER["PHP_AUTH_USER"]))
  5. {
  6.         Header ('WWW-Authenticate: Basic realm="Admin Page"');
  7.         Header ('HTTP/1.0 401 Unauthorized');
  8.         exit();
  9. }


Ну и повторюсь, в очередной раз, код файла bd.php
CODE (text):
скопировать код в буфер обмена
  1. <?
  2. $db = mysql_connect ('localhost','root','111111');
  3. mysql_select_db ('stroy_ka',$db);
  4. ?>


Ничего сложного, по идее должно всё работать без проблем.
Может какую-то синтаксическую ошибку допускаю, не знаю, опыта
в программировании вообще нету.
(Добавление)
Интересно получается, вместо функции include (blocks/bd.php) прописываю
содержимое этого файла и всё начинает работать Не понял
Как это объяснить??
 
 Top
Champion Супермодератор
Отправлено: 06 Октября, 2009 - 13:56:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




И к чему ты это всё написал?
ren пишет:
Интересно получается, вместо функции include (blocks/bd.php) прописываю
содержимое этого файла и всё начинает работать Не понял
Как это объяснить??
Во-первых, ты не ответил на вопрос
Champion пишет:
2 - у тебя тэг <? обрабатывается php или просто в браузер выводится как етьс?
Во-вторых ты проигнорировал мой самый первый пост.

Если на про <? ответ положительный, значит, перед <? в файле bd.php есть пробел или BOM. Или после ?> что-то есть.
 
 Top
Phantik
Отправлено: 06 Октября, 2009 - 14:02:55
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Ошибка означает, что пытаешься слать заголовки, после того как начал вывод в браузер.
Если работаешь в NotePad++ в кодировке UTF проверь в меню что бы было выставлено UTF(без БОМ).
Проверь так же наличие пробелов или табуляций до <? и после ?> (Хотя я точно не уверен пробелы считаются выводом или нет, не могу сейчас проверить).

Ну и, как уже сказали, проверь включена ли у тебя форма записи <??> или надо писать все-таки <?php ?> как у тебя написано в главном файле.

(Отредактировано автором: 06 Октября, 2009 - 14:05:52)

 
 Top
ren
Отправлено: 06 Октября, 2009 - 14:09:33
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Champion я твой пост НЕ проигнорировал, я его просто не понялУлыбка)
Я же говорю я совсем новичок.
На счёт заголовков ещё толком не разобрался а в кодировке так и подавно.
Сайт пишу в Dreamweaver
Что означает кодировка UTF тоже не в курсе, сейчас тоже буду разбираться.

И где включать форму записи <??>?

Благодарю за ответы и терпениеУлыбка)
 
 Top
Champion Супермодератор
Отправлено: 06 Октября, 2009 - 14:12:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




ren пишет:
Champion я твой пост НЕ проигнорировал, я его просто не понял)
И поэтому проигнорировал. Если не понял, надо переспросить.
ren пишет:
И где включать форму записи <??>?
в файле php.ini short_open_tag
 
 Top
ren
Отправлено: 06 Октября, 2009 - 14:16:23
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Да убрал пробелы в bd.php после тега ?> и всё заработало.

На счёт файла php.ini - это файла настроек для сайта?
Я его вообще не создавал, он обязательно нужен?

Кстати на счёт заголовков, что посоветуете почитать.
(Добавление)
Теги <??> работают, только что првоерил.
 
 Top
EuGen Администратор
Отправлено: 06 Октября, 2009 - 14:27:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




ren пишет:
На счёт файла php.ini - это файла настроек для сайта?

Настроечный файл для PHP, нужен обязательно


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Phantik
Отправлено: 06 Октября, 2009 - 14:38:43
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




php.ini это настройки самого модуля PHP. Ты его не создавал, но можешь менять в нем настройки.

Насчет заголовков читай про протокол HTTP - то как браузер собственно общается с сервером. Кстати функция header(), которую ты используешь у себя в коде и занимается отправкой заголовков.

А особенность HTTP протокола состоит в том что перед тем как сервер посылает клиенту саму страницу или некую другую информацию(например картинку). Клиент и сервер обмениваются некой служебной информацией - которая состоит из строки запроса, строки ответа и заголовков. После того как сервер с клиентом обменялись заголовками, начинается передача собственно самой страницы. И в этот момент уже нельзя посылать заголовки, иначе получишь ошибку, которую ты и получил.

Поэтому функции header(), session_start(), set_cookie() нельзя вставлять после вывода в браузер. т.е.


Правильно:
<?php header("...."); ?>
<html>
<body>
........
</body>
</html>

Неправильно:
<html>
<body>
<?php header("...."); ?>
</body>
</html>

Неправильно:
&nbsp<?php header("...."); ?> // Тут стоит пробел перед <
<html>
<body>
........
</body>
</html>

(Отредактировано автором: 06 Октября, 2009 - 14:39:45)

 
 Top
EuGen Администратор
Отправлено: 06 Октября, 2009 - 14:51:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




поставьте кстати себе liveHTTPHeaders, если у Вас Firefox - полезно будет


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
ren
Отправлено: 06 Октября, 2009 - 15:10:04
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Phantik спасибо, доступно и понятно разъяснил.

Осталось разобраться с php.ini
Так всё-таки почему я его должен обязательно создавать если всё и так работает?Улыбка)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB