[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите исправить ошибку в скрипте
sergesus
Помогите исправить ошибку в коде, ошибка Notice: Undefined offset: 1 in z:\home\localhost\www\index.php on line 53
как я понял это ошибка при обращении к массиву, в массиве не существует элемента 1.
Но скрипт выполняется верно и все выдает правильно.
PHP
<?php
error_reporting
(E_ALL);
define ("SERVLIST""servers.txt");
  
// файл со списком server:portdefine ("URL", 'stats.php?server='); 
// скрипт подробной статистики по конкретному серверуdefine("SERVERSBYPAGE", 10); 
 // количество серверов на страницу
function GetServerInfo($server,$port) {     
$fp = @fsockopen("udp://".$server$port);     
if (!
$fp) return false;     
@
fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x  45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00  ".chr(10)); 
    
$start=time();  
   
socket_set_timeout($fp,1); 
    
$st=fread($fp,1);  
   
$r=socket_get_status($fp); 
    
$r=$r["unread_bytes"];
     if (
$r == 0) { @fclose($fp); return false;}  
   
$st.=fread($fp,$r);  
   @
fclose($fp);   
  
$st=substr($st,5);  
   
$address=SubStr($st,0,StrPos($st,chr(0))); 
    
$address=str_replace(chr(0),"|",$address); 
    
$st=SubStr($st,StrPos($st,chr(0))+1);  
   
$name=SubStr($st,0,StrPos($st,chr(0)));  
   
$st=SubStr($st,StrPos($st,chr(0))+1);   
  
$map=SubStr($st,0,StrPos($st,chr(0)));  
   
$st=SubStr($st,StrPos($st,chr(0))+1);  
   
$st=SubStr($st,StrPos($st,chr(0))+1); 
    
$st=SubStr($st,StrPos($st,chr(0))+1);  
   
$current=ord(SubStr($st,0,1)); 
    
$max=ord(SubStr($st,1,1)); 
    if (
$map == "") return false;
     
$result['map'] = $map
    
$result['name']= $name
    
$result['current'] = $current;
     
$result['max'] = $max
    return 
$result;
}

function 
ReadServers($servlist) { 
    
$file = @fopen($servlist,"rt");     
if (
$file) {       $lines explode("\n"fread($filefilesize($servlist)));
       foreach (
$lines as $v)
 {         
$elem explode(":",$v);  
       
$srv['ip'] = $elem[0];   
              
$srv['port'] = $elem[1]; 
//Системе  не нравится вот это обращение 

        
if (GetServerInfo($srv['ip'],$srv['port']))
 
$servers[] = $srv;     
  }      
 
fclose($file);  
     return 
$servers
    } 
else
 return 
false;
}

function 
AddServer($newserver,$servlist) { 
    if (!
preg_match('/^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}:\d{1,5}$/xs',$_REQUEST['newserver']))
 return 
false;     $f fopen($servlist,"a+"); 
    if (!
$f) return false;  
   
fputs($f,"\n".$_REQUEST['newserver']); 
    
fclose($f);  
   return 
true;
}

if (isset(
$_REQUEST['newserver'])) 
{   
  if (!
preg_match('/^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}:\d{1,5}$/xs',$_REQUEST['newserver']))  

      echo 
"Ошибка! Невозможно определить введенный сервер или порт";

     else { list(
$newserv['ip'],$newserv['port']) = explode(":",$_REQUEST['newserver']); 
           if (!
GetServerInfo($newserv['ip'],$newserv['port'])) 
echo 
"Ошибка! Не удалось подключиться к серверу";  
          elseif (
in_array($newservReadServers(SERVLIST))) echo "Сервер уже есть в списке"
           elseif (!
AddServer($newserver,SERVLIST)) echo "Ошибка при добавлении сервера ";   
         else echo 
"Сервер добавлен в список ";  
   }  
 echo 
"<br/><a href=".$_SERVER['SCRIPT_NAME'].">Вернуться</a>";
   exit;

}

$servers = array();
$servers ReadServers(SERVLIST);
$countpages ceil(count($servers)/SERVERSBYPAGE);
if (!isset(
$_GET['page']) || ((int)$_GET['page'] == 0) || $_GET['page'] < 1$_GET['page'] = 1;

{   
for (
$i=0$i < ($_GET['page']-1)*SERVERSBYPAGE$i++) array_shift($servers); 
  while (
count($servers) > SERVERSBYPAGEarray_pop($servers);
}
?>

<table width='50%' cellpadding='3' cellspacing='3' bordercolor='#333333'>
  <tr>   
 <td>
<div align='center'>Сервер:</div></td>    <td><div align='center'><span lang="ru">Карта</span>:</div></td> 
   <td><div align='center'><span lang="ru">Название</span>:</div></td>      <td><div align='center'>Игроков:</div></td> 
   <td><div align='center'>Статус:</div></td>  </tr>
<?php

foreach ($servers as $k=>$v)
 {    
$serv GetServerInfo($v['ip'],$v['port']);   
 if (
$serv)     echo "<tr>          <td><div align='center'>   
       <a href="
.URL.$v['ip']." onmouseover=\"return overlib('На сервере сейчас играют:');\" onmouseout=\"return nd();\">".$v['ip'].":".$v['port']."<a></div></td> 
         <td><div align='center'>"
.$serv['name']."</div></td>          <td><div align='center'>".$serv['map']."</div></td>
          <td><div align='center'>"
.$serv['current']."/".$serv['max']."</div></td>
          <td height='50'><div align='center'>          <font color=green><b>Online</b></font> 
         </div></td></tr>"
;
}
echo 
"</table>";
if (
count($servers) > SERVERSBYPAGE) {
echo 
"<p>Страницы:&nbsp;</p>";

 for (
$i 1$i <= $countpages$i++);


 if (
$i == $_GET['page'] ) echo "[".$i."]&nbsp;"
 else  echo 
"[<a href=\"".$_SERVER['SCRIPT_NAME']."?page=$i\">$i</a>]&nbsp;";}
 }
else echo
"Мониторинг all Half-Life mode's";echo "         <p>Добавить сервер:</p>  
       <form  action="
.$_SERVER['SCRIPT_NAME'].">
         <input name=\"newserver\" type=\"text\" value=\"IP:порт\" onfocus=\"if(this.value=='IP:порт')this.value='';\" onblur=\"if(this.value=='')this.value='IP:порт';\">
        <input type=\"submit\" value=\"Добавить\"> 
        </form>"
;
Быстрый ответ:

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