Редакция нна код за инфо на система за да работи на PHP 7.x

VoodooNet

Registered
Ето го кода:

Код:
<center>
<?
$ip=$_SERVER['REMOTE_ADDR'];
echo "<b>Вашият IP Адрес:</b> $ip";
?>
<br />
<?
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo "<b>Вашият хост е:</b> $host";
?>
<br />
<?php
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') )
{
   if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Netscape') )
   {
     $browser = 'Netscape (Gecko/Netscape)';
   }
   else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') )
   {
     $browser = 'Mozilla Firefox (Gecko/Firefox)';
   }
   else
   {
     $browser = 'Mozilla (Gecko/Mozilla)';
   }
    if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') )
   {
     $browser = 'Chrome (WebKit)';
   }
}
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') )
{
   if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') )
   {
     $browser = 'Opera (MSIE/Opera/Съвместим)';
   }
   else
   {
     $browser = 'Internet Explorer (MSIE/Съвместим)';
   }
}
else
{
   $browser = 'Друг браузър';
}

echo "<b>Вашия Браузър:</b> $browser";
?>
<br />
<?
      $OSList = array
      (
              // Match user agent string with operating systems
              'Windows 3.11' => 'Win16',
              'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',
              'Windows 98' => '(Windows 98)|(Win98)',
              'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
              'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
              'Windows Server 2003' => '(Windows NT 5.2)',
              'Windows Vista' => '(Windows NT 6.0)',
              'Windows 7' => '(Windows NT 6.1)',
              'Windows 8' => '(Windows NT 6.2)',
              'Windows 8.1' => '(Windows NT 6.3)',
              'Windows 10' => '(Windows NT 10.0)',
              'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
              'Windows ME' => 'Windows ME',
              'Open BSD' => 'OpenBSD',
              'Sun OS' => 'SunOS',
              'Linux' => '(Linux)|(X11)',
              'Mac OS' => '(Mac_PowerPC)|(Macintosh)',
              'QNX' => 'QNX',
              'BeOS' => 'BeOS',
              'OS/2' => 'OS/2',
			  'Мобилно устройство' => '(SimbianOS)|(android)|(blackberry)|(iphone)|(palmos)|(palmsource)|(symbian)|(Windows Phone 8.1)|(Windows Phone 10.0)',
              'Бот'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'
      );
       
      // Loop through the array of user agents and matching operating systems
      foreach($OSList as $CurrOS=>$Match)
      {
              // Find a match
              if (eregi($Match, $_SERVER['HTTP_USER_AGENT']))
              {
                      // We found the correct match
                      break;
              }
      }
      // You are using Windows Vista
      echo "<b>Вие ползвате:</b> ".$CurrOS;
?>
</center>

Дава ми следната грешка:
Код:
Fatal error: Uncaught Error: Call to undefined function eregi() in /home/vo8do2ne/public_html/master/ip-os.php:83 Stack trace: #0 {main} thrown in /home/vo8do2ne/public_html/master/ip-os.php on line 83

Как трябва да редактирам кода за да работи?
 
Call to undefined function eregi() in

Търсим php eregi... намираме http://php.net/manual/en/function.eregi.php

This function was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0.

Алтернатива е preg_match() (with the i (PCRE_CASELESS) modifier)
 
VoodooNet каза:
Можете ли да редактирате кода така, че да работи ?
Може.
Но тук хората идват, за да си помагат в решаването на проблеми, а не за да им реши някой задачата от домашното.
 
Имаш само на едно място, където се използва eregi() .. както @anonimen каза сложи там preg_match() вместо него.
 
Заповядаи редактирах ти малко кода но този код под ос показва само:
ос:бот неразпознава операционната система нито на компютър нито на телефон
тествах с linux, windows, и андроид постоянно показва ос бот.

PHP:
<?php
$ip=$_SERVER['REMOTE_ADDR'];
echo "<b>Вашият IP Адрес:</b> $ip";
?>
<br />
<?php
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo "<b>Вашият хост е:</b> $host";
?>
<br />
<?php
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') )
{
   if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Netscape') )
   {
     $browser = 'Netscape (Gecko/Netscape)';
   }
   else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') )
   {
     $browser = 'Mozilla Firefox (Gecko/Firefox)';
   }
   else
   {
     $browser = 'Mozilla (Gecko/Mozilla)';
   }
    if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') )
   {
     $browser = 'Chrome (WebKit)';
   }
}
else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') )
{
   if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') )
   {
     $browser = 'Opera (MSIE/Opera/Съвместим)';
   }
   else
   {
     $browser = 'Internet Explorer (MSIE/Съвместим)';
   }
}
else
{
   $browser = 'Друг браузър';
}

echo "<b>Вашия Браузър:</b> $browser";
?>
<br />
<?php
      $OSList = array
      (
              // Match user agent string with operating systems
              'Windows 3.11' => 'Win16',
              'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',
              'Windows 98' => '(Windows 98)|(Win98)',
              'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
              'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
              'Windows Server 2003' => '(Windows NT 5.2)',
              'Windows Vista' => '(Windows NT 6.0)',
              'Windows 7' => '(Windows NT 6.1)',
              'Windows 8' => '(Windows NT 6.2)',
              'Windows 8.1' => '(Windows NT 6.3)',
              'Windows 10' => '(Windows NT 10.0)',
              'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
              'Windows ME' => 'Windows ME',
              'Open BSD' => 'OpenBSD',
              'Sun OS' => 'SunOS',
              'Linux' => '(Linux)|(X11)',
              'Mac OS' => '(Mac_PowerPC)|(Macintosh)',
              'QNX' => 'QNX',
              'BeOS' => 'BeOS',
              'OS/2' => 'OS/2',
           'Мобилно устройство' => '(SimbianOS)|(android)|(blackberry)|(iphone)|(palmos)|(palmsource)|(symbian)|(Windows Phone 8.1)|(Windows Phone 10.0)',
              'Бот'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'
      );
       
      // Loop through the array of user agents and matching operating systems
      foreach($OSList as $CurrOS=>$Match)
      {
              // Find a match
              if (preg_match($Match, $_SERVER['HTTP_USER_AGENT']))
              {
                      // We found the correct match
                      break;
              }
      }
      // You are using Windows Vista
      echo "<b>Вие ползвате:</b> ".$CurrOS;
?>
</center>





заповядаи един код които работи може да си го редактираш и мобилни устроиства да разпознава:

PHP:
<?php

   $agent = $_SERVER['HTTP_USER_AGENT'];
   $browser = getbrowser();
   $os = getos();
   $ip = getip();
   $gip = $ip;
   $date = date("Y-m-d");

function getbrowser(){
   $agent = $_SERVER['HTTP_USER_AGENT'];
   if(eregi("Netcaptor", $agent)){
    $browser = "Netcaptor";
} elseif(eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}", $agent, $ver) || eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}", $agent, $ver)){ $browser = "Opera $ver[2]";
} elseif(eregi("(konqueror)/([0-9]{1,2}.[0-9]{1,3})", $agent, $ver)){ $browser = "Konqueror $ver[2]";
} elseif(eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})", $agent, $ver)){ $browser = "Lynx $ver[2]";
} elseif(eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})", $agent, $ver)){ $browser = "Internet Explorer $ver[2]";
} elseif(eregi("Links", $agent)){ $browser = "Lynx";
} elseif(eregi("(Firefox/)([0-9]{1,2}.[0-9]{1,3}){0,1}", $agent, $ver)){ $browser = "Firefox $ver[2]";
} elseif(eregi("(Firebird/)([0-9]{1,2}.[0-9]{1,3}){0,1}", $agent, $ver)){ $browser = "Firebird $ver[2]";
} elseif(eregi("Mozilla/5",$agent)){$browser = "Netscape 5";
} elseif(eregi("Gecko", $agent)){ $browser = "Mozilla";
} elseif(eregi("Safari",$agent)){ $browser = "OS-X Safari";
} elseif(eregi("(netscape6)/(6.[0-9]{1,3})", $agent, $ver)){ $browser = "Netscape $ver[2]";
} elseif(eregi("(Mozilla)/([0-9]{1,2}.[0-9]{1,3})", $agent, $ver)){ $browser = "Netscape $ver[2]";
} elseif(eregi("Galeon", $agent)){ $browser = "Galeon";
} elseif(eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})", $agent, $ver) ){$browser = "Lynx $ver[2]";
} elseif(eregi("Avant Browser", $agent)){ $browser = "Avant";
} elseif(eregi("(omniweb/)([0-9]{1,2}.[0-9]{1,3})", $agent, $ver) ){$browser = "OmniWeb $ver[2]";
} elseif(eregi("ZyBorg|WebCrawler|Slurp|Googlebot|MuscatFerret|ia_archiver", $agent)){ $browser = "Web indexing robot";
} elseif(eregi("(webtv/)([0-9]{1,2}.[0-9]{1,3})", $agent, $ver) ){$browser = "WebTV $ver[2]";
} else {$browser = "Unknown";}
return $browser;
}

function getos(){
   $agent = $_SERVER['HTTP_USER_AGENT'];
   if(strstr($agent,'Win')){
      if(strstr($agent,'NT 5.0') || strstr($agent,'NT5.0') || strstr($agent,'Windows 2000')){ $os = "Windows 2000";
   }else if(strstr($agent,'NT 5.1') || strstr($agent,'NT5.1') || strstr($agent,'Windows XP')){$os = "Windows XP";
}else if(strstr($agent,'Win98') || strstr($agent,'Windows 98')){$os="Windows 98";
}else if(strstr($agent,'NT')) {$os='Windows NT';
}else if(strstr($agent,'Win95') || strstr($agent,'Windows 95')){$os='Windows 95';
}else if(strstr($agent,'Win 9x')) {$os='Windows 95';
}else if(strstr($agent,'WinME') || strstr($agent,'Windows ME')){$os='Windows ME';
}else{$os='Windows (version unspecified)';}

}else if (strstr($agent,'Mac')){$os='Apple Macintosh';
}else if (strstr($agent,'Linux')){$os='Linux';
}else if (strstr($agent,'BeOS')){$os='BeOS';
}else if (strstr($agent,'Unix') || strstr($agent, "HP-ux") || strstr($agent, "X11")){$os='Unix';
}else if (strstr($agent,'SunOS')){$os='SunOS';
}else if (strstr($agent,'FreeBSD')){$os='FreeBSD';
}else if (strstr($agent,'OpenBSD')){$os='OpenBSD';
}else if (strstr($agent,'IRIX')){$os='IRIX';
}else if (strstr($agent,'spider') || strstr($agent,'bot') || strstr($agent,'http') || strstr($agent,'Scooter') || strstr($agent,'WebCopier')){$os='Spiders';
}else{$os='Unspecified';
}
return $os;
}

function getip(){
   if(getenv('HTTP_X_FORWARDED_FOR')){
      $ip = $_SERVER['REMOTE_ADDR'];
      if(preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", getenv('HTTP_X_FORWARDED_FOR'), $ip3)){
         $ip2 = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.16\..*/', '/^10..*/', '/^224..*/', '/^240..*/');
         $ip = preg_replace($ip2, $ip, $ip3[1]);
      }
   }else{
   $ip = $_SERVER['REMOTE_ADDR'];
}
if($ip == ""){ $ip = "x.x.x.x"; }
return $ip;
}
class convert{
function convert_date($datestamp, $mode="long"){
   global $pref;
   $datestamp += (TIMEOFFSET*3600);
   if($mode == "long"){
      return strftime($pref['longdate'], $datestamp);
   }else if($mode == "short"){
      return strftime($pref['shortdate'], $datestamp);
   }else{
   return strftime($pref['forumdate'], $datestamp);
}
}
}

echo "
OS: $os<BR>
Browser: $browser<BR>
Agent: $agent<BR>
IP: $ip<BR>
Date: $date<BR>";
?>
 
Пробвах редакцията и версията която трябва да работи но и двете не са подходящи /дават грешка/ при новия PHP7
 
При мен няма проблеми аз ползвам стария php5 тъи като под 7 доста кодове ми дават
грешки а под версия 5 няма проблеми.
 
@systems, втория ти пример също използва eregi() и не работи на 7-цата.

@VoodooNet, хубаво ще е да кажеш, какви грешки дава...
Ето го работещо
Код:
<?php

$ip=$_SERVER['REMOTE_ADDR'];

echo "<b>Вашият IP Адрес:</b> $ip";

?>

<br />

<?php

$host=gethostbyaddr($_SERVER["REMOTE_ADDR"]);
?>

<br />

<?php

if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') )

{

   if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Netscape') )

   {

     $browser = 'Netscape (Gecko/Netscape)';

   }

   else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') )

   {

     $browser = 'Mozilla Firefox (Gecko/Firefox)';

   }

   else

   {

     $browser = 'Mozilla (Gecko/Mozilla)';

   }

    if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') )

   {

     $browser = 'Chrome (WebKit)';

   }

}

else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') )

{

   if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') )

   {

     $browser = 'Opera (MSIE/Opera/Съвместим)';

   }

   else

   {

     $browser = 'Internet Explorer (MSIE/Съвместим)';

   }

}

else

{

   $browser = 'Друг браузър';

}



echo "<b>Вашия Браузър:</b> $browser";

?>

<br />

<?php

      $OSList = array

      (

              // Match user agent string with operating systems

              'Windows 3.11' => 'Win16',

              'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',

              'Windows 98' => '(Windows 9Cool|(Win98)',

              'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',

              'Windows XP' => '(Windows NT 5.1)|(Windows XP)',

              'Windows Server 2003' => '(Windows NT 5.2)',

              'Windows Vista' => '(Windows NT 6.0)',

              'Windows 7' => '(Windows NT 6.1)',

              'Windows 8' => '(Windows NT 6.2)',

              'Windows 8.1' => '(Windows NT 6.3)',

              'Windows 10' => '(Windows NT 10.0)',

              'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',

              'Windows ME' => 'Windows ME',

              'Open BSD' => 'OpenBSD',

              'Sun OS' => 'SunOS',

              'Linux' => '(Linux)|(X11)',

              'Mac OS' => '(Mac_PowerPC)|(Macintosh)',

              'QNX' => 'QNX',

              'BeOS' => 'BeOS',

              'OS/2' => 'OS/2',

           'Мобилно устройство' => '(SimbianOS)|(android)|(blackberry)|(iphone)|(palmos)|(palmsource)|(symbian)|(Windows Phone 8.1)|(Windows Phone 10.0)',

              'Бот'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'

      );

       

      // Loop through the array of user agents and matching operating systems

      foreach($OSList as $CurrOS=>$Match)

      {

              // Find a match

              if (!preg_match('/'.$Match.'/', $_SERVER['HTTP_USER_AGENT']))

              {

                      // We found the correct match

                      break;

              }

      }

      // You are using Windows Vista

      echo "<b>Вие ползвате:</b> ".$CurrOS;

?>

Само часта за OS-а, която се ползва не показва коректно. Тествано на версия 7.0, 7.1, 5.6 ...

Код:
Вашият IP Адрес: xxx.xxx.xxx.xxx 
Вашия Браузър: Chrome (WebKit) 
Вие ползвате: Windows 3.11 // не съм на windows
 
foreach() {
if ( clause )
break;
}
Каква е целта на този фрагмент? Просто цикли и проверява за условие, без да извършва никакви други операции (break). 1 стъпка към решението е поправянето на това ^^.
 
Как да показва, като прекъсвате цикъла и накрая изкарвате целия масив.
Трябва да запазвате някакъв флаг (я брояч, я директно резултата), който да използвате за извеждането на OS.
 

Горе