Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Aktualizacja kodu pod PHP 8.1
Forum PHP.pl > Forum > Przedszkole
alkesz1718
Witam, mam pewien problem z skryptem, otórz na wersji PHP 7.3 oraz 7.4 działa prawidłowo ale przy PHP 8.0 oraz 8.1 pojawiają się błędy:
Cytat
Warning: Undefined array key "pozdrowienie" in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 42

Deprecated: strip_tags(): Passing null to parameter #1 ($string) of type string is deprecated in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 42

Warning: Undefined variable $error in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 49

Fatal error: Uncaught Error: Undefined constant "send" in /home/p557631/public_html/engine/modules/pozdro/dotp.php:78 Stack trace: #0 /home/p557631/public_html/engine/cache/system/plugins/c2e2f04059af1dae22e2bb3361382e08.php(58): include() #1 /home/p557631/public_html/engine/init.php(1059): include_once('/home/p557631/p...') #2 /home/p557631/public_html/index.php(25): require_once('/home/p557631/p...') #3 {main} thrown in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 78


całyt kod tego pliku to:
  1. <?php
  2.  
  3. ini_set( 'display_errors', 'On' );
  4. error_reporting( E_ALL );
  5.  
  6. if(!defined('DATALIFEENGINE'))
  7. {
  8. die("Hacking attempt!");
  9. }
  10. require_once (ENGINE_DIR . '/modules/pozdro/data/pozdro_config.php');
  11. require_once (ENGINE_DIR . '/modules/pozdro/language/admin.lng');
  12. $active = $pozdro_config['online'];
  13.  
  14. function clickable_links($text)
  15. {
  16.  
  17. $text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text);
  18.  
  19. $ret = ' ' . $text;
  20.  
  21. $ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
  22.  
  23. $ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);
  24.  
  25. $ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
  26.  
  27. // Remove our padding..
  28. $ret = substr($ret, 1);
  29. return $ret;
  30. }
  31.  
  32. // Początek
  33. if ( $active == "yes") {
  34. $description = "<center>{$pozdro_config['title']}</center>";
  35. }
  36. if($is_logged)
  37. {
  38.  
  39. if(isset($_POST))
  40. {
  41.  
  42. $tresc = clickable_links(strip_tags($_POST['pozdrowienie']));
  43.  
  44. if(strlen($tresc) > $pozdro_config['limit_pozdro'])
  45. {
  46. $error.= "<br /><div style='padding: 5px;background: #dadada;color: #000;border-left: #f00 35px solid;height: 34px;'><i class='fa fa-warning' style='color: #c3c3c3;margin-left: -35px;float: left;font-size: 25px;'></i><span style='position: relative;float: left;'>{$langs1['error_4']}</span></div><br />";
  47. }elseif($tresc == "")
  48. {
  49. $error.= "<br /><div style='padding: 5px;background: #dadada;color: #000;border-left: #f00 35px solid;height: 34px;'><i class='fa fa-warning' style='color: #c3c3c3;margin-left: -35px;float: left;font-size: 25px;'></i><span style='position: relative;float: left;'>{$langs1['error_3']}</span></div><br />";
  50.  
  51. }
  52. if($error == "")
  53. {
  54.  
  55. $added_time = time() + ($config['date_adjust'] * 60);
  56. $thistime = date( "Y-m-d H:i:s", $added_time );
  57.  
  58. $qq = "INSERT INTO `dle_pozdro` (`id` ,`pozdro` ,`userid` ,`date`,`approve`)VALUES (NULL, '$tresc', '$member_id[user_id]', '$thistime', '0');";
  59. $db->query($qq);
  60. $error.= "<br /><div style='padding: 5px;background: #dadada;color: #000;border-left: #0aae00 35px solid;height: 34px;'><i class='fa fa-check' style='color: #c3c3c3;margin-left: -34px;float: left;font-size: 25px;'></i><span style='position: relative;float: left;'>{$langs1['error_2']}</span></div><br />";
  61.  
  62. $error.= "<a href='java script:history.back()' style='text-decoration: none;'><div style='padding: 5px;background: #0aae00;width: 100px;text-align: center;color: #ffffff;float: right;'><i class='fa fa-reply' style='padding-right: 5px;'></i>{$langs1['back']}</div></a>";
  63. }
  64. else
  65. {
  66. $error.= "<div style='padding: 5px;background: #dadada;color: #000;border-left: #ff6300 35px solid;height: 34px;'><i class='fa fa-exclamation' style='color: #c3c3c3;margin-left: -28px;float: left;font-size: 25px;'></i><span style='position: relative;float: left;'>{$langs1['error_1']}</span></div><br />";
  67.  
  68. $error.= "<a href='java script:history.back()' style='text-decoration: none;'><div style='padding: 5px;background: #0aae00;width: 100px;text-align: center;color: #ffffff;float: right;'><i class='fa fa-reply' style='padding-right: 5px;'></i>{$langs1['back']}</div></a>";
  69. }
  70. }
  71. }
  72. else
  73. {
  74.  
  75. $echo = "{$langs1['error_5']}";
  76. }
  77. if ( $active == "yes") {
  78. if(!isset($_POST[send]))
  79. {
  80. $echo.="<center><title>{$pozdro_config['title']}</title></center>";
  81. $echo.="<center><B>{$pozdro_config['desc']}</B><br><br>";
  82. $echo.="<form action=\"\" method=\"POST\">";
  83. $echo.="Wpisz pozdrownienie (maksymalnie {$pozdro_config['limit_pozdro']} znaków) :<br /><br />";
  84. $echo.="<textarea name=\"pozdrowienie\" cols=\"40\" rows=\"10\"></textarea><br /><br />";
  85.  
  86. $echo.="<input type=\"submit\" class=\"bbcodes\" name=\"send\" value=\"{$langs1['send']}\">";
  87. $echo.="</form></center>";
  88. }else{
  89.  
  90. $echo = $error;
  91. }
  92. }
  93. else{
  94. $echo = "<div style='padding: 5px;background: #dadada;color: #000;border-left: #f00 35px solid;height: 34px;'><i class='fa fa-warning' style='color: #c3c3c3;margin-left: -35px;float: left;font-size: 25px;'></i><span style='position: relative;float: left;'>{$langs1['status_offline']}</span></div><br />";
  95.  
  96. }
  97.  
  98. // Koniec
  99.  
  100. $tpl->load_template('static.tpl');
  101. $tpl->set( '{views}', number_format($static_result['views'], 0, ',', ' ') );
  102. $tpl->set('{description}', $description);
  103. $tpl->set('{static}', $echo);
  104. $tpl->set('{pages}', '');
  105. $tpl->set_block( "'\\[print-link\\](.*?)\\[/print-link\\]'si", "" );
  106. $tpl->compile('content');
  107. $tpl->clear();
  108.  
  109.  
  110. ?>


Wiem że problem jest z kodami:
1: $tresc = clickable_links(strip_tags($_POST['pozdrowienie']));
2: if(strlen($tresc) > $pozdro_config['limit_pozdro'])
3: if(!isset($_POST[send]))

Więcej błędów nie wychwyciłem. Próbowałem w/w kody przerobić na np: $tresc = clickable_links(strip_tags($_POST['pozdrowienie'], ? ? )); (bez spacji między "?")
ale wtedy "błędy" znikały i pokazywała się cała biała strona.

Niestety nie znam się aż tak dobrze na PHP dlatego byłbym wdzięczny za przystosowanie w/w skryptu pod PHP 8.1 (+) wraz z dopisanymi komentarzami co zostało zmienione aby na przyszłość mógł sam rozwiązać takie problemy smile.gif
nospor
$tresc = clickable_links(strip_tags($_POST['pozdrowienie'] ?? ''));

zas co do zmiennej $error, skoro gdzies do niej cos dodajesz
$error.= "<..."
to wypadaloby ja wpierw zadeklarowac:
$error='';

No i nie
$_POST[send]
a
$_POST['send']
No to sa podstawy wink.gif
alkesz1718
Poprawiłem już te zmienne ale pojawiły się kolejne błędy:
Cytat
Warning: Undefined variable $echo in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 80

Warning: Undefined array key "views" in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 101

Deprecated: number_format(): Passing null to parameter #1 ($num) of type float is deprecated in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 101


Przy $echo gdy próbowałem wywalić kropki to nie wyświetla mi formularza a w formacie echo "tekst"; nie może być bo wtedy nie jest w tym miejscu co powinien być, no i dodatkowo ta zmienna z number_format():
nospor
Ja ci nie kazalem wywalac kropek, tylko deklarowac zmiennej do ktorych uzywasz kropek.
Generalnie wszydstkie bledy so podobne do tego co ci juz ppoprawialem wiec nie wiem w czym masz problem
alkesz1718
Źle zrozumiałęm i poprawiłem jak powinno być. błędy z error i echo już zniknęły ale pozostają jeszcze 2, amianowicie z zmienną $tpl->set( '{views}', number_format($static_result['views'], 0, ',', ' ') ); gdzie wywala mi błąd:
Cytat
Warning: Undefined array key "views" in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 101

Deprecated: number_format(): Passing null to parameter #1 ($num) of type float is deprecated in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 101

oraz jest inny błąd gdzie po przesłaniu danych z formularza jest błąd z zmienną: $added_time = time() + ($config['date_adjust'] * 60); gdzie pokazuje bład:
Cytat
Fatal error: Uncaught TypeError: Unsupported operand types: string * int in /home/p557631/public_html/engine/modules/pozdro/dotp.php:55 Stack trace: #0 /home/p557631/public_html/engine/cache/system/plugins/c2e2f04059af1dae22e2bb3361382e08.php(58): include() #1 /home/p557631/public_html/engine/init.php(1059): include_once('/home/p557631/p...') #2 /home/p557631/public_html/index.php(25): require_once('/home/p557631/p...') #3 {main} thrown in /home/p557631/public_html/engine/modules/pozdro/dotp.php on line 55
nospor
No ale ty cos sie uczysz z odpowiedzi ktore dostajesz czy poprostu kopiujesz bezmyslnie? Przeciez jak sobie poradzic z nieokreslonym indeksem juz ci podawalem. No ucz sie troche z tego co dostajesz.

No a z tym mnozeniem to komunikat bledu chyba tez wyrazny jest. Probujesz mnozyc tekst przez liczbe. Od kiedy to teksty sie mnozy? Jesli tekstem jest liczba, to wpierw zrzutuj to na liczbe. Uzyj np. intval()
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.