90693
[pingチェックテスト](https://www.cman.jp/network/support/ping.html)
の簡易版を作りたいのですが、やり方を調べてもコード内にIPアドレスを直接コードに書きこんで疎通確認するやり方ばかりで、入力フォームで打ち込んだIPアドレスの疎通確認する方法が分かりません。

ここにIPaddressを入力、checkボタンを押したときに下に成功した場合は結果を表示して失敗した場合はエラー内容を表示するという感じでやりたい。現在のコードも載せときます。

[![](https://i.stack.imgur.com/NM70B.png)](https://i.stack.imgur.com/NM70B.png)

```

    <!DOCTYPE html>
    <html lang="ja">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>PinPin</title>
    </head>
    
    <body style="text-align:center;">
        <h1>Ping Check</h1>
        <?php
        print "IP address<br>\n";
        ?>
        <form method="post">
            <input type="text" size="30" name="ipaddress" placeholder="8.8.8.8"><br>
            <input type="submit" value="check">
        </form>
    
        <?php
        
        $ipaddress = $_POST["ipaddress"];
        echo exec("ping -n 1");
        ?>
    
    </body>
    </html>
    
```
CC BY-SA 4.0
2022-08-22T06:21:08.930
90690
2022-08-22T09:26:41.907
2022-08-22T09:18:43.060
54103
54103
question
php html
PHPでpingの疎通確認ができるフォームを作りたい
pingのパラメータを指定するには、. で文字列をつなぎます。  
また、empty関数で値の存在をチェックすると良いでしょう  
更に、$_POST["ipaddress"]の値がアドレスだけかチェックした方が良いと思います。

```

    if(!empty($_POST["ipaddress"])){
      $ipaddress = $_POST["ipaddress"];
      echo exec("ping -n 1 ".$ipaddress);
    }
    
```
CC BY-SA 4.0
2022-08-22T09:23:03.023
90693
2022-08-22T09:23:03.023
22793
90690
answer
フォーム入力でIPアドレスは受け取っているので、

```

        $ipaddress = $_POST["ipaddress"];
    
```

(exec経由で) ping の引数に IP アドレスを指定するだけのように思います。

**修正例:**

```

        echo exec("ping -n 1 $ipaddress");
    
```

余談として、exec コマンドを使うのであれば、不正な入力を受け取らないよう気をつける必要があると思います。
CC BY-SA 4.0
2022-08-22T09:26:41.907
90694
2022-08-22T09:26:41.907
3060
90690
answer