PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kuzmit4
Отправлено: 10 Сентября, 2020 - 16:19:32
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Есть скрипт для генерации .htpasswd. На 7 версии PHP работает нормально, на 8 версии PHP вылетает ошибка.
PHP:
скопировать код в буфер обмена
  1. 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, опыта мало, прошу не пинать.

PHP:
скопировать код в буфер обмена
  1. function crypt_apr1_md5($plainpasswd)
  2. {
  3.     $salt = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789as"), 0, 8);
  4.     $len = strlen($plainpasswd);
  5.     $text = $plainpasswd.'$apr1$'.$salt;
  6.     $bin = pack("H32", md5($plainpasswd.$salt.$plainpasswd));
  7.     for($i = $len; $i > 0; $i -= 16) { $text .= substr($bin, 0, min(16, $i)); }
  8.     for($i = $len; $i > 0; $i >>= 1) { $text .= ($i & 1) ? chr(0) : $plainpasswd{0}; }
  9.     $bin = pack("H32", md5($text));
  10.     for($i = 0; $i < 1000; $i++)
  11.     {
  12.         $new = ($i & 1) ? $plainpasswd : $bin;
  13.         if ($i % 3) $new .= $salt;
  14.         if ($i % 7) $new .= $plainpasswd;
  15.         $new .= ($i & 1) ? $bin : $plainpasswd;
  16.         $bin = pack("H32", md5($new));
  17.     }
  18.     for ($i = 0; $i < 5; $i++)
  19.     {
  20.         $k = $i + 6;
  21.         $j = $i + 12;
  22.         if ($j == 16) $j = 5;
  23.         $tmp = $bin[$i].$bin[$k].$bin[$j].$tmp;
  24.     }
  25.     $tmp = chr(0).chr(0).$bin[11].$tmp;
  26.     $tmp = strtr(strrev(substr(base64_encode($tmp), 2)),
  27.     "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
  28.     "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
  29.  
  30.     return "$"."apr1"."$".$salt."$".$tmp;
  31. }
  32.  
  33. // Задаём логин и пароль
  34. $username = 'username';
  35. $password = 'pAsSwOrD';
  36.  
  37. $encrypted_password = crypt_apr1_md5($password);
  38.  
  39. // Print line to be added to .htpasswd file
  40.  
  41. $outline = $username . ':' . $encrypted_password;
  42.  
  43. echo $outline;
  44.  
  45. // Или можно создать файл на диске
  46.  
  47. # file_put_contents('.htpasswd', $outline);
 
 Top
LIME
Отправлено: 10 Сентября, 2020 - 20:36:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 10679
Дата рег-ции: Нояб. 2010  


Помог: 320 раз(а)




Цитата:
Синтаксис доступа к смещению массивов и строк с фигурными скобками больше не поддерживается

(Добавление)
буду за гугл переводчика
(Добавление)

(Отредактировано автором: 10 Сентября, 2020 - 20:37:30)



-----
DDD
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB