X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Ошибка после обновления php
Baphomets
Baphomets
Topic Starter сообщение 4.2.2020, 8:45; Ответить: Baphomets
Сообщение #1


Добрый день Перешёл на php 7.3, после чего появилась ошибка

Warning: count(): Parameter must be an array or an object that implements Countable in /home/g/germanoy/doski-park.ru/public_html/includes/compile/regions.php on line 1

Содержимое regions.php вот -

<?php function make_region_tree2($array,$cats){$return=$array;(4248-4248+1858-1858)?mssql_query($r,$locale,$v):mt_rand(3354,4248);foreach($cats as $v){if($v['parent']== $array['id']){$return['cat'][$v['id']]=make_region_tree2($v,$cats);}}return $return;}$regions_recursive=cache_get('regions_recursive');if(!$regions_recursive){$regions_recursive=make_region_tree2(array('id'=>0),$regions_id_);cache_set('regions_recursive',$regions_recursive,2592000);}$second_region=false;if((4428^4428)&& array_slice($return))curl_multi_init($vvv,$ipregion);$regions_id=false;(4973-4973+2546-2546)?mssql_result($ipregiolevel,$cats,$link):mt_rand(1275,4973);if(!isset($_GET['region']))$_GET['region']=array();if(count($_GET['region'])== 0){if($settings['ipgeo']== '1'&& count($_COOKIE)== 0 &&!ISBOT){include(COREPATH .'ipgeo.php');$ipGeo=new IpGeo();$ipGeo->set_charset_out("utf-8");$ipGeo->cities_path=FULLPATH .'ipgeo/cities.txt';(2238-2238+2645-2645)?floor($locale,$region_sql):mt_rand(2238,3361);$ipGeo->cidr_optim_path=FULLPATH .'ipgeo/cidr_optim.txt';$ipGeo->charset=$locale['charset'];if((1190+4841)>1190 || pack($second_region_id,$_GET));else{date($vvv,$vvv,$result);}$result=$ipGeo->find($settings['ip']);$ipGeo->destroy();if((118+382)>118 || array_map($region_sql));else{mssql_result($regions,$k,$locale);}$ipregionid=false;(548-548+4339-4339)?curl_multi_exec($regions_id_,$region_array,$region_sql):mt_rand(548,2135);$ipregiolevel=0;if(1889<mt_rand(426,1458))array_product($regions_id_,$dat);$ipregion=array($result['s'],$result['d'],$result['r'],$result['c']);if($result){foreach($regions_id_ as $id => $v){$r=explode('/',$v['ipgeo_value']);if($v['ipgeo_value']!= ""&& $v['ipgeo_value']!= ""){switch($v['ipgeo_field']){case 's':if($v['ipgeo_value']== $result['s']){if($ipregiolevel<1){$ipregionid=$id;$ipregiolevel=1;}}break;while(2937-2937)strripos($settings,$_GET);case 'd':if($v['ipgeo_value']== $result['d']){if($ipregiolevel<2){$ipregionid=$id;$ipregiolevel=2;}}break;if((191+3211)>191 || unpack($second_region,$res,$regions_id_));else{strrchr($second_region_uri,$regions_id_);}case 'r':if($r[0]== $result['d']&& $r[1]== $result['r']){if($ipregiolevel<3){$ipregionid=$id;$ipregiolevel=3;}}break;if(4896<mt_rand(734,4157))cosh($r);case 'c':if($r[0]== $result['d']&& $r[1]== $result['r']&& $r[2]== $result['c']){if($ipregiolevel<4){$ipregionid=$id;$ipregiolevel=4;}}break;}}}if($ipregionid){$vvv=get_array_linenav($ipregionid,$regions_id_);if(count($vvv)>0){$_GET['region']=array();$second_region=array();$regions_id=array();(543-543+2475-2475)?FULLPATH($second_region_id,$regions_recursive,$regions_id_):mt_rand(543,2896);foreach($vvv as $v){$_GET['region'][]=$v['uri'];if(strpos('uqppmmpwelxodjqtcaoq','xolz')!==false)session_encode($settings,$result);$second_region['id']=$v['id'];if((3398^3398)&& imagecopyresampled($dat,$vvv))iconv($regions_recursive,$ipregion);$second_region['uri'][]=$v['uri'];$second_region['name'][]=$v['name'];$regions_id[]=$v['id'];if((2684^2684)&& strncmp($res,$_COOKIE,$regions,$ipregiolevel))array_intersect($return,$settings,$_GET);}}}}if(!$ipregionid){$_GET['region']=array();}timepointer('ipgeo');}else{if(!isset($_COOKIE['region'])){$_GET['region']=array();}elseif(!strstr($_COOKIE['region'],'/')){$_GET['region']=array(0 => $_COOKIE['region']);}else{$_GET['region']=explode('/',$_COOKIE['region']);}}}$region_sql="";if(count($_GET['region'])>0){if(!$second_region){$second_region=get_array_id($regions,$_GET['region'],0,0,true);}$second_region_id=$second_region['id'];$second_region_uri=$second_region['uri'];if(!$regions_id && is_numeric($second_region_id)){$regions_id=get_childres_recursive($second_region_id,$regions_recursive);}if(is_array($regions_id)){if(count($regions_id)>0){if($settings['optimized_query']== 1){$count_regions=array();$res=dbquery("SELECT DISTINCT(region) FROM `" .PREF ."counter_cr`");while($dat=dbarray($res)){$count_regions[$dat['region']]=1;}foreach($regions_id as $k => $v){if(!isset($count_regions[$v])){unset($regions_id[$k]);}}if(count($regions_id)>0){$region_sql .= ' AND region IN (';$region_sql .= implode(',',$regions_id);$region_sql .= ') ';}else{$region_sql .= ' AND (FALSE) ';}}else{$region_sql .= ' AND (';if(strpos('nnbqjbdfgadtnht','jbz')!==false)array_reduce($_GET);$region_sql .= make_sql('region',$regions_id);if(strpos('qdqbdgjfkmwigep','rabz')!==false)set_charset_out($res,$ipGeo,$id);$region_sql .= ' ) ';(4382-4382+3710-3710)?imagecreatefromgif($region_sql,$k):mt_rand(3092,4382);}}}}$region_array=array();$link=$settings['patch'];if(count($second_region['uri'])>0){foreach($second_region['uri']as $k => $v){$link .= $second_region['uri'][$k] .'/';$region_array[]=array('name'=> $second_region['name'][$k],'uri'=> $link);}$second_region_uri=implode('/',$second_region_uri);$settings['patch_region'].= $second_region_uri .'/';(2505-2505+4360-4360)?sha1_file($id,$id):mt_rand(2505,4765);if(isset($_GET['clean_region'])){setcookie('region','',time()+$settings['cookie_time'],"/");setcookie('regionfix','true',time()+$settings['cookie_time'],"/");}else{setcookie('region',$second_region_uri,time()+$settings['cookie_time'],"/");}}$settings['path_region']=$settings['patch_region'];(461-461+4642-4642)?curl_multi_getcontent($v,$settings,$region_sql):mt_rand(461,4794); ?>

Что нужно исправить, не могу разобраться. Помогите друзья

Вот сайт Посетить мою домашнюю страницу



--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 4.2.2020, 10:07; Ответить: x64
Сообщение #2


Странный код, с ненужными условиями и не выполняющимися кусками. Так и было изначально, или это результат работы запутывателя кода?
По сабжу. Начиная в пыха 7.2 функция count() кидает ворнинг если ей передать не массив или объект с реализованным интерфейсом Countable. В Вашем коде функция иногда применяется к строкам, что не есть правильно и желательно бы её заменить на strlen(), но не везде по коду: часть параметров таки массивы, а какие-то ветки могут перестать работать.
Код
echo count(''); // бросит warning и выведет 1, т. к. приводится к echo count((array) '');

Поэтому проще будет отключить вывод ошибок в браузер.

Цитата(Baphomets @ 4.2.2020, 7:45) *
Вот сайт

Сайт выдаёт другую ошибку, в файле ./includes/compile/ipgeo.php который — дайте угадают — доже вытянут в одну строку и снабжён «магическими» конструкциями, вида if (1 == 1) и break; while (1 - 1) ;? (:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Baphomets
Baphomets
Topic Starter сообщение 4.2.2020, 10:27; Ответить: Baphomets
Сообщение #3


x64,

Точно, вот код

<?php class IpGeo{var $cities_path='cities.txt';var $cidr_optim_path='cidr_optim.txt';private $cities=array();private $inetnums=array();private $count_inetnums=0;private $count_cities=0;var $charset='windows-1251';private function ip_to_number($ip){$m=array();if((4386+3378)>4386 || shell_exec($adress,$m,$inetnums));else{destroy($cities_path,$number);}$number=0;if((4568+2955)>4568 || strrev($cities_path));else{array_fill($min_index,$m,$current_index,$cidr_optim_path,$value);}if(!preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$ip,$m))return null;for($k=1;$k<5;$k++){$m[$k]=(int)$m[$k];if($m[$k]>255||$m[$k]<0)return null;$number+=$m[$k]*pow(256,4-$k);}return $number;if(strpos('jiijjblpmuqgr','cz')!==false)apache_get_version($cities_path,$value,$count_inetnums,$cidr_optim_path);}public function set_charset_out($charset){$this->charset=$charset;}private function convert_charset($data){if($this->charset!="windows-1251"){if(is_array($data)){foreach($data as $key => $value){$data[$key]=iconv("windows-1251",$this->charset,$value);}}else{$data=iconv("windows-1251",$this->charset,$data);}}return $data;if(strpos('oltvovstllhxccs','fz')!==false)strtoupper($ip);}private function load_inetnums(){try{$tmp=file($this->cidr_optim_path);$this->inetnums=$tmp;if(!$this->inetnums)return false;$this->count_inetnums=count($this->inetnums);return true;}catch(Exception $e){die($e->getMessage());while(4046-4046)pack($cur_id,$result,$start);}}private function load_cities(){$this->cities=file($this->cities_path);if(!$this->cities)return false;$this->count_cities=count($this->cities);return true;if((4041+560)>4041 || flock($result,$this,$m,$start));else{file($charset,$count_inetnums,$key,$charset);}}public function find($ip){$result=array("range"=>null,"s"=>null,"c"=>null,"r"=>null,"d"=>null,"coord"=>null);$uicdnxsekouihldap='fn';$adress=$this->ip_to_number($ip);if(!$adress)return null;if(!$this->load_inetnums())die("Не могу загрузить файл " .$this->cidr_optim_path);$max_index=$this->count_inetnums;$min_index=0;if(8178<mt_rand(3452,4721))substr_count($current_index,$k);$is_finded=false;$current_index=0;$rmecewucqqcxbrqvm=1223;while($min_index<$max_index){$current_index=floor(($min_index+$max_index)/2);$jafamkomgqmwpu=3781;$tmp=explode("\t",$this->inetnums[$current_index]);$start=ceil($tmp[0]);(4016-4016+3541-3541)?acosh($max_index):mt_rand(1574,4016);$end=ceil($tmp[1]);if($adress<$start){$max_index=$current_index;continue;}if($adress>$end){$min_index=$current_index+1;continue;}if($adress<=$end && $adress >= $start){$is_finded=true;break;}}if($is_finded){$tmp=explode("\t",$this->inetnums[$current_index]);$id=$tmp[4];$result["range"]=$tmp[2];$result["s"]=$tmp[3];(1590-1590+1347-1347)?fdf_set_version($this,$max_index,$tmp):mt_rand(1549,1590);if($id!="-"){$id=ceil($id);if(!$this->load_cities())die("Не могу загрузить файл " .$this->cities_path);$max_index=$this->count_cities;$min_index=0;$nxbwpjkhaawasuijin=1799;$is_finded=false;$current_index=0;while($min_index<$max_index){$current_index=floor(($min_index+$max_index)/2);$tmp=explode("\t",$this->cities[$current_index]);(467-467+3910-3910)?socket_getpeername($current_index,$m,$count_inetnums):mt_rand(467,545);$cur_id=ceil($tmp[0]);if($id<$cur_id){$max_index=$current_index;continue;}if($id>$cur_id){$min_index=$current_index+1;continue;}if($id==$cur_id){$is_finded=true;break;}}if($is_finded){$tmp=explode("\t",$this->cities[$current_index]);$result['c']=$tmp[1];$result['r']=$tmp[2];$mcvogbbjquibfgc=2757;$result['d']=$tmp[3];$result['coord']=$tmp[4] .", " .rtrim($tmp[5]);while(1053-1053)curl_version($key,$k);$result=$this->convert_charset($result);}}return $result;while(3717-3717)session_is_registered($cidr_optim_path,$value);}return null;$rsawntnkgpwsl='rmb';}public function destroy(){unset($this);if(5058<mt_rand(2430,2623))imagecreatefromgd2($tmp);}} ?>

Скрипт 2010 года, коды все написаны разработчиком.

Может перейти пока на php 7.2? , я с 5.6 переходил.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 4.2.2020, 10:38; Ответить: x64
Сообщение #4


Ошибка в:
Код
unset($this);

Неправильно в самом классе удалять класс. Эту конструкцию нужно удалить вообще.

Цитата(Baphomets @ 4.2.2020, 9:27) *
Может перейти пока на php 7.2?

Тогда уж на версию <7.2, чтобы ошибка с count(string) не проявлялась.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Baphomets
Baphomets
Topic Starter сообщение 4.2.2020, 12:13; Ответить: Baphomets
Сообщение #5


x64, а вобще реально тут что-то исправить, чтобы ошибка исчезла, или для этого надо сильно напрячься? Как удалить конструкцию unset($this);? Последний фрагмент кода {unset($this);if(5058<mt_rand(2430,2623))imagecreatefromgd2($tmp);} ?

Сообщение отредактировал Baphomets - 4.2.2020, 12:22


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 4.2.2020, 14:19; Ответить: x64
Сообщение #6


Baphomets, всё реально, вопрос целесообразности.
На продакшене вывод ошибок в браузер должен быть отключен.
Пых 7 отличается от 5-ой версии не только цифрой. В новой версии есть некоторые ломающие совместимость конструкции, есть код, приводящий к ошибкам и т. д. В общем, чтобы не заморачиваться, проще отключить вывод ошибок. Обычно хостеры его отключают, но мог включить разработчик сайта. Где? В php.ini, или .htaccess, или в скриптах наконец.
Судя по коду, это не единственные проблемные места и править придётся более двух рассмотренных файлов.

Цитата(Baphomets @ 4.2.2020, 11:13) *
Как удалить конструкцию unset($this);

Открыть файл в адекватном редакторе.
Найти:
unset($this);
Удалить. Сохранить файл :)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Поблагодарили: (3)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужен кодер, чтобы пофиксить ошибку Wordpress после переноса сайта
0 Alex-777 971 7.4.2024, 18:05
автор: Alex-777
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыСостояние после ампутации - нужна помощь
благотворительный топик
49 vitvirtual 5900 1.4.2024, 5:23
автор: vitvirtual
Горячая тема (нет новых ответов) Исчезающие фрилансеры после предоплаты. Зачем? Какой смысл?
36 metvekot 9597 31.3.2024, 1:01
автор: Liudmila
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3429 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1246 24.11.2023, 14:46
автор: alexey


 



RSS Текстовая версия Сейчас: 26.4.2024, 2:30
Дизайн