Нам требуется вторая запись, чтобы подтвердить, что измененный пароль был введен

в правильно. Форма добавляет пояснительный текст.

мой% пар;

$par{·title'} = "Изменить пароль для $page";

если ($ ENV{REQUEST_METHOD} eq 'GET') {

$par{ 1 body' } = « "EOF" ;

<table CELLPADDING=10 BGCOLOR="#FFFFCC"><tr><td>

<form method=post action="pass.cgi?$page">

новый пароль: < brxinput type = "password" name = P asslxp >

новый пароль еще раз: < brx input type= "password" name = P ass 2 xp >

<input type="submit" value="Изменить пароль">

</formx/trx/тд>

</таблица>

Используйте эту форму, чтобы изменить свой пароль. Выберите пароль не менее

восемь символов. Включайте прописные и строчные буквы, цифры и знаки препинания. Если вы забудете свой пароль, вам придется обратиться к своей вики.

администратор, чтобы изменить ваш пароль для вас. Проверьте сейчас, чтобы убедиться

вы знаете, кто этот человек:

<ул>

clixahref=wiki.cgi?Системный администратор>Системный администратор</a>

</ul>

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

альтернатива запроса возникает, когда измененная форма отправляется в POST:

} еще {

читать (стандартный ввод, $_,

$ENV{CONTENT_LENGTH});


238

ПРОВЕРЕННЫЕ КОМПОНЕНТЫ WIKI

мой ($тело,%тело);

foreach $_ (разделить (/&/, $_)) {

С/\+//г;

s/\%(..)/pack('C 1 , hex($l))/geo;

($_, $body) = разделить (/ = /, $_, 2);

$тело{$_} = $тело;

>

Убедитесь, что два поля пароля совпадают, и если они не совпадают, предложите пользователю

Попробуйте еще раз.

мой $pass = $body{Passl};

если ($body{Pass2} не $pass) {

$par{'тело'} = « " E 0 F 2 "

<hl>Ошибка</hl>

Два пароля не совпадают. Пожалуйста, создайте резервную копию

форму пароля и повторите свой новый пароль так же

способ в обоих полях пароля.

E0F2

} еще {

В противном случае зашифруйте и сохраните результат в соответствующей позиции в доступе.

файл, указанный в файле управления каталогом .htaccess.

моя соль $ = substr (время (), -2, 2);

мой $crypt = crypt($pass, $salt);

открыть (F, ".htaccess");

мой $файл;

пока (<F>) {

$file = $1, если /^AuthUserFile (.*)/

}

закрыть (F);

открыть (F, "+<$file") или умереть($!);

мой $текст = "" ;

пока (<F>) {

s/$page:.*/$page:$crypt/;

$текст .= $_;

}

мой $SEEK_SET = 0;

искать (F, 0, $SEEK_SET) или умереть ($!);

напечатать F $текст;

закрыть (F);


ДОПОЛНИТЕЛЬНЫЕ ДОПОЛНИТЕЛЬНЫЕ КОМПОНЕНТЫ

239

В этом случае файл доступа не перезаписывается; только конкретная запись. После

это, пользователь получает подтверждение изменения:

$par { 'body * } = «" EOF 3";