Поддержка

Увеличение места для почты на всех тарифах хостинга
10 Янв 2012

С 11 января на всех тарифах хостинга увеличивается доступное место для хранения почты в 5 раз!

С наступающим Новым Годом!
29 Дек 2011

Поздравляем с наступающим Новым годом! График работы компании в новогодние праздники.

Все новости
RSS RSS

Екатеринбург:

253-55-00

Для регионов России:

8-800-2000-699

Проверить домен:

пример: netangels.ru или 91.201.52.1

Программирование

назад к списку

IvanIE

13.03.2010 22:12

Защита админки - PHP

Для защиты админ панели использую данный скрипт который включается в каждую страницу адин панели через функцию include:
include("conect/db.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();
}
}
На локальном веб-сервере, скрипт работает, а на netangels не полностью, не принимает правильны пароль, запрашивать заново. Подскажите в чем моет быть проблема. Может быть нужно изменить права фалов?



[Сообщение отредактировано в 22:18:47 13.03.2010]

[Сообщение отредактировано в 22:24:37 13.03.2010]

NetAngels

13.03.2010 22:51

Ваш скрипт написан так, что он работает только с mod_php. У нас php работает в режиме FastCGI, поэтому авторизация в таком виде работать у нас не будет.
Однако, существует решение, которое позволяет использовать такую авторизацию и в случае (Fast)CGI.

Во-первых, Вам нужно создать файл .htaccess и написать в него:



RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]


Затем в начало Вашего php-скрипта вставить строчку:


list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));

соответственно значение переменных $PHP_AUTH_USER и $PHP_AUTH_PW будут получены из переменной $HTTP_AUTHORIZATION, которая будет создана правилом RewriteRule из нашего .htaccess.

IvanIE

14.03.2010 18:52

Большее спасибо за объяснение.
Сделал все так, как посоветовали, но безрезультатно. Файл .htaccess работает, проверил. Наверное я упустил какую то мелочь или нужно скирпт все таки переделать в следствии того, что переменные берутся из переменной $HTTP_AUTHORIZATION?

NetAngels

14.03.2010 21:50

Не зная подробностей настроек Вашего аккаунта сложно сказать в чем именно проблема. Если переменная $HTTP_AUTHORIZATION к Вам в скрипт попадает, то все просто. Если нет, то надо разбираться. В любом случае это уже вопрос не для форума.

IvanIE

15.03.2010 21:10

В таком случаи с какой пометной мне лучше отправить письмо в тех поддержку, что бы не пересказывать проблему?
Спасибо.

NetAngels

15.03.2010 21:16

Вам достаточно сослаться в заявке на это обсуждение в форуме.

IvanIE

16.03.2010 12:36

Хорошо.

NetAngels

19.09.2010 21:57

Пожалуйста, обратите также внимание на то, что в завимости от наличия или отсутствия других директив в файле .htaccess, требуемые данные могут оказаться не в переменной $_SERVER['HTTP_AUTHORIZATION'], а в переменной $_SERVER['REDIRECT_HTTP_AUTHORIZATION'] (префикс REDIRECT_ добавляет к имени переменной модуль mod_rewrite).

назад к списку

Добавить комментарий

ваше имя:
не заполняйте это поле:
 
текст сообщения:

Внимание: Мы не принимаем заявки в службу технической поддержки через форум.

Вам необходимо написать Вашу заявку в службу технической поддержки

через панель управления хостингом или по электронной почте.

введите слово написанное на картинке