Нам требуется вторая запись, чтобы подтвердить, что измененный пароль был введен
в правильно. Форма добавляет пояснительный текст.
мой% пар;
$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";