Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript

Печать

else {

header('WWW-Authenticate:Basic realm="Restricted Section"'):header('HTTP/1.0 401 Unauthori zed');

die ("Пожалуйста, введите имя пользователя и пароль"); }

functi on mysql_entiti es_fix_stri ng(Sstring) {

return html enti ti es (rr\ysql_fi x_stri ng( Sstri ng)); }

functi on mysql_fi x_stri ng(Sstri ng) {

if (get_magic__quotes_gpc()) Sstring = stripslashes(Sstring);

return mysql_real_escape_string($string); }

Вы, наверное, ожидали, что настало время для некоторых весьма больших по объему примеров кода. Но по этому поводу не стоит переживать. Последние 10 строк — не что иное, как пример 10.31, который уже встречался в главе 10. Эти строки присутствуют здесь для выполнения очень важной задачи — обезвреживания введенных пользователем данных.

На данный момент практический интерес для вас должны представлять только те строки, которые выделены жирным шрифтом и начинаются с присваивания значений двум переменным — Sun_temp и $pw_temp с использованием отправленных имени пользователя и пароля. Затем выдается запрос к MySQL на поиск пользователя с именем Sun temp, и если будет возвращен результат, значение его первой строки присваивается переменной Srow. (Поскольку имя пользователя уникально, возвращена будет только одна строка.) Потом создаются переменные Ssaltl и $salt2 с двумя произвольными строками, которые затем добавляются до и после отправленного пароля Spw temp. После этого получившаяся в результате строка передается функции md5, которая возвращает 32-символьное шестнадцатеричное значение, присваиваемое переменной Stoken.

Теперь остается лишь сравнить значение переменной Stoken со значением, хранящимся в базе данных в четвертой графе, которая при начале отсчета с нуля соответствует графе 3. То есть Srow[3] содержит предыдущую лексему, вычисленную для «посыпанного солью» пароля. Если значения совпадают, выдается строка приветствия, в которой содержится обращение к пользователю по его настоящему имени (рис. 13.4). В противном случае выдается сообщение об ошибке. Как уже упоминалось, это сообщение всегда содержит одну и ту же информацию независимо от того, существует такое имя пользователя или нет, поскольку потенциальный взломщик или тот, кто подбирает пароли, получает в результате этого минимум полезной для себя информации.

Вы можете самостоятельно испытать эту программу в работе, вызвав ее в браузере и набрав имя пользователя bsmith и пароль mysecret (или набрав пару pjones и acrobat), то есть те значения, которые были сохранены в базе данных программой из примера 13.3.