[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Исправить ошибку. Array and string offset access s
kuzmit4
Есть скрипт для генерации .htpasswd. На 7 версии PHP работает нормально, на 8 версии PHP вылетает ошибка.
Fatal error: Array and string offset access syntax with curly braces is no longer supported in /path/htpasswd.php on line 8


Я так понимаю, что ругается на $plainpasswd{0}, за что отвечает этот кусок, как поменять чтобы нормально работало без ошибок ?
Я новичек в PHP, опыта мало, прошу не пинать.

function crypt_apr1_md5($plainpasswd)
{
$salt = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789as"), 0, 8);
$len = strlen($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}; }
$bin = pack("H32", md5($text));
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;
$bin = pack("H32", md5($new));
}
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;
$tmp = strtr(strrev(substr(base64_encode($tmp), 2)),
"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);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.