|
|
|
| Я где то нашёл скрипт авторизации на странице, и хотел в нём разобраться, но выдаются ошибки с надписью Parse error: syntax error, unexpected T_VARIABLE in D:\server\auth.php on line
Вот код:
<?php
$dbhost = "localhost";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "666";
$dbcnx = @mysql_connect($dbhost,$dbuser,$dbpasswd);
$dbname = "$PHP_AUTH_USER";
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm=\"Admin Center\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$password = "$PHP_AUTH_PW";
$link = mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);
$result=mysql_query("SELECT password FROM auth WHERE name=\ "$PHP_AUTH_USER\"");
$row=mysql_fetch_array($result);
if ($row==NULL)
{
Header("WWW-Authenticate: Basic realm=\ "Admin Center\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$real_password="$row[password]";
if ($real_password!=$password)
{
Header("WWW-Authenticate: Basic realm= \"Admin Center\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
}
}
?>
|
Подскажите что не так и как сделать так чтобы скрипт работал
Заранее спасибо | |
|
|
|
|
|
|
|
для: _LG_
(30.12.2004 в 23:48)
| | Он вот так должен выглядеть
<?php
$dbhost = "localhost";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "666";
$dbcnx = @mysql_connect($dbhost,$dbuser,$dbpasswd);
$dbname = "$PHP_AUTH_USER";
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm=\"Admin Center\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$password = "$PHP_AUTH_PW";
$link = mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);
$result=mysql_query("SELECT password FROM auth WHERE name=\"$PHP_AUTH_USER\"");
$row=mysql_fetch_array($result);
if ($row==NULL)
{
Header("WWW-Authenticate: Basic realm=\"Admin Center\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$real_password="$row[password]";
if ($real_password!=$password)
{
Header("WWW-Authenticate: Basic realm=\"Admin Center\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(30.12.2004 в 23:53)
| | Спасибо cheops!
Сейчас проверю | |
|
|
|
|
|
|
|
для: cheops
(30.12.2004 в 23:53)
| | А...красава чувак! Спасибо тебе...заработало вроде | |
|
|
|
|
|
|
|
для: cheops
(30.12.2004 в 23:53)
| | To cheops:
Форма для ввода пароля выскакивает, вот только он видимо не действует. Ввожу его форма заново вылазит. Может я опять чё то нахимичил, я хотел чтобы надпись выдавалась, я правильно сделал?
<?php
$dbhost = "localhost";
$dbname = "test";
$dbuser = "root";
$dbpassword = "666";
$dbcnx = @mysql_connect($dbhost,$dbuser,$dbpasswd);
$dbname = "$PHP_AUTH_USER";
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm=\"Access denied\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$password = "$PHP_AUTH_PW";
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbname);
$result=mysql_query("SELECT password FROM auth WHERE name=\"$PHP_AUTH_USER\"");
$row=mysql_fetch_array($result);
if ($row==NULL)
{
Header("WWW-Authenticate: Basic realm=\"Admin Center\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$real_password="$row[password]";
if ($real_password!=$password)
{
Header("WWW-Authenticate: Basic realm=
\"Access denied\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
}
}
echo "Доступ разрешён";
?>
|
| |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 00:13)
| | Хм... а пароль в таблице не шифрован? и правильно ли набирается (ну может регистр, раскладка не та)? | |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 00:13)
| | Вы тестируете на локальной машине? И php у Вас подключен как CGI?
<Directory "c:/php-5.0">
Options ExecCGI
</Directory>
ScriptAlias "/__php_dir__/" "c:/php-5.0/"
Action application/x-httpd-php "/__php_dir__/php-cgi.exe"
|
Авторизация на PHP работает только в том случае когда PHP подключен модулем.
LoadModule php5_module c:\php-5.0\php5apache2.dll
|
На хостингах, как правило, php подключен как модуль. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(31.12.2004 в 00:54)
| | Да действительно у меня php подключен как CGI.
А как его как модуль подключить? У меня он был как модуль подключен, но после переустановки всех программ, я не смог найти инфу про то как его подключить как модуль. | |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 01:31)
| | Подключение php производится в файле httpd.conf - это главный настроечный файл Apache
Какая у Вас версия Apache и PHP? Вот так подключается PHP5 на Apache2.
LoadModule php5_module c:\php-5.0\php5apache2.dll
|
Разница между разными версиями сводится к разнице в названиях модулей. В Вашем httpd.conf наверняка такая строчка есть, но "заремаренная". Уберите с нее символ комментария #
А подкючение PHP, как CGI наоборот закомментарьте.
#Directory "c:/php-5.0">
# Options ExecCGI
#</Directory>
#ScriptAlias "/__php_dir__/" "c:/php-5.0/"
#Action application/x-httpd-php "/__php_dir__/php-cgi.exe"
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(31.12.2004 в 02:58)
| | Подключил я PHP как модуль, спасибо за инфу, но он после подключения вот что выдал
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\server\auth.php on line 20
Warning: Cannot modify header information - headers already sent by (output started at D:\server\auth.php:20) in D:\server\auth.php on line 23
Warning: Cannot modify header information - headers already sent by (output started at D:\server\auth.php:20) in D:\server\auth.php on line 24
Что это значит? Подскажите.....
Вот код:
<?php
$dbhost = "localhost";
$dbname = "test";
$dbuser = "root";
$dbpassword = "666";
$dbcnx = @mysql_connect($dbhost,$dbuser,$dbpasswd);
$dbname = "$PHP_AUTH_USER";
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm=\"Access denied\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$password = "$PHP_AUTH_PW";
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbname);
$result=mysql_query("SELECT password FROM auth WHERE name=\"$PHP_AUTH_USER\"");
$row=mysql_fetch_array($result);
if ($row==NULL)
{
Header("WWW-Authenticate: Basic realm=\"Admin Center\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$real_password="$row[password]";
if ($real_password!=$password)
{
Header("WWW-Authenticate: Basic realm=
\"Access denied\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
}
}
echo "Доступ разрешён! ";
?>
|
| |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 17:08)
| | Три предупреждения, первое о том, что функции mysql_fetch_array передан не верный дескриптор ответа базы данных - так бывает когда имеется ошибка в SQL-запросе, а два вторых следствие первого - после того, как что-либо выводится в окно браузера заголовки отослать не получится. Попробуйте исправить строки
<?php
$result=mysql_query("SELECT password FROM auth WHERE name=\"$PHP_AUTH_USER\"");
$row=mysql_fetch_array($result);
?>
|
на
<?php
$result=mysql_query("SELECT password FROM auth WHERE name=\"$PHP_AUTH_USER\"");
if(!$result) exit(mysql_error());
$row=mysql_fetch_array($result);
?>
|
чтобы посмотреть что за ошибка... | |
|
|
|
|
|
|
|
для: cheops
(31.12.2004 в 17:44)
| | Хех...теперь после исправления вот что выдаёт:
No Database Selected | |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 18:00)
| | А да, действительно не выбрана... А где расположена таблица с пользователями в базе test? Следует после строки:
<?php
$dbcnx = @mysql_connect($dbhost,$dbuser,$dbpasswd);
?>
|
дописать проверку и выбор базы данных:
<?php
if (!$dbcnx)
{
exit("В настоящий момент сервер базы данных не доступен,
поэтому корректное отображение страницы невозможно.");
}
// Выбираем базу данных
if (! @mysql_select_db($dbname,$dbcnx))
{
exit("В настоящий момент база данных не доступна, поэтому
корректное отображение страницы невозможно.");
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(31.12.2004 в 18:34)
| | Мне теперь после исправлений выдалось вот что --- В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.
Вот структура моей базы:
# MySQL-Front 3.0 (Build 30.1)
# Host: ADMIN Database: test
# ------------------------------------------------------
# Server version 3.23.36
CREATE DATABASE 'test'
USE 'test';
#
# Table structure for table user
#
CREATE TABLE 'user' (
'Id' int(6) unsigned NOT NULL auto_increment,
'name' varchar(10) NOT NULL default '',
'password' varchar(10) NOT NULL default '',
PRIMARY KEY ('Id')
) TYPE=MyISAM;
#
# Dumping data for table user
#
INSERT INTO 'user' VALUES (1,'dmitry','355949');
INSERT INTO 'user' VALUES (2,'lg','666');
|
| |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 18:50)
| | Хм... а сам сервер MySQL на машине запущен? Т.е. имеется ли в процессах что-то вроде mysqld-nt.exe?
http://www.softtime.ru/info/articlephp.php?id_article=24 | |
|
|
|
|
|
|
|
для: cheops
(31.12.2004 в 19:02)
| | В процесса mysqld-nt нету, зато есть mysql-opt целых два.....ой а хотя и mysqld-nt загружен и работает просто великолепно. | |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 19:06)
| | Хм... посмотрите тест в статье по ссылке - он работает?
http://www.softtime.ru/info/articlephp.php?id_article=24 | |
|
|
|
|
|
|
|
для: cheops
(31.12.2004 в 19:37)
| | Это где выдаётся версия Муксуна чтоли?
Да работает, моя версия 3.23.36 | |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 19:42)
| | Хм... т.е. один скрипт считает, что он соединяется с сервером базы данных, а другой считает, что нет... значите где-то опечатка должна быть... Скопируйте в буфер обмена дескриптор $dbcnx и замените им все дескрипторы - чтобы не было опечаток и русских букв в теле переменной. | |
|
|
|
|
|
|
|
для: cheops
(31.12.2004 в 19:48)
| | Ок, сейчас сделаю | |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 20:33)
| | Безрезультатно, всё равно выдаёт надпись [В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.]
Вот ещё раз листинг кода:
<?php
$dbhost = "localhost";
$dbname = "test";
$dbuser = "root";
$dbpassword = "kfvth275";
$dbcnx = @mysql_connect($dbhost,$dbuser,$dbpasswd);
$dbname = "$PHP_AUTH_USER";
if (!$dbcnx)
{
exit("В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно."
}
if (!@mysql_select_db($dbname,$dbcnx))
{
exit("В настоящий момент база данных недоступна, поэтому коректное отображение страницы невозможно.");
}
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm=\"Access denied\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$password = "$PHP_AUTH_PW";
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbname);
$result=mysql_query("SELECT password FROM auth WHERE name=\"$PHP_AUTH_USER\"");
if(!$result) exit(mysql_error());
$row=mysql_fetch_array($result);
if ($row==NULL)
{
Header("WWW-Authenticate: Basic realm=\"Admin Center\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$real_password="$row[password]";
if ($real_password!=$password)
{
Header("WWW-Authenticate: Basic realm=
\"Access denied\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 20:38)
| | Хм... в скрипте имя базы данных
<?php
$dbname = "test";
?>
|
Переопределяется в строке
<?php
[code]<?php
$dbname = "$PHP_AUTH_USER";
?>
| ?>[/code]
Так надо или всё-таки это ошибка? | |
|
|
|
|
|
|
|
для: _LG_
(30.12.2004 в 23:48)
| | Видимо я ошибся, точно.....
Я сам дописывал вырхнюю часть где
$dbhost = "localhost";
$dbname = "test";
$dbuser = "root";
$dbpassword = "kfvth275";
$dbcnx = @mysql_connect($dbhost,$dbuser,$dbpasswd);
|
Сейчас поправлю и скажу что получилось | |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 20:58)
| | Блин, торможу я....мозг совем не работает
Помоги мне убрать какую нибудь переменную $dbname и чтобы это на коде не отразилось | |
|
|
|
|
|
|
|
для: _LG_
(31.12.2004 в 21:08)
| | Хм... новую тему заведу... а то это длинная и выгружать неудобно, а линейный вариант форума я не люблю :))) Тема расположена по URL:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1359 | |
|
|
|