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

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

  Все выпуски  

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


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Hubbitus
Статус: 10-й класс
Рейтинг: 81
∙ повысить рейтинг >>
Волков Алексей
Статус: 3-й класс
Рейтинг: 31
∙ повысить рейтинг >>
Товарищ Бородин
Статус: Профессор
Рейтинг: 20
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 1125
от 16.05.2009, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 477, Экспертов: 37
В номере:Вопросов: 2, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 166893: Доброе время суток товарищи эксперты..у меня сложилась такая ситуация: мне нужно кое что спрограммить.для реализации своих идей выбрал php..вобщем есть БД,в которой есть таблица с аккаунтами (логин и пароль)..используется базовая аутентификация..сейч...


Вопрос № 166921: Здравствуйте уважаемые эксперты программирования нужна ваша помощь имеется форма для регистрации нужно функцию проверки заполнения всех обязательных полей и печать на новой странице данных, введенных пользователем в форме регистрации и подтверждение...

Вопрос № 166.893
Доброе время суток товарищи эксперты..у меня сложилась такая ситуация: мне нужно кое что спрограммить.для реализации своих идей выбрал php..вобщем есть БД,в которой есть таблица с аккаунтами (логин и пароль)..используется базовая аутентификация..сейчас у меня все работает вот так (привожу содержимое файлов):
****** index.php *******
<? require_once("header.php"); ?>
<div id="body">
main
</div>
<? require_once("footer.php"); ?>


********* header.php *********
<? require_once("login.php"); ?>
<div id="header">
header
</div>


****** login.php *********
<?
require_once("conf.php");

if(!isset($_SERVER['PHP_AUTH_USER']))
{
Header("WWW-Authenticate: Basic realm="Авторизация"");
Header("HTTP/1.0 401 Unauthorized");
echo "Вы не ввели логин и пароль.";
exit;
}
else
{
$mysql=@mysql_connect($db_host,$db_user,$db_pass) or die("Невозможно соединиться с сервером $db_host: ".mysql_error());
$mysql=@mysql_select_db($db_name) or die("Невозможно подключиться к базе $db_name: ".mysql_error());
$name=$_SERVER['PHP_AUTH_USER'];
$passw=$_SERVER['PHP_AUTH_PW'];
$passw=md5($passw);
$query="select * from users where name='$name'";
$resultat = mysql_query($query);
$obj = mysql_fetch_object($resultat);
if (($obj->pass!=$passw)||($passw==""))
{
echo 'Неправильное имя пользователя или пароль<br>Закройте окно и повторите вход в систему';
exit;
}
}
?>

В этом файле все необходимые данные для подключения к БД берутся из файла conf.php..
Вот в таком виде все в принципе работает..
Но есть один момент..Мне понадобилось использование js-скрипта,который бы запускался при откр ытии страницы (onLoad())..для этого нужен тег <body>..но после добавления тегов все перестает работать..Говорит типа файл login.php не может изменить заголовочную информацию (базовая аутентификация перестает работать)..Я так понимаю это из-за операторов require_once (получается што я уже как бы отправил данные в страницу,а базовая аутен-ция должна работать еще до отправки данных страницы,когда формируется ее заголовок)...Вопрос: как мне заставить работать баз. аутен-цию с тегами <html> <head> <body>...Заранее спасибо.
Отправлен: 10.05.2009, 15:39
Вопрос задал: psevdo (статус: 1-й класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Hubbitus
Здравствуйте, psevdo!
Первый вариант - использовать буферизацию вывода - http://ru2.php.net/manual/en/book.outcontrol.php тогда нету зависимости от вывода.
Второй Вариант, подробнее описать что Вы делаете на JavaScrip и почему это ломает текущую схему авторизации. Это ОЧЕНЬ страннно. Т.к. у Вас авторизация происходит ДО <body> то и мешать ничего в теле документа ей не должно.
---------
Если у Вас есть все что Вы хотите - значит Вы мало хотите!
Ответ отправил: Hubbitus (статус: 10-й класс)
Ответ отправлен: 10.05.2009, 16:23

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248910 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 166.921
    Здравствуйте уважаемые эксперты программирования нужна ваша помощь имеется форма для регистрации нужно функцию проверки заполнения всех обязательных полей и печать на новой странице данных, введенных пользователем в форме регистрации и подтверждение(типа подтвердить введенные данные перед отправкой или изменить)

    Приложение:

    Отправлен: 10.05.2009, 22:46
    Вопрос задал: Sky-er (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: Волков Алексей
    Здравствуйте, Sky-er!
    Как правило, первичная проверка обязательных для заполнения полей реализуется на javascript - это позволяет не гонять данные на сервер без проверки. Концепция безопасности при этом диктует повторную проверку данных уже на сервере средствами, например, РНР.
    Проверка на javascript может выглядеть в простейшем лучае так:

    1) пишем скрипт фуекции проверки:

    <script>
    function test() {

    if (document.getElementByName("email").value.lastIndexOf("@") == -1) return false;
    // проверки других полей
    return true;
    }
    2) добавляем в тэг <form вызов функции проверки:
    <form ...... onSubmit="return test();">

    после передачи данных они становятся доступны для обработки в глобальном массиве $_POST.

    проверку переданных данных можно выполнить следующим образом:

    if (isset($_POST['email']) || $_POST['email'] == '') { // вывод сообщения об ошибке в вода и формы } else ...

    // правильнее при проверке введённых данных воспользоваться регулярными выражениями, таким образом Вы избежите возможного взлома через форму ввода, например, так:

    if ( !preg_match('/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*@([a-z0-9])*(.([a-z0-9])([-a-z0-9_-])([a-z0-9])+)*$/i', $_POST['email']) {
    // вывод сообщения об ошибке ввода и формы
    } else

    // вывод:
    {
    foreach ($_POST as $key => $value) {
    echo "в поле $key введено значение $value<br>";
    }
    };

    и ещё, если Вы в фразе "печать на новой странице данных" имели в виду новое окно, то Вам тег формы нужно дополнить параметром target="_blank"

    Удачи.
    ---------
    Всё, что есть хорошего в жизни - либо незаконно, либо аморально, либо ведёт к ожирению...
    Ответ отправил: Волков Алексей (статус: 3-й класс)
    Ответ отправлен: 11.05.2009, 20:26

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248961 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

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

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

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное