Иллюстрированный самоучитель по PHP

Авторизация с помощью заголовка

Итак, начнем сценарий. Командой file считаем файл построчно в массив…

Примечание
Команда file помещает в массив указанный в ее параметре файл, помещая каждую строку файла в отдельный элемент массива
.

…и начнем сравнивать пару "логин-пароль" каждой строчки файла (т. е. каждый элемент массива) с той парой, что мы получили от пользователя. Массив даже нет нужды именовать – достаточно просто указать команду file в цикле обработки всех элементов массива foreach (как упоминалось в гл. 3, этот оператор считывает каждый элемент указанного в его параметрах массива в переменную с именем, указанным после ключевого слова as, и выполняет для каждого элемента массива код, указанный в фигурных скобках).

<?php
foreach (file("passw/passwr") as $k)
{

Комментарий
Оператор foreach будет работать только в РНР 4.0 и выше. Если вы можете использовать лишь РНРЗ, то вместо этого оператора можно использовать цикл for, указав в его параметрах величину массива:

$b=file("passw/passwr");
for ($i = 1; $i < $sizeof($b); $i++)
{

Для удобства можно записать значение очередного элемента массива в переменную:

$value=$k[$i];

Поскольку каждая строчка файла завершалась символом перевода строки (вернее, двумя символами – с ASCII-кодами 10 и 13), то его необходимо удалять перед сравнением (в введенных пользователем значениях символа перевода строки-то нет!) – это делает функция substr.

if (substr($k, 0, – 2)=="$PHP_AUTH_USER $PHP_AUTH_PW") {

Примечание
Команда substr предназначена для выделения из строки ее части. Строка (или переменная, ее содержащая) должна быть указана в первом параметре команды. Второй параметр – позиция, с которой начинается выделяемая часть (вернее, число символов, которые необходимо пропустить до начала выделения части строки), а третий – количество выделяемых символов
.

Второй параметр может быть и отрицательным. В этом случае отсчет позиции начала выделяемой части будет идти не с начала, а с конца строки. Иными словами, в результате выполнения команды substr ("qwertyuiop", – 3, 2) из строки "qwertyuiop" будет выделена строка io – она начинается за 3 символа от конца исходной строки и продолжается 2 символа.

Третий параметр тоже может быть отрицательным. В этом случае будет выделена строка, начинающаяся с указанной во втором параметре позиции и оканчивающаяся за столько символов до конца строки, сколько указано в третьем параметре. Иными словами, в результате выполнения команды substr ("qwertyuiop", 3, – 2) из строки "qwertyuiop" будет выделена строка rtyui – она начинается после 3 символа исходной строки и заканчивается за 2 символа до ее окончания.

В том случае, если параметры установлены так, что выделить согласно им символы из строки оказывается невозможно (например, второй параметр больше, чем число ее символов), то результатом работы команды substr будет пустая строка – "".

Если в файле с паролями была найдена пара "логин-пароль", совпадающая с данными, введенными пользователем, то присвоим переменной $rez значение 1. Впоследствии ниже, когда нам надо будет проверить, совершилась ли авторизация, просто будем проверять значение этой переменной – так проще, чем вновь проводить просмотр файла паролей.

$rez=l;
} }
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.