Здравствуйте, 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. Подскажите пожалуйста как мне это исправить ? Игорь.
Доброе время суток, Игорь! Во-первых, если не ошибаюсь, 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 такое содержание:
Ответ отправлен: 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.