環境変数の中身がnullかどうか判定するプログラム
■作ったプログラム概要
接続してきたクライアントのIPアドレスをフォームに表示させ、submitボタンを押すとサーバーサイドにそのIPアドレスが送信されるプログラムです。プロキシを経由している場合としていない場合で、IPアドレスが格納されている環境変数が違うため、条件分岐による処理もしました。
■ポイント
◎is_null関数の使用。
→is_null(変数)で、変数の中身がnullかどうかを調べててくれ、nullだと真、そうでない場合は偽を返してくれます。
◎環境変数「HTTP_X_FORWARDED_FOR」と「REMOTE_ADDER」の使用。
→「HTTP_X_FORWARDED_FOR」には、プロキシを通して接続をしてきている大元の接続元IPアドレスが格納されています。「REMOTE_ADDER」は、プロキシを通していないときに、接続元のIPアドレスが格納されている変数です。
◎var_dump関数の使用。
→var_dump(変数)とすると、変数に入っている値を表示してくれます。perlのData Dumperみたいなもの。完成したら、ここは消してください。
◎フォームは、改変不可能。
→inputタグのところの最後に「readonly」と入れることで、フォームに自動的に入れられた値を変更できないようにしています。
■注意事項
「*************」の部分は、アクション先のCGI等を指定してください。
<?php header("Content-type: text/html; charset=utf8"); ?> <?php if (is_null($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip=$_SERVER['REMOTE_ADDR']; }else{ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } var_dump($ip); ?> <title>IPアドレス登録</title> <div align="center"> <br/> haiji環境に入れるよう下記のIPアドレスを登録します。<br/> addボタンを押してください。<br/> <br/> <form method=post action=********.cgi> address:<input type='text' name='addr' value='<?php echo $ip; ?>' readonly> <input type='submit' value='add'> </form>
phpって初めて書いたけど、便利だね。