[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите настроить "Доступ к админке по поролю"
Roma Teo
Здраствуйте. Я начинающий. Перелопатил море "интернета" и не к чему не пришёл, поэтому вынужден был обратиться к вам за советами и помощью.

Дело в том, что я учусь PHP&mysql по видео урокам Попова и читаю литетуру по php. Так вот решил установить себе пароль на админку по скрипту приведенному в уроке, в видео уроке все получается гладко, а у меня сделавшего по аналогии выдаёт ошибки:

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\WithBaby.ru\admin\inc\bd.php:4) in Z:\home\localhost\www\WithBaby.ru\admin\lock.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\WithBaby.ru\admin\inc\bd.php:4) in Z:\home\localhost\www\WithBaby.ru\admin\lock.php on line 7




вот сам скрипт(lock.php):

<?php
include ("inc/bd.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 userlist 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();
}


}



?>




скажите в чем может быть дело и как устранить ошибки, ну или посоветуйте какой небудь несложный эффективный скрипт



Спустя 21 минута, 44 секунды (27.11.2009 - 18:54) ber104 написал(а):
А вы базу в mysql создавали с данными для входа?
include ("inc/bd.php"); - соеденение с базой, возможно она у вас в другом месте и файл по другому называется.

Спустя 38 минут, 12 секунд (27.11.2009 - 19:32) glock18 написал(а):
перед <?php есть пробелы или BOM (символ такой, если в файлах кодировка UTF)

Спустя 1 час, 1 минута, 11 секунд (27.11.2009 - 20:33) Krevedko написал(а):
ошибка тут в обучении по урокам попова ))
а вообще да..вы скрипт случайно не в блокноте сохраняли ?

Спустя 4 часа, 41 минута, 28 секунд (28.11.2009 - 01:14) Roma Teo написал(а):
ber104 базу данных конечно создавал и она точно там где нужно, я хоть и начинающий, но начёт базы данных кое-что смыслю.
____________________________________________________________

glock18 Поубирал всё пробелы, там где вы сказали, никакого результата не дало тоже самое выбрасывает
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\WithBaby.ru\admin\inc\bd.php:4) in Z:\home\localhost\www\WithBaby.ru\admin\lock.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\WithBaby.ru\admin\inc\bd.php:4) in Z:\home\localhost\www\WithBaby.ru\admin\lock.php on line 7


исходя из этой ошибки могу придти к выводу, что проблема в 6-7линиях:
 {
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}

но что тут может быть не так, никак в голову не приходит sad.gif

_________________________________________________________________

Krevedko в php файле сохранён, до этого по урокам Попова у меня всё отлично получалось, только вот этой "касяк" с доступом в админку.

Спустя 7 часов, 41 минута, 3 секунды (28.11.2009 - 08:55) ber104 написал(а):
У меня тоже был такой скрипт и все отлично получалось.

Может с хостингом проблемы?

Или надо include писать на данный скрипт в самом вверху страницы.

Спустя 1 час, 55 минут, 32 секунды (28.11.2009 - 10:51) Gram написал(а):
Корявый код какой-то или мне кажется?

Спустя 2 часа, 31 минута, 27 секунд (28.11.2009 - 13:22) Roma Teo написал(а):
ber104 да в том-то и дело, что знаю что многие его используют и у них всё работает, а вот у меня что не идёт((( Насчёт хостинка, то тестирую свой сайт покачто на локальном компе в Денвере, на хост не закидываю, а версия Денвера вроде не старая. Слушай, а есть ли у тебя какой небудь другой скрипт "входа в админку по поролю?" был бы благодарен

Gram ну незнаю насчёт карявости, но если есть какие небудь другие предложения по скрипту "входа в админку по поролю", то был бы очень признателен

Спустя 1 час, 56 минут, 32 секунды (28.11.2009 - 15:19) Argnist написал(а):
на 4 строке inc/bd.php выводится что-то на экран или пробелы лишние, как бы в ошибке все написано

Спустя 1 день, 4 часа, 21 минута, 30 секунд (29.11.2009 - 19:41) Roma Teo написал(а):
Argnist хочешь сказать, что всё дело в пробелах?
Япоубирал там все возможные пробелы и тоже самое в итоге

________________________________________________________________

и вообще почему чтов этих 2ух строчках не так что выдаются ошибки...

 {
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}


Вроде много кто этот скрипт изает и у них всё в норме, что может быть не так?

Спустя 1 день, 6 часов, 9 минут, 41 секунда (1.12.2009 - 01:50) Roma Teo написал(а):
Люди тогла посоветуйте пожалуйсто какой небудь не сложный скрипт для входа в админку по поролю, а то реально..."глюк" этого скрипта не поддаёться понимаю, уже всё перепробовал((

Спустя 38 минут, 48 секунд (1.12.2009 - 02:29) dr_Lev написал(а):
Да не глюк это скрипта...
Хедеры нельзя изменять, если уже был какой-то вывод...
Посмотри файл db.php, а именно строку 4, там и идет вывод...
В ошибке же написано:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\WithBaby.ru\admin\inc\bd.php:4) in Z:\home\localhost\www\WithBaby.ru\admin\lock.php on line 6

Спустя 1 месяц, 20 дней, 20 часов, 25 минут, 39 секунд (21.01.2010 - 22:55) romul написал(а):
А как изменить этот скрипт что бы хеш пороля сравнивался... если в базе хеш?
Точнее двойной md5(md5())


<?php
include ("inc/bd.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 userlist 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();
}


}



?>

Спустя 4 часа, 47 минут, 55 секунд (22.01.2010 - 03:43) Dron19 написал(а):
Этот файл нужно подключать сразу после файла который подключает базу и перед <! DOCTYPE HTML PUBLIC ..... И если у тебя в базе хэш, то измени на нормальный, если хочешь, чтобы твой скрипт сравнивал введенный пароль с md5, то сначала разбери скрипт, он простой.

Спустя 3 часа, 29 минут, 38 секунд (22.01.2010 - 07:12) twin написал(а):
Очередной финт попова...
Я вообще подозреваю, что это специально сделано. Теперь попов знает, как поломать кучу сайтов, которые делались по его нущению.
На кой хрен тут это:
         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']);
}
?
Ни один человек в здравом уме и рассудке такой глупости не сделает.
И зачем такая куча вычислений в php. когда можно все решить в мускуле...

Спустя 6 минут, 57 секунд (22.01.2010 - 07:19) qpayct написал(а):
Если не ошибаюсь тебе просто надо сохранить файл не в ANSI а в without BOM уроки Твина тебе в помощь

Спустя 25 дней, 12 часов, 51 минута, 50 секунд (17.02.2010 - 20:11) BAG's написал(а):
Цитата (Roma Teo @ 27.11.2009 - 15:32)
Здраствуйте. Я начинающий. Перелопатил море "интернета" и не к чему не пришёл, поэтому вынужден был обратиться к вам за советами и помощью.

  Дело в том, что я учусь PHP&mysql  по видео урокам Попова и читаю литетуру по <span class='darling'>php</span>. Так вот решил установить себе пароль на админку по <span class='darling'><span class='darling'>скрипту</span></span> приведенному в уроке, в видео уроке все получается гладко, а у меня сделавшего по аналогии выдаёт ошибки:

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\WithBaby.ru\admin\inc\bd.<span class='darling'>php:4) in Z:\home\localhost\www\WithBaby.ru\admin\lock.<span class='darling'>php</span> on line 6


просмотрел я курс попова.
думаю имеет место быть проблемма (не уверен что правильно скажу) с вложенностью обращений к файлам по запросу [b]include

попробуй в файле lock.php вместо автоматического обращения к базе прописать этот код вручную.
а именно вместо:
<?php
include ("inc/bd.php"); /* соединение с БД*/
if (!isset($_SERVER['PHP_AUTH_USER']))
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
.........


пропиши строки содержащиеся в inc/bd.php, тогда код будет выглядеть примерно так:
<?php

$db = mysql_connect("localhost (имя хоста)","php"(пользователь в phpmyadmin),"12345"(пороль в phpmyadmin));
mysql_select_db("phpsite",$db);

if (!isset($_SERVER['PHP_AUTH_USER']))
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
.........


надеюсь поможет.

Спустя 6 месяцев, 14 дней, 23 часа, 32 минуты, 48 секунд (1.09.2010 - 18:44) гость написал(а):
у тебя пробелы скорее всего в файле bd.php, посмотри пробелы до и после закрывающих тегов php

Спустя 5 часов, 55 минут, 33 секунды (2.09.2010 - 00:39) twin написал(а):
гы... smile.gif
археолог. Вот в чем проблема.

Спустя 5 месяцев, 8 дней, 17 часов, 25 минут, 24 секунды (10.02.2011 - 19:05) Guest написал(а):
пробелы после ?> уберите

Спустя 15 часов, 20 минут, 12 секунд (11.02.2011 - 10:25) Dinho=) написал(а):
У меня такая же проблема как и у Roma Teo возникла )) Я думал целых два дня как ее решить,потом удалил файл bd.php и затем создал его снова))) В итоге всё заработало:ввожу пароль и логин -заходит без проблем.

P.S. волшебство прям какое-то

P.P.S у Попова есть небольшой ляп в уроке,а именно: поначалу он назвал файл "db.php",а в конце этот файл уже имел название "bd.php"...

Спустя 2 дня, 13 часов, 17 минут, 39 секунд (13.02.2011 - 23:43) m4a1fox написал(а):
Я конечно не профи. Но вот такой скрипт есть у TWIN'а. Попробуй. Мне помогло
<?php
// базовая аунтификация для админа в админ панель)) проверка
// логин и пароль admin => admin.

if(empty($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate: Basic realm="Administrative resource"');
header("HTTP/1.0 401 Unauthorised");
exit();
}

$result = mysql_query("SELECT COUNT(*) AS `cnt` FROM `adminc`
WHERE user='"
. mysql_real_escape_string($_SERVER['PHP_AUTH_USER']) ."'
AND password='"
. htmlspecialchars(md5($_SERVER['PHP_AUTH_PW'])) ."'"
);

if (mysql_result($result, 0) == 0)
{
header('WWW-Authenticate: Basic realm="Administrative resource"');
header ("HTTP/1.0 401 Unauthorized");
exit();
}
// конец скрипта проверки на аунтификацию в админ панель
?>

Спустя 1 месяц, 14 дней, 13 часов, 8 минут, 41 секунда (28.03.2011 - 11:51) akv написал(а):
ber104, какая нахрен база? Он не может сделать редирект, потому что его только что редиректили. Поэтому надо посмотреть последовательность if. Надо чтобы строка header(...) не встречалась больше двух раз.

Спустя 3 часа, 50 минут, 36 секунд (28.03.2011 - 15:42) petezzza написал(а):
Скачай notepad++ , открой файлы все , и в меню сверху нажми кодировки -> преобразовать в utf-8 без BOM должно помочь.

Спустя 2 месяца, 13 дней, 1 час, 58 минут, 53 секунды (11.06.2011 - 17:41) Amadeo написал(а):
У меня такая же проблема как и у Roma Teo возникла . Я конечно не профи. Но удалив include("blocks/bd.php"); и написав полностью скрипт bd

<?php
include("blocks/bd.php"); удалить и написать bd.

$db = mysql_connect("localhost","..Ваш логин........","..Пароль...")or die("Не могу соединиться". mysql_error());
mysql_select_db("phpsite",$db)or die("Ошибка запроса");

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 userlist 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();
}


}
?>


и у меня заработала. user posted image

Спустя 1 минута, 53 секунды (11.06.2011 - 17:43) Amadeo написал(а):
У меня такая же проблема как и у Roma Teo возникла . Я конечно не профи. Но удалив include("blocks/bd.php"); и написав полностью скрипт bd

<?php
include("blocks/bd.php"); удалить и написать bd.

$db = mysql_connect("localhost","..Ваш логин........","..Пароль...")or die("Не могу соединиться". mysql_error());
mysql_select_db("phpsite",$db)or die("Ошибка запроса");

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 userlist 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();
}


}

?>


и у меня заработала.

Спустя 15 дней, 14 часов, 32 минуты, 55 секунд (27.06.2011 - 08:16) Гость_Серега написал(а):
include_once("db.php");

И все.

Спустя 3 месяца, 6 дней, 10 часов, 50 минут, 18 секунд (3.10.2011 - 19:06) demokrrat написал(а):
В общем я использовал эту систему у себя на компе и все работало.
И когда я ввожу логин и пароль оно заново меня просит ввести их.

Спустя 7 месяцев, 21 час, 57 минут (4.05.2012 - 17:03) ahanter написал(а):
ВотЪ оно все хорошо... Но почему нет кнопки ВЫХОД в этой админке???

Спустя 1 месяц, 24 дня, 19 часов, 34 минуты, 49 секунд (29.06.2012 - 12:38) Гость_Алексей написал(а):
Подскажите пожалуйста, я установил этот скрипт, создал таблицу в базе данных, создал пользователя, все нормально работает, а вот когда захожу в админ панель ввожу логин и пароль, а оно не заходит, что-это может быть?


И когда в базе данных я создаю поле с именем pass - то скрипт не работает, а когда назову поле password - тогда работает, но не заходит в админку.

Спустя 16 минут, 10 секунд (29.06.2012 - 12:54) Денис777 написал(а):
Roma Teo Я сам учился по урокам попов , попов тебя не чему хорошему не научит , irbis-team.com вот этот сайт хорош )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.