|
|
|
| Здарова народ
Извитите за названию темы
Чтобы зайти в админскую часть сайта изпользую этот скрипт
<?php
if (!isset($_SERVER['PHP_AUTH_USER']))
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
else {
if (!get_magic_quotes_gpc()) {
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
}
$query = "SELECT pass FROM system_lock WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
$lst = @mysql_query($query);
if (!$lst)
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
if (mysql_num_rows($lst) == 0)
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
$pass = @mysql_fetch_array($lst);
if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
}
?>
|
Когда сайт был на локалном компютере всё работал никакую ощибку не выдовал.
Вот только повесил в интерене выдаёт ощибку:
Warning: Cannot modify header information - headers already sent by (output started at /home/content/14/9917914/html/admin/index.php:1) in /home/content/14/9917914/html/admin/config/lock.php on line 8
|
Я начинаюши программист. Скажите пожалуйста в чом проблема?
Спасибо | |
|
|
|
|
|
|
|
для: Jovidon
(02.10.2012 в 12:17)
| | Вы до этого кода уже выдали клиенту что-то, поэтому заголовки не могут быть отправлены, так устроен протокол http. Возможно что перед <?php у вас есть пробел - распространенная ошибка начинающих. | |
|
|
|
|
|
|
|
для: Lotanaen
(02.10.2012 в 13:28)
| | Никоких пробелов даже это тоже ощибку выдаёт
<?php
////////////////////////////////////////////////////////////
// 2005-2008 (C) Кузнецов М.В., Симдянов И.В.
// PHP. Практика создания Web-сайтов
// IT-студия SoftTime
// http://www.softtime.ru - портал по Web-программированию
// http://www.softtime.biz - коммерческие услуги
// http://www.softtime.mobi - мобильные проекты
// http://www.softtime.org - некоммерческие проекты
////////////////////////////////////////////////////////////
// Выставляем уровень обработки ошибок
// (http://www.softtime.ru/info/articlephp.php?id_article=23)
error_reporting(E_ALL & ~E_NOTICE);
// Если пользователь не авторизовался - авторизуемся
if(!isset($_SERVER['PHP_AUTH_USER']) || (!empty($_GET['logout']) && $_SERVER['PHP_AUTH_USER'] == $_GET['logout']))
{
Header("WWW-Authenticate: Basic realm=\"Control Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
// Утюжим переменные $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'],
// чтобы мышь не проскочила
if (!get_magic_quotes_gpc())
{
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
}
$query = "SELECT pass FROM system_lock WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
$lst = @mysql_query($query);
// Если ошибка в SQL-запросе - выдаём окно
if(!$lst)
{
Header("WWW-Authenticate: Basic realm=\"Control Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
// Если такого пользователя нет - выдаём окно
if(mysql_num_rows($lst) == 0)
{
Header("WWW-Authenticate: Basic realm=\"Control Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
// Если все проверки пройдены, сравниваем хэши паролей
$account = @mysql_fetch_array($lst);
if(md5($_SERVER['PHP_AUTH_PW']) != $account['pass'])
{
Header("WWW-Authenticate: Basic realm=\"Control Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
}
?>
|
Warning: Cannot modify header information - headers already sent by (output started at /home/content/14/9917914/html/admin/index.php:1) in /home/content/14/9917914/html/admin/config/lock.php on line 18
Warning: Cannot modify header information - headers already sent by (output started at /home/content/14/9917914/html/admin/index.php:1) in /home/content/14/9917914/html/admin/config/lock.php on line 19
|
| |
|
|
|
|
|
|
|
для: Jovidon
(02.10.2012 в 13:54)
| | Вы не просто читайте сообщение об ошибке, а анализируйте их, так как в них указано в каких строках уже был вывод. | |
|
|
|
|
|
|
|
для: confirm
(02.10.2012 в 14:00)
| | но как?
на локалном компе не выдовал ощибок | |
|
|
|
|
|
|
|
для: Jovidon
(02.10.2012 в 17:03)
| | Проверяйте условия свои, у вас получается выполнение условия, передача заголовка и опять выполнение условия, после которого опять передача заголовка. Судя по сообщениям это так, вот и ищите причину. | |
|
|
|
|
|
|
|
для: Jovidon
(02.10.2012 в 13:54)
| | Народ скажите пожалуйста.
Как исправить эту ощибку? | |
|
|
|
|
|
|
|
для: Jovidon
(02.10.2012 в 23:43)
| | Прикрепите для этого к сообщению свой файл /admin/index.php
(только поудаляйте из него, если есть, персональные и секретные данные - логины, пароли и т.п.)
Только не скопипастите, а именно прикрепите. Можно сделать копию файла и удалить из него все, что ниже строки: | |
|
|
|
|
|
|
|
для: Sfinks
(03.10.2012 в 00:56)
| | Ошибка гласит, что передача заголовка ..... lock.php | |
|
|
|
|
|
|
|
для: confirm
(03.10.2012 в 08:31)
| | Ошибка гласит, что lock.php не может передать заголовки на строках 18,19 (и их мы видим в теме), т.к. вывод начат файлом index.php на строке 1.
И раз ТС сам не может найти этот вывод, очень похоже, что речь идет о каком-то непечатаемом символе.
Поэтому и прошу прикрепить файл, а не скопипастить его код. | |
|
|
|
|
|
|
|
для: Sfinks
(03.10.2012 в 09:58)
| | Видимо да, то, что он тут выставил скорее похоже на lock.php. | |
|
|
|
|
|
|
|
для: Sfinks
(03.10.2012 в 00:56)
| | Прикрепите для этого к сообщению свой файл /admin/index.php
(только поудаляйте из него, если есть, персональные и секретные данные - логины, пароли и т.п.)
Только не скопипастите, а именно прикрепите. Можно сделать копию файла и удалить из него все, что ниже строки:
Зделат так.
файл index.php
<?php
// Соединение с БД
require_once("config/connect.php");
// Замок
require_once("config/lock.php");
?>
|
файл lock.php
<?php
error_reporting(E_ALL & ~E_NOTICE);
// Если пользователь не авторизовался - авторизуемся
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();
}
else
{
// Утюжим переменные $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'],
// чтобы мышь не проскочила
if (!get_magic_quotes_gpc())
{
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
}
$query = "SELECT pass FROM system_lock
WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
$lst = @mysql_query($query);
// Если ошибка в SQL-запросе - выдаём окно
if(!$lst)
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
// Если такого пользователя нет - выдаём окно
if(mysql_num_rows($lst) == 0)
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
// Если все проверки пройдены, сравниваем хэши паролей
$account = @mysql_fetch_array($lst);
if(md5($_SERVER['PHP_AUTH_PW']) != $account['pass'])
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
}
?>
|
Ощибка.
Warning: Cannot modify header information - headers already sent by (output started at /home/content/14/9917914/html/admin/index.php:1) in /home/content/14/9917914/html/admin/config/lock.php on line 7
Warning: Cannot modify header information - headers already sent by (output started at /home/content/14/9917914/html/admin/index.php:1) in /home/content/14/9917914/html/admin/config/lock.php on line 8
|
А можеть у меня проблема с хостингом? | |
|
|
|
|
|
|
|
для: Jovidon
(04.10.2012 в 22:59)
| | У вас какая кодировка используется? UTF-8? Проследите, чтобы в файле index.php в первой строчке не было невидимого BOM-символа, который некоторые редакторы подставляют в UTF-8-файлы (а он судя по всему там есть). | |
|
|
|
|
|
|
|
для: cheops
(05.10.2012 в 09:18)
| | изменял всё на без BOM-символи ощибку не показываеть но выважу логин и пароль не могу зайти
да вроде всё правилно заполняю. Папробовал через другой user тоже также.
В чем проблема не могу понять
Скажите плиз | |
|
|
|
|
|
|
|
для: Jovidon
(06.10.2012 в 00:33)
| | А в config/connect.php BOM тоже удален? | |
|
|
|
|
|
|
|
для: cheops
(06.10.2012 в 08:46)
| | Да.
На локальном компютере работает а на сервере нет | |
|
|
|
|
|
|
|
для: Jovidon
(06.10.2012 в 11:50)
| | На сервере РНР установлен как CGI или как модуль Apache? Данный способ эффективен только тогда, когда PHP функционирует в качестве модуля веб-сервера Apache. Если на вашем хостинге PHP работает в режиме CGI/FastCGI и описанный выше метод работать не будет, поскольку переменные PHP_AUTH_USER и PHP_AUTH_PW не будут передаваться внутрь скрипта.
Решение есть через mod_rewrite:
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
|
Подробнее... | |
|
|
|
|
|
|
|
для: mihdan
(07.10.2012 в 12:30)
| | Сработала :)
Спасибо всем, чтобы у вас руки не болели икогда | |
|
|
|