PHPでリクエスト情報取得方法について

PHP

今回はリクエスト情報をPHPで取得する方法を紹介する。

$_POSTでリクエスト情報取得(postリクエスト)

クライアント側はPOSTで送信したデータはPHP側は$_POST[‘name’]で送信したデータを取得できます。

<!DOCTYPE html>
<html lang=”ja”>
<head></head>
<body>
<?php
    if (!empty($_POST)){
       echo ‘名前:’.$_POST[‘username’].'<br>’;
       echo ‘パスワード:’.$_POST[‘pwd’].'<br>’;
       echo ‘性別:’.$_POST[‘sex’].'<br>’;
       echo ‘趣味:’.(isset($_POST[‘hobby’])?implode(‘,’,$_POST[‘hobby’]):”).'<br>’;
       echo ‘出身地:’.$_POST[‘addr’].'<br>’;
       echo ‘備考:’.$_POST[‘memo’].'<br>’;
    }
?>
<form method=”post” action=””>
       名前:<input type=”text” name=”username”><br>
       パスワード:<input type=”password” name=”pwd”><br>
       性別:<input type=”radio” name=”sex” value=”1″>男<input type=”radio” name=”sex”      value=”0″>女<br>
       出身地:<select name=”addr”>
                           <option>TOKYO</option>
                           <option>SATAMA</option>
                           <option>CHIBA</option>
                      </select><br>
       備考:<textarea name=”memo” rows=”6″ cols=”30″></textarea><br>
       <input type=”submit” name=”button” value=”COMMIT”>
</form>
</body>
</html>

$_GETでリクエスト情報取得(getリクエスト)

クライアント側はGETで送信したデータはPHP側は$_GET[‘name’]で送信したデータを取得できます。

<!DOCTYPE html>
<html lang=”ja”>
<head></head>
<body>
<?php
    if (!empty($_GET)){
       echo ‘名前:’.$_GET[‘username’].'<br>’;
       echo ‘パスワード:’.$_GET[‘pwd’].'<br>’;
       echo ‘性別:’.$_GET[‘sex’].'<br>’;
       echo ‘趣味:’.(isset($_GET[‘hobby’])?implode(‘,’,$_GET[‘hobby’]):”).'<br>’;
       echo ‘出身地:’.$_GET[‘addr’].'<br>’;
       echo ‘備考:’.$_GET[‘memo’].'<br>’;
    }
?>
<form method=”post” action=””>
       名前:<input type=”text” name=”username”><br>
       パスワード:<input type=”password” name=”pwd”><br>
       性別:<input type=”radio” name=”sex” value=”1″>男<input type=”radio” name=”sex”      value=”0″>女<br>
       出身地:<select name=”addr”>
                           <option>TOKYO</option>
                           <option>SATAMA</option>
                           <option>CHIBA</option>
                      </select><br>
       備考:<textarea name=”memo” rows=”6″ cols=”30″></textarea><br>
       <input type=”submit” name=”button” value=”COMMIT”>
</form>
</body>
</html>

$_SERVERでリクエスト情報取得(getリクエスト)

クライアント側はGETで送信したデータはPHP側は$_SERVER[‘QUERY_STRING’]で送信したデータを取得できます。

<!DOCTYPE html>
<html lang=”ja”>
<head></head>
<body>
<?php
        $query_str=isset($_SERVER[‘QUERY_STRING’])?$_SERVER[‘QUERY_STRING’]:””;
        parse_str($query_str, $params);

        if (!empty($params)){
                echo ‘名前:’.$params[‘username’].'<br>’;
                echo ‘パスワード:’.$params[‘pwd’].'<br>’;
                echo ‘性別:’.$params[‘sex’].'<br>’;
                echo ‘趣味:’.(isset($params[‘hobby’])?implode(‘,’,$params[‘hobby’]):”).'<br>’;
                echo ‘出身地:’.$params[‘addr’].'<br>’;
                echo ‘備考:’.$params[‘memo’].'<br>’;
        }
?>
<form method=”GET” action=””>
         名前:<input type=”text” name=”username”><br>
        パスワード:<input type=”password” name=”pwd”><br>
        性別:<input type=”radio” name=”sex” value=”1″>男
                  <input type=”radio” name=”sex” value=”0″>女<br>
        趣味:<input type=”checkbox” name=”hobby[]” value=”音楽ライブ”>音楽ライブ
                  <input type=”checkbox” name=”hobby[]” value=”映画鑑賞”>映画鑑賞
                  <input type=”checkbox” name=”hobby[]” value=”アニメ”>アニメ
                  <input type=”checkbox” name=”hobby[]” value=”筋トレ”>筋トレ<br>
        出身地:<select name=”addr”>
                                <option>TOKYO</option>
                                <option>SATAMA</option>
                                <option>CHIBA</option>
                        </select><br>
        備考:<textarea name=”memo” rows=”6″ cols=”30″></textarea><br>
        <input type=”submit” name=”button” value=”COMMIT”>
</form>
</body>
</html>

filter_inputでリクエスト情報取得(getリクエスト)

クライアント側はGETで送信したデータはPHP側は$_SERVER[‘QUERY_STRING’]で送信したデータを取得できます。
POST,GETの一部のデータを取得できますが、省略する。

<!DOCTYPE html>
<html lang=”ja”>
<head></head>
<body>
<?php
        $query_str=filter_input(INPUT_SERVER,’QUERY_STRING’);
        parse_str($query_str, $params);

        if (!empty($params)){
                echo ‘名前:’.$params[‘username’].'<br>’;
                echo ‘パスワード:’.$params[‘pwd’].'<br>’;
                echo ‘性別:’.$params[‘sex’].'<br>’;
                echo ‘趣味:’.(isset($params[‘hobby’])?implode(‘,’,$params[‘hobby’]):”).'<br>’;
                echo ‘出身地:’.$params[‘addr’].'<br>’;
                echo ‘備考:’.$params[‘memo’].'<br>’;
        }
?>
<form method=”GET” action=””>
         名前:<input type=”text” name=”username”><br>
        パスワード:<input type=”password” name=”pwd”><br>
        性別:<input type=”radio” name=”sex” value=”1″>男
                  <input type=”radio” name=”sex” value=”0″>女<br>
        趣味:<input type=”checkbox” name=”hobby[]” value=”音楽ライブ”>音楽ライブ
                  <input type=”checkbox” name=”hobby[]” value=”映画鑑賞”>映画鑑賞
                  <input type=”checkbox” name=”hobby[]” value=”アニメ”>アニメ
                  <input type=”checkbox” name=”hobby[]” value=”筋トレ”>筋トレ<br>
        出身地:<select name=”addr”>
                                <option>TOKYO</option>
                                <option>SATAMA</option>
                                <option>CHIBA</option>
                        </select><br>
        備考:<textarea name=”memo” rows=”6″ cols=”30″></textarea><br>
        <input type=”submit” name=”button” value=”COMMIT”>
</form>
</body>
</html>

$_REQUESTでリクエスト情報取得(getリクエストまたはpostリクエスト)

クライアント側はGET,POSTで送信したデータはPHP側は$_REQUESTで送信したデータを取得できます。
しかし、POST,GET両方にデータを設定し、名称も同じの場合、php.iniのrequest_order = “GP”の場合
GETの値はPOSTの値で上書き。

<!DOCTYPE html>
<html lang=”ja”>
<head></head>
<body>
<?php
        if (!empty($_REQUEST)){
                echo ‘名前:’.$_REQUEST[‘username’].'<br>’;
                echo ‘パスワード:’.$_REQUEST[‘pwd’].'<br>’;
                echo ‘性別:’.$_REQUEST[‘sex’].'<br>’;
                echo ‘趣味:’.(isset($_REQUEST[‘hobby’])?implode(‘,’,$_REQUEST[‘hobby’]):”).'<br>’;
                echo ‘出身地:’.$_REQUEST[‘addr’].'<br>’;
                echo ‘備考:’.$_REQUEST[‘memo’].'<br>’;
        }
?>
<form method=”GET” action=””>
         名前:<input type=”text” name=”username”><br>
        パスワード:<input type=”password” name=”pwd”><br>
        性別:<input type=”radio” name=”sex” value=”1″>男
                  <input type=”radio” name=”sex” value=”0″>女<br>
        趣味:<input type=”checkbox” name=”hobby[]” value=”音楽ライブ”>音楽ライブ
                  <input type=”checkbox” name=”hobby[]” value=”映画鑑賞”>映画鑑賞
                  <input type=”checkbox” name=”hobby[]” value=”アニメ”>アニメ
                  <input type=”checkbox” name=”hobby[]” value=”筋トレ”>筋トレ<br>
        出身地:<select name=”addr”>
                                <option>TOKYO</option>
                                <option>SATAMA</option>
                                <option>CHIBA</option>
                        </select><br>
        備考:<textarea name=”memo” rows=”6″ cols=”30″></textarea><br>
        <input type=”submit” name=”button” value=”COMMIT”>
</form>
</body>
</html>

file_get_contents(“php://input”)で情報取得(postリクエスト)

クライアント側はPOSTで送信したデータはPHP側はfile_get_contentsで送信したデータを取得できます。
GETまたはPOSTのデータを受け取る場合、以下のコードを参考する。

<!DOCTYPE html>
<html lang=”ja”>
<head></head>
<body>
<?php
        $method = strtoupper(filter_input(INPUT_SERVER, ‘REQUEST_METHOD’));
        if (‘POST’ === $method) {
              $str = file_get_contents(‘php://input’);
        } else if (‘GET’ === $method) {
              $str = filter_input(INPUT_SERVER, ‘QUERY_STRING’);
        } else {
              $str = “”;
        }
        parse_str($str, $param);

        if (!empty($param)){
                echo ‘名前:’.$param[‘username’].'<br>’;
                echo ‘パスワード:’.$param[‘pwd’].'<br>’;
                echo ‘性別:’.$param[‘sex’].'<br>’;
                echo ‘趣味:’.(isset($param[‘hobby’])?implode(‘,’,$param[‘hobby’]):”).'<br>’;
                echo ‘出身地:’.$param[‘addr’].'<br>’;
                echo ‘備考:’.$param[‘memo’].'<br>’;
        }
?>
<form method=”GET” action=””>
         名前:<input type=”text” name=”username”><br>
        パスワード:<input type=”password” name=”pwd”><br>
        性別:<input type=”radio” name=”sex” value=”1″>男
                  <input type=”radio” name=”sex” value=”0″>女<br>
        趣味:<input type=”checkbox” name=”hobby[]” value=”音楽ライブ”>音楽ライブ
                  <input type=”checkbox” name=”hobby[]” value=”映画鑑賞”>映画鑑賞
                  <input type=”checkbox” name=”hobby[]” value=”アニメ”>アニメ
                  <input type=”checkbox” name=”hobby[]” value=”筋トレ”>筋トレ<br>
        出身地:<select name=”addr”>
                                <option>TOKYO</option>
                                <option>SATAMA</option>
                                <option>CHIBA</option>
                        </select><br>
        備考:<textarea name=”memo” rows=”6″ cols=”30″></textarea><br>
        <input type=”submit” name=”button” value=”COMMIT”>
</form>
</body>
</html>

JSONデータの受け取り

PHPではPOSTデータを$_POSTで受け取れるのは「application/x-www-form-urlencoded」又は「multipart/form-data」のみですから、JSONデータを受け取る場合、file_get_contents(“php://input”)で良い。

<!DOCTYPE html>
<html lang=”ja”>
<head></head>
<body>
<?php
        $json_str = file_get_contents(“php://input”);
        $param = json_decode($json_str, true);

        if (!empty($param)){
                echo ‘名前:’.$param[‘username’].'<br>’;
                echo ‘パスワード:’.$param[‘pwd’].'<br>’;
                echo ‘性別:’.$param[‘sex’].'<br>’;
                echo ‘趣味:’.(isset($param[‘hobby’])?implode(‘,’,$param[‘hobby’]):”).'<br>’;
                echo ‘出身地:’.$param[‘addr’].'<br>’;
                echo ‘備考:’.$param[‘memo’].'<br>’;
        }
?>
<form method=”GET” action=””>
         名前:<input type=”text” name=”username”><br>
        パスワード:<input type=”password” name=”pwd”><br>
        性別:<input type=”radio” name=”sex” value=”1″>男
                  <input type=”radio” name=”sex” value=”0″>女<br>
        趣味:<input type=”checkbox” name=”hobby[]” value=”音楽ライブ”>音楽ライブ
                  <input type=”checkbox” name=”hobby[]” value=”映画鑑賞”>映画鑑賞
                  <input type=”checkbox” name=”hobby[]” value=”アニメ”>アニメ
                  <input type=”checkbox” name=”hobby[]” value=”筋トレ”>筋トレ<br>
        出身地:<select name=”addr”>
                                <option>TOKYO</option>
                                <option>SATAMA</option>
                                <option>CHIBA</option>
                        </select><br>
        備考:<textarea name=”memo” rows=”6″ cols=”30″></textarea><br>
        <input type=”submit” name=”button” value=”COMMIT”>
</form>
</body>
</html>

チェックボックスデータの受け取り

チェックボックスデータをPHP側で受け取られるように、以下のようなHTMLを書かなければ、受け取られない。
HTMLタグのnameは配列に設定する。name=”hobby[]”
PHP側で、implode関数使えば、配列を文字列にしてくれます。

<!DOCTYPE html>
<html lang=”ja”>
<head></head>
<body>
<?php
    if (!empty($_POST)){
       echo ‘趣味:’.(isset($_POST[‘hobby’])?implode(‘,’,$_POST[‘hobby’]):”).'<br>’;
    }
?>
<form method=”post” action=””>
       趣味:<input type=”checkbox” name=”hobby[]” value=”音楽ライブ”>音楽ライブ
                <input type=”checkbox” name=”hobby[]” value=”映画鑑賞”>映画鑑賞
                <input type=”checkbox” name=”hobby[]” value=”アニメ”>アニメ
                 <input type=”checkbox” name=”hobby[]” value=”筋トレ”>筋トレ<br>
       <input type=”submit” name=”button” value=”COMMIT”>
</form>
</body>
</html>

GETリクエスト情報から連想配列に変換

$query_str = filter_input(INPUT_SERVER, ‘QUERY_STRING’);   //リクエスト情報取得
parse_str($query_str, $params);     //リクエスト情報を配列に変換する

連想配列からJSONにする

json_encode($params,JSON_UNESCAPED_UNICODE); //連想配列をJSONに変換する

JSONデータから連想配列にする

json_decode( json_data , true )
タイトルとURLをコピーしました