system()

Тема в разделе "PHP", создана пользователем Rem, 4 май 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Rem

    Rem

    Регистр.:
    22 сен 2006
    Сообщения:
    474
    Симпатии:
    41
    Скажите а можно реализовать этот скрипт без функции system()?

    Код:
      <table width="100%" border="0" align="center" class="ttable">
        <tr>
          <td bgcolor="#D4D0C8"><strong>PING</strong></td>
        </tr>
        <tr>
          <td>
    <?php
    $max_count = 10; //maximum count for ping command
    $unix      =  1; //set this to 1 if you are on a *unix system      
    $windows   =  0; //set this to 1 if you are on a windows system
    // -------------------------
    // nothing more to be done.
    // -------------------------
    //globals on or off ?
    $register_globals = (bool) ini_get('register_gobals');
    $system = ini_get('system');
    $unix = (bool) $unix;
    $win  = (bool)  $windows;
    //
    If ($register_globals)
    {
       $ip = getenv(REMOTE_ADDR);
       $self = $PHP_SELF;
    } 
    else 
    {
       $submit = $_POST['submit'];
       $count  = $_POST['count'];
       $host   = $_POST['host'];
       $ip     = $_SERVER['REMOTE_ADDR'];
       $self   = $_SERVER['PHP_SELF'];
    };
    // form submitted ?
    If ($submit == "Ping!") 
    {
       // over count ?
       If ($count > $max_count) 
       {
          echo 'Maximum for count is: '.$max_count;
          echo '<a href="'.$self.'">Back</a>';
       }
       else 
       {
          // replace bad chars
          $host= preg_replace ("/[^A-Za-z0-9.-]/","",$host);
          $count= preg_replace ("/[^0-9]/","",$count);
          echo '<body bgcolor="#FFFFFF" text="#000000"></body>';
          echo("Ping Output:<br>"); 
          echo '<pre>';           
          //check target IP or domain
          if ($unix) 
          {
             system ("ping -c$count -w$count $host");
             system("killall ping");// kill all ping processes in case there are some stalled ones or use echo 'ping' to execute ping without shell
          }
          else
          {
             system("ping -n $count $host");
          }
          echo '</pre>';
        }
    } 
    else 
    {
        echo '<body bgcolor="#FFFFFF" text="#000000"></body>';
        echo '<p><font size="2">Your IP is: '.$ip.'</font></p>';
        echo '<form method="post" action="/ping.php">';
        echo '   Enter IP or Host <input type="text" name="host" value="'.$ip.'"></input>';
        echo '   Enter Count <input type="text" name="count" size="2" value="4"></input>';
        echo '   <input type="submit" name="submit" value="Ping!"></input>';
        echo '</form>';
        echo '<br><b>'.$system.'</b>';
        echo '</body></html>';
    }
    ?>
        </td>
        </tr>
      </table>
    
     
  2. masto

    masto Прохожие

    Скорее всего нет, поскольку здесь задействованы системные вызовы.
    Проще найти хостинг с разрешённой system, чем ломать себе голову.
     
  3. Rem

    Rem

    Регистр.:
    22 сен 2006
    Сообщения:
    474
    Симпатии:
    41
    Да проблема в том что практически везде данная функция отключена и будет тяжело найти подходящий, а скулхостам доверять свой сайт что то не хочется.
     
  4. lexesv

    lexesv

    Регистр.:
    15 ноя 2006
    Сообщения:
    219
    Симпатии:
    103
    Питерхост, РБК, Дримхост, Блюхост(по запросу)

    или любой дешёвый ВПС

    В идеале свой сервак ;)
     
  5. masto

    masto Прохожие

    Ищи хостинг с PHP как CGI. Там эта функция как правило разрешена или её можно разрешить в собственном php.ini

    вот тебе по памяти:
    _http://ruweb.net/?page=info
    _http://multihelp.ru/inf.php
    _http://webxl.ru
     
  6. vovaNux

    vovaNux Постоялец

    Регистр.:
    10 апр 2007
    Сообщения:
    125
    Симпатии:
    16
    Лично я за ВПС - недорого и твори с PHP что тебе вздумается. Shared хостинг в любом случае накладывает ограничения
     
  7. masto

    masto Прохожие

    На нормальном шареде тоже можно творить с PHP всё что захочешь.
    За исключением установки модулей и запуска демонов.

    И бегать это всё будет не хуже чем на дешёвом VPS.
     
  8. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Это на fopen можно написать, с применением microtime(); .
     
  9. Rem

    Rem

    Регистр.:
    22 сен 2006
    Сообщения:
    474
    Симпатии:
    41
    А примерчик не большой можно, а то я только осваиваю этот чудо язык:)
     
  10. lexesv

    lexesv

    Регистр.:
    15 ноя 2006
    Сообщения:
    219
    Симпатии:
    103
    ня :)

    PHP:
    <?php 
    $host 
    'www.com' 
    $timeout 

        
    //Open the socket 
    $handle fsockopen udp://' . $host , 7 , $errno , $errstr , $timeout ); 
    if (! $handle 
    echo 
    "$errstr ($errno)<br>\r\n" 
    else { 
        
    //Set read timeout 
    stream_set_timeout $handle $timeout ); 
    for ( 
    $i $i $i ++){ 
        
    //Time the responce 
    list ( $usec $sec ) = explode " " microtime true )); 
    $start =(float) $usec + (float) $sec 

        
    //send somthing 
    $write fwrite $handle " echo this\n" ); 
    if (! 
    $write ){ 
    echo 
    "Error in writing to socked<br>\r\n" 
    break; 

    echo 
    'Send packet to ' $host 

        
    //Try to read. the server will most likely respond with a "ICMP Destination Unreachable" and end the read. But that is a responce! 
    fread $handle 1024 ); 

        
    //Work out if we got a responce and time it 
    list ( $usec $sec ) = explode " " microtime true )); 
    $laptime =((float) $usec + (float) $sec )- $start 
    if ( 
    $laptime $timeout 
    echo 
    " : No reply<br>\r\n" 
    else 
    echo 
    " : Round trip = " round $laptime ). " s<br>\r\n" 

    fclose $handle ); 

    ?>
     
Статус темы:
Закрыта.