Есть скрипт для генерации .htpasswd. На 7 версии PHP работает нормально, на 8 версии PHP вылетает ошибка.
Я так понимаю, что ругается на $plainpasswd{0}, за что отвечает этот кусок, как поменять чтобы нормально работало без ошибок ?
Я новичек в PHP, опыта мало, прошу не пинать.
PHP:
скопировать код в буфер обмена
function crypt_apr1_md5($plainpasswd) { $text = $plainpasswd.'$apr1$'.$salt; $bin = pack("H32", md5($plainpasswd.$salt.$plainpasswd)); for($i = $len; $i > 0; $i -= 16 ) { $text .= substr($bin, 0 , min(16 , $i)); } for($i = $len; $i > 0; $i >>= 1 ) { $text .= ($i & 1 ) ? chr(0 ) : $plainpasswd{0 }; } for($i = 0; $i < 1000; $i++) { $new = ($i & 1) ? $plainpasswd : $bin; if ($i % 3) $new .= $salt; if ($i % 7) $new .= $plainpasswd; $new .= ($i & 1) ? $bin : $plainpasswd; } for ($i = 0; $i < 5; $i++) { $k = $i + 6; $j = $i + 12; if ($j == 16) $j = 5; $tmp = $bin[$i].$bin[$k].$bin[$j].$tmp; } $tmp = chr(0 ).chr(0 ).$bin[11 ].$tmp; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); return "$"."apr1"."$".$salt."$".$tmp; } // Задаём логин и пароль $username = 'username'; $password = 'pAsSwOrD'; $encrypted_password = crypt_apr1_md5($password); // Print line to be added to .htpasswd file $outline = $username . ':' . $encrypted_password; echo $outline; // Или можно создать файл на диске # file_put_contents('.htpasswd', $outline);
|