Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Как исправить Warning ?

Статус пользователя S9aVA
сообщение 15.4.2011, 16:54
Сообщение #1
Стаж: 15 лет

Сообщений: 7
Благодарностей: 1
Полезность: 0

Всем привет, мне знакомый дал скрипт php для того чтобы можно было вывести статус сервера cs 1.6 на uCoz или просто на странцицу html.

Скрипт работает хорошо но вот есть одна проблема, кода сервер выключен пишет вот такую ошибку как исправить ?

Код
Warning: fsockopen() [function.fsockopen]: unable to connect to udp://:0 (Failed to parse address "") in D:\Program Files\VertrigoServ\www\php\java.php on line 10
document.write('Offline');


А вот сам скрипт что нужно там исправить ?

Код
<?php

$ip= $_GET['ip'];
$port= $_GET['port'];
$width= $_GET['width'];

$server= $ip;
$port= $port;
$qw=chr(32);
$fp = fsockopen ("udp://".$server,$port);
if (!$fp)
{
echo "document.write('Offline');";    
}
else {
    fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\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"];
    $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 ($_GET['info'] == "map")
{
echo "document.write('$map');";
}
if ($_GET['info'] == "map-img")
{
echo "document.write('<img src=/maps/$map.png>');";
}
if ($_GET['info'] == "players")
{
echo "document.write('$current/$max');";
}
if ($_GET['info'] == "name")
{
echo "document.write('$name');";
}

?>
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя 330863
сообщение 16.4.2011, 23:22
Сообщение #2


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

S9aVA,
для начала весь скрипт в архив залить тут ,может найду так ошибку :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя inf
сообщение 16.4.2011, 23:57
Сообщение #3


Стаж: 16 лет

Сообщений: 239
Благодарностей: 240
Полезность: 1254

запрос к скрипту каким образом осуществляется ?
Такое впечатление, что у тебя просто не передается IP/порт к скрипту
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CL0NE [ua]
сообщение 17.4.2011, 8:12
Сообщение #4
Стаж: 16 лет

Сообщений: 33
Благодарностей: 19
Полезность: 438

OMFGWTFCode?!
Код
$ip= trim($_GET['ip']);
$port= trim($_GET['port']);
# $width= $_GET['width']; // не используется.
// Валидность вообще никак не проверяются х_Х
// хотя бы для приличия:

if(empty($ip) || !preg_match('/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/', $port))
    die("IP isn't valid! [$ip]");

if(empty($port) || !preg_match('/^[0-9]{1,5}$/', $port))
    die("Port isn't valid! [$port]");


// выкинуть это говно
# $server= $ip; // нахрена?
# $port= $port; // сурово..
# $qw=chr(32); // вообще нигде не используется

$fp = @fsockopen ("udp://".$ip, $port); // Самое простое решение - подавить вывод предупреждений, поставив собаку перед функцией.
if (!$fp)
{
# echo "document.write('Offline');";   // яваскрипт. на^Wзачем?
echo 'Offline';  
}
Все строки, закомментированные # - выпилить
Код
if ($_GET['info'] == "map")
{
echo "document.write('$map');";
}
if ($_GET['info'] == "map-img")
{
echo "document.write('<img src=/maps/$map.png>');"; // опять нет проверки, пикчи нет на сервере и будет вам 404
}
if ($_GET['info'] == "players")
{
echo "document.write('$current/$max');";
}
if ($_GET['info'] == "name")
{
echo "document.write('$name');";
}
/facepalm автор кода не знал про существование инструкции switch
Код
switch($_GET['info'])
{
case "map":
{
echo $map;
}
break;
case "map-img":
{
echo "<img src=/maps/$map.png>";
}
break;
case "players":
{
echo "$current/$max";
}
break;
case "name":
{
echo $name;
}
break;
}
знакомому c0d3ру ссылку на тему в обязательном порядке.

Отредактировал: CL0NE [ua], - 17.4.2011, 8:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Flesh
сообщение 17.4.2011, 8:47
Сообщение #5


Стаж: 17 лет

Сообщений: 319
Благодарностей: 168
Полезность: 776

Код
$ip= $_GET['ip'];
$port= $_GET['port'];
$width= $_GET['width'];

Измени на:
Код
$ip= "109.195.3.38";
$port= "27015";


Отредактировал: Flesh, - 17.4.2011, 8:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CL0NE [ua]
сообщение 17.4.2011, 11:00
Сообщение #6
Стаж: 16 лет

Сообщений: 33
Благодарностей: 19
Полезность: 438

Цитата(Flesh @ 17.4.2011, 9:47) *
Код
$ip= $_GET['ip'];
$port= $_GET['port'];
$width= $_GET['width'];

Измени на:
Код
$ip= "109.195.3.38";
$port= "27015";

cbf1b2bfde1a.gif hardcoding решает
и что прикажешь делать, если сервера 2? 3? 10?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: