Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на PHP

Выпуск № 121
от 11.03.2004, 13:11

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 203
Отправлено ответов: 354
Активность: 174.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Хабиби
Статус: Доверительный
Общий рейтинг: 123.52
[Подробней >>]
samum2000
Статус: Профессиональный
Общий рейтинг: 128.77
[Подробней >>]
homer
Статус: Начальный
Общий рейтинг: 122.41
[Подробней >>]
 
Foamplast
Статус: Опытный
Общий рейтинг: 156.8
URL: мой личный сайт
[Подробней >>]
Bobs
Статус: Профессиональный
Общий рейтинг: 111.06
URL: http://www.hosthost.biz/
[Подробней >>]
Licvidator
Статус: Профессиональный
Общий рейтинг: 106.37
URL: PC Info
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 199. Здрасьте! Как пользоватся sendmail в PHP-скриптах на h12.ru?... (ответов: 4)
Вопрос № 200. Уважаемые эксперты, Такой вопрос: Пытаюсь сделать защиту отдельной страницы от несанкционированого д... (ответов: 6)

Вопросов: 2, ответов: 10


 Вопрос № 199

Здрасьте!
Как пользоватся sendmail в PHP-скриптах на h12.ru?



Вопрос отправлен: 07.03.2004, 14:50
Отправитель: bc

[Следующий вопрос >>] [Список вопросов]

Отвечает Хабиби

Здравствуйте, bc!
Задай этот вопрос администрации этого хостинга, хотя, насколько помню, sendmail там по умолчанию закрыт, опять же у админов просить нужно..

Ответ отправлен: 08.03.2004, 01:35
Отправитель: Хабиби


Отвечает samum2000

Здравствуйте, bc!
Напиши в службу поддержки, что хочешь использовать Sendmail, и они тебе откроют её.

Ответ отправлен: 07.03.2004, 16:40
Отправитель: samum2000


Отвечает homer

Здравствуйте, bc!
По умолчанию доступ к sendmail на этом хостинге закрыт. Отпиши письмо в службу техподдержки с просьбой открыть доступ к sendmail, напиши чего этот скрипт делает и где находиться.
Все это делается чтоб сайтмейкеры спамом не баловались.


Ответ отправлен: 09.03.2004, 09:08
Отправитель: homer


Отвечает Foamplast

Доброе время суток, bc!
1. Прочти внимательней условия соглашения. Скорее всего, тебе им вообще нельзя пользоваться. Обычно для этого нужно написать им письмо типа: "Делаю сайт для одиноких мужчин. Дайте sendmail.". И дают.
2. А нафиг нужен h11? Купи хостинг за 180р. в месяц и делай на нём по двадцать сайтов без тупых ограничений.


Ответ отправлен: 10.03.2004, 19:07
Отправитель: Foamplast


 Вопрос № 200

Уважаемые эксперты,
Такой вопрос:
Пытаюсь сделать защиту отдельной страницы от несанкционированого доступа
- чтобы доступ к ней был доступен только со страницы ввода логина и пароля (т.е. с page1.php --> page2.php)
а НЕ с простого ввода в адресную строку
(т.е. http://localhost/page2.php)
Сначала производится проверка логина и пароля, если пароль и логин верные, то используется
такой код :
session_start(); // начинаем сессию
session_register('auth'); //регистрируем переменную
$HTTP_POST_VARS['auth'] = 1; // и устанавливаем значение чтобы потом его проверять
include ("page2.php"); // запускаем страницу в которой и проверяется значение. (Я использую именно c include)
На странице page2.php пишем:
if ($HTTP_POST_VARS['auth']!=1) //если не равно, то пишем...
{echo "У ВАС НЕТ ПРАВ ДОСТУПА";
exit;}
else
{exit("ВХОД ВЫПОЛНЕН");}
?>
Проблема в том что если вводим имя пользователя и пароль через форму, то все работает нормально.
Но если попытаться просто ввести путь к странице в адресной строке
(т. е. http://localhost/page2.php)
То выскакивает ошибка :
Notice: Undefined index: auth in C:serverwwwpage2.php in line 2
У ВАС НЕТ ПРАВ ДОСТУПА
А нужно чтобы выскакивала только надпись "У ВАС НЕТ ПРАВ ДОСТУПА".
То есть все работае правильно кроме этой переменной auth.
Подскажите пожалуйста как мне это исправить ?
Игорь.



Вопрос отправлен: 08.03.2004, 01:58
Отправитель: Игорь

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000

Доброе время суток, Игорь!
Во-первых, если не ошибаюсь, SESSION_START() должно быть прописано первой строкой вашего скрипта.
Во-вторых, что за манипуляции вы проводите с $HTTP_POST_VARS? Вы просто добавляете к этому массиву еще один элемент, а когда page2.php запускается отдельно от page1.php, она знать не знает о таком массиве(!), вот и ругается.
Не лучше ли сделать так:
SESSION_START();
...// авторизация
$_SESSION['AUTH']=1;// на php ранее 4.0.6 используйте $HTTP_SESSION_VARS[]
include ("PAGE2.PHP");
?>
А на странице 2 такое содержание:
if (isset($_SESSION['AUTH'])
{
if (1==$_SESSION['AUTH'])
{
//все правильно
}
else
{
ECHO "Access Denied!";
exit;
}
}
else
{
ECHO "Access Denied!";
exit;
}
?>


Ответ отправлен: 10.03.2004, 11:45
Отправитель: samum2000


Отвечает Хабиби

Здравствуйте, Игорь!
Согласен с Licvidator, переменная оказывается неопределённой, поэтому и выдаётся сообщение об ошибке. только HTTP_REFERER лучше не использовать - ненадёжно, можно обойти.

Ответ отправлен: 08.03.2004, 15:10
Отправитель: Хабиби


Отвечает Bobs

Приветствую Вас, Игорь!
Вместо
if ($HTTP_POST_VARS['auth']!=1)
впишите
if (!isset($HTTP_POST_VARS['auth']) || $HTTP_POST_VARS['auth']!=1)

Ответ отправлен: 08.03.2004, 15:19
Отправитель: Bobs


Отвечает Licvidator

Добрый день, Игорь!
Проверять на наличие переменной:
if (isset ($HTTP_POST_VARS['auth'])) {}
Предлагаю в качестве альтернативы проверять переменную HTTP_REFERER, и если она будет равна http://host/page1.php, то делать проверку авторизации.

Ответ отправлен: 08.03.2004, 02:38
Отправитель: Licvidator


Отвечает homer

Здравствуйте, Игорь!
Все правильно, когда ты обращаешься к page2.php через адресную строку, ты обращаешься к ней методом GET(!), а не POST как через форму.
Соответственно при обращении методом GET , массив переменных принятых методом POST($HTTP_POST_VARS) пустой, и индекса 'auth' там нет, о чем тебя и предупреждает интерпретатор
Можешь писать так:
if(isset($HTTP_POST_VARS['auth'])) {
if($HTTP_POST_VARS['auth']==1){
exit("ВХОД ВЫПОЛНЕН");
}
}
exit("У ВАС НЕТ ПРАВ ДОСТУПА");}
?>



Ответ отправлен: 09.03.2004, 09:04
Отправитель: homer


Отвечает Foamplast

Доброе время суток, Игорь!
Тебе надо не значение проверять, а сначала сам факт существования переменной auth. Вот когда её нет, тогда php и ругается.
Это можно сделать так:
if (session_is_registered("auth"))
{
if ($HTTP_SESSION_VARS["auth"] != 1)
{
echo "Блин, хренотень какая-то с моим скриптом. Наверное, с бодуна писал.";
exit;

}esle{

echo "Ура! Всё прокатило.";

// Здесь чего надо.

exit;
}

}else{

echo "У Вас нет доступа.";
exit;
}
Да и запомни: HTTP_XXX_VARS - это переменные, имеющие отношение к XXX.
HTTP_POST_VARS - переданные методом POST.
HTTP_SESSION_VARS - заданные в сессии.
и т.п.


Ответ отправлен: 10.03.2004, 19:07
Отправитель: Foamplast



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (28)
C / C++ (19)
Perl (3)
Builder / Delphi (18)
Pascal (20)
Basic / VBA (9)
Java / JavaScript (5)
PHP (12)
Криптография (6)
WinAPI (15)
Радиоэлектроника (9)
Пользователю
Windows 95/98/Me (39)
Windows NT/2000/XP (59)
"Железо" (32)
Поиск информации (18)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (11)
Юристу
Гражданское право (15)
Семейное право (13)
Трудовое право (13)
КоАП (11)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное