у меня есть защищенный каталог, где только пользователь на .htpasswd может получить доступ, но иногда он требует, чтобы пользователь изменил пароль или имя пользователя, отредактировал определенный пароль имени пользователя к его имени пользователя его сам
sample users
kevien : kka
mike : mike
И позвольте, говорят, что я хочу изменить kevien на XYZ
И то же самое переходит к паролю
Конечно, это просто пример, который прочитает ваш текущий файл, найдет заданное имя пользователя и изменит либо пароль, либо имя пользователя.
Пожалуйста, имейте в виду, что этот код не безопасен, и вам все равно придется разобрать имя пользователя и пароль, чтобы не сломать ваш файл.
$username = $_POST['user'];
$password = $_POST['pass'];
$new_username = $_POST['newuser'];
$new_password = $_POST['newpass'];
$action = $_POST['action'];
//read the file into an array
$lines = explode("\n", file_get_contents('.htpasswd'));
//read the array and change the data if found
$new_file = "";
foreach($lines as $line)
{
$line = preg_replace('/\s+/','',$line); // remove spaces
if ($line) {
list($user, $pass) = split(":", $line, 2);
if ($user == $username) {
if ($action == "password") {
$new_file .= $user.':'.$new_password."\n";
} else {
$new_file .= $new_username.':'.$pass."\n";
}
} else {
$new_file .= $user.':'.$pass."\n";
}
}
}
//save the information
$f=fopen(".htpasswd","w") or die("couldn't open the file");
fwrite($f,$new_file);
fclose($f);
Don't. Храните свой authdb в базе данных, например, с помощью mod_auth_mysql.
Погуглил "php generate htpasswd", получил эту статью: Как создать пароль для файла .htpasswd с помощью PHP .
Ключевая строка выглядит так:
$password = crypt($clearTextPassword, base64_encode($clearTextPassword));
Итак, я предполагаю, что вы читали бы содержимое файла с помощью file_get_contents
, разобрали его в ассоциативный массив, изменили соответствующие записи (зашифровав пароль, как показано выше), запишите массив обратно в строку и используйте file_put_contents
, чтобы записать файл обратно.
Однако это определенно не стандартная практика. Похоже на работу с базой данных. Если вам кажется странным настраивать весь сервер базы данных, и ваш хост поддерживает это, SQLite может быть хорошим выбором.