【PHP】じぶんコインAPIの使い方

閲覧しやすいようにまとめました!

テスト環境

■現在のテスト環境
MANP 5.2
WordPress 5.0
PHP 7.2.10
MySQL

■テストソース配置場所
/Applications/MANP/htdocs/phptest
■用意したテストソース
index.html
coinCount.php : コインの枚数
coinMax.php : コインの総発行枚数
coinPer.php : コインのパーセンテージ
coinValue.php : コインの価値
bending.php : 自販機一覧
coinInfo.php : コインの基本情報
allID.php : 全ユーザーID
notHasCoinIDs.php : 持ってないコイン一覧
allHasCoinInfo.php : 保持してる全コイン情報

テストリンクの用意

index.htmlに今回作成するリンクを作成。

<html>
    <head>
        <title>PHP Test</title>
    </head>
    <body>
        <a href="./coinCount.php">coinCount</a><br>
        <a href="./coinMax.php">coinMax</a><br>
        <a href="./coinPer.php">coinPer</a><br>
        <a href="./coinValue.php">coinValue</a><br>
        <a href="./bending.php">bending</a><br>
        <a href="./coinInfo.php">coinInfo</a><br>
        <a href="./allID.php">allID</a><br>
        <a href="./notHasCoinIDs.php">notHasCoinIDs</a><br>
        <a href="./allHasCoinInfo.php">allHasCoinInfo</a>
    </body>
</html>

コインの枚数

がんばる(userID:ganbarumasu0525)が保持するがんばるコイン(coinID:ganbarumasu0525)の枚数を取得

coinCount.php

<html>
    <head>
        <title>coinCount</title>
    </head>
    <body>
        <?php 
            //今回IDを固定値で入れてますが汎用性考えると変数とかにしといた方がいいかもですね
            $url = "https://crypto-app.tokyo/qCoin/api/api.php?type=coinCount&userID=ganbarumasu0525&coinID=ganbarumasu0525";
            
            //cURLのセッション初期化
            $ch = curl_init();

            // オプションを設定(コメントはPHPのリファレンスから引用)
            // 取得する URL 。curl_init() でセッションを 初期化する際に指定することも可能です。
            curl_setopt($ch, CURLOPT_URL, $url); 
            // TRUE を設定すると、curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            //FALSE を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

            //値の取得
            $coinCount = curl_exec($ch);
            
            //test用
            //$coinCount = "test";
            //$coinCount = null;
            
            //値のチェック
            if(is_numeric($coinCount)){
                echo "<p>現在がんばるが持ってるがんばるコインは".$coinCount."枚くらいです!</p>";
            }else{
                echo "<p>なんか値がちゃんと取得できてねぇっす!</p>";
            }
            
            curl_close($conn);
        ?> 
    </body>
</html>

実行結果

「コインの総発行枚数」の取得


がんばる(userID:ganbarumasu0525)が発行したがんばるコイン(coinID:ganbarumasu0525)の総発行枚数を取得

coinMax.php

<html>
    <head>
        <title>coinMax</title>
    </head>
    <body>
        <?php 
            //今回からIDとか変数に変えておきましょう。次回くらいからフォーム間のデータ受け渡しに挑戦してみたいと思います。
            $coinID = "ganbarumasu0525";
            $url = "https://crypto-app.tokyo/qCoin/api/api.php?type=coinMax&coinID=".$coinID;
            
            //cURLのセッション初期化
            $ch = curl_init();

            // オプションを設定(コメントはPHPのリファレンスから引用)
            // 取得する URL 。curl_init() でセッションを 初期化する際に指定することも可能です。
            curl_setopt($ch, CURLOPT_URL, $url); 
            // TRUE を設定すると、curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            //FALSE を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

            //値の取得
            $coinMax = curl_exec($ch);
            
            //test用
            //$coinCount = "test";
            //$coinCount = null;
            
            //値のチェック
            if(is_numeric($coinMax)){
                echo "<p>現在がんばるが発行したがんばるコインの総枚数は".$coinMax."枚くらいです!</p>";
            }else{
                echo "<p>なんか値がちゃんと取得できてねぇっす!</p>";
            }
            
            curl_close($conn);
        ?> 
    </body>
</html>

実行結果

「コインのパーセンテージ」の取得


がんばる(userID:ganbarumasu0525)が保持するがんばるコイン(coinID:ganbarumasu0525)が総発行枚数の何パーセントか取得。小数第2以下は四捨五入。

<html>
    <head>
        <title>coinPer</title>
    </head>
    <body>
        <?php 
            //これも引数を変数に変えておきましょう。
            $userID = "ganbarumasu0525";
            $coinID = "ganbarumasu0525";
            $url = "https://crypto-app.tokyo/qCoin/api/api.php?type=coinPer&userID=".$userID."&coinID=".$coinID;
            
            //cURLのセッション初期化
            $ch = curl_init();

            // オプションを設定(コメントはPHPのリファレンスから引用)
            // 取得する URL 。curl_init() でセッションを 初期化する際に指定することも可能です。
            curl_setopt($ch, CURLOPT_URL, $url); 
            // TRUE を設定すると、curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            //FALSE を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

            //値の取得
            $coinPer = curl_exec($ch);
            
            //test用
            //$coinCount = "test";
            //$coinCount = null;
            
            //値のチェック
            if(is_numeric($coinPer)){
                echo "<p>現在がんばるが保持するがんばるコインの持ちコイン比率は".round($coinPer, 2)."%です!</p>";
            }else{
                echo "<p>なんか値がちゃんと取得できてねぇっす!</p>";
            }
            
            curl_close($conn);
        ?> 
    </body>
</html>

実行結果(計算式:現在の保持枚数/総発行枚数*100)

「コインの価値」の取得

がんばるコイン(coinID:ganbarumasu0525)の価値取得

coinValue.php

 <html>
    <head>
        <title>coinValue</title>
    </head>
    <body>
        <?php 
            //これも引数を変数に変えておきましょう。
            $coinID = "ganbarumasu0525";
            $url = "https://crypto-app.tokyo/qCoin/api/api.php?type=coinValue&coinID=".$coinID;
            
            //cURLのセッション初期化
            $ch = curl_init();

            // オプションを設定(コメントはPHPのリファレンスから引用)
            // 取得する URL 。curl_init() でセッションを 初期化する際に指定することも可能です。
            curl_setopt($ch, CURLOPT_URL, $url); 
            // TRUE を設定すると、curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            //FALSE を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

            //値の取得
            //何も処理しない場合
            $coinValue1 = curl_exec($ch);
            //htmlentities — 適用可能な文字を全て HTML エンティティに変換する
            $coinValue2 = htmlentities(curl_exec($ch));
            //strip_tags — 文字列から HTML および PHP タグを取り除く
            $coinValue3 = strip_tags(curl_exec($ch));
            
            echo "coinValu1<br><p>がんばるが提供する価値<br>".$coinValue1."</p><br>";
            echo "coinValu2<br><p>がんばるが提供する価値<br>".$coinValue2."</p><br>";
            echo "coinValu3<br><p>がんばるが提供する価値<br>".$coinValue3."</p><br>";
            
            curl_close($conn);
        ?> 
    </body>
</html>

実行結果

coinValu1 : タグも正常に処理されて表示

coinValu2 : htmlentitiesで処理した場合はタグが文字列として処理

coinValu3 : strip_tagsで処理した場合はタグが除去されて処理

「自販機一覧」の取得

がんばるコイン(coinID:ganbarumasu0525)の自販機一覧を取得

bending.php

<html>
    <head>
        <title>bending</title>
    </head>
    <body>
        <?php 
            //これも引数を変数に変えておきましょう。
            $coinID = "ganbarumasu0525";
            $url = "https://crypto-app.tokyo/qCoin/api/api.php?type=bending&coinID=".$coinID;
            
            //cURLのセッション初期化
            $ch = curl_init();

            // オプションを設定(コメントはPHPのリファレンスから引用)
            // explode — 文字列を文字列により分割する
            curl_setopt($ch, CURLOPT_URL, $url); 
            // TRUE を設定すると、curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            //FALSE を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

            //値の取得
            //explode — 文字列を文字列により分割する
            //改行区切りで分割
            $bending = explode("\n",curl_exec($ch));

            //test
            //$bending = null;
            
            if(!($bending === null)){
                //配列っぽいのでそれを全出力
                foreach ($bending as &$b) {
                    //さらに行ごとにタブ区切りを分割
                    $o = explode("\t",$b);
                    echo "自販機名:".$o[0].",URL:".$o[1]."<br>";
                }
            }else{
                echo "<p>なんか値がちゃんと取得できてねぇっす!</p>";
            }
            
            curl_close($conn);
        ?> 
    </body>
</html>

実行結果

「コインの基本情報」の取得

がんばるコイン(coinID:ganbarumasu0525)の基本情報取得

coinInfo.php

<html>
    <head>
        <title>coinInfo</title>
    </head>
    <body>
        <?php 
            //これも引数を変数に変えておきましょう。
            $coinID = "ganbarumasu0525";
            $url = "https://crypto-app.tokyo/qCoin/api/api.php?type=coinInfo&coinID=".$coinID;
            
            //cURLのセッション初期化
            $ch = curl_init();

            // オプションを設定(コメントはPHPのリファレンスから引用)
            // explode — 文字列を文字列により分割する
            curl_setopt($ch, CURLOPT_URL, $url); 
            // TRUE を設定すると、curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            //FALSE を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

            //値の取得
            //json_decode — JSON 文字列をデコードする
            //TRUE の場合、返されるオブジェクトは連想配列形式になります。
            $coinInfo = json_decode(curl_exec($ch),true);
            
            echo "coinName:";
            echo $coinInfo["coinName"]."<br>";
            echo "unit:";
            echo $coinInfo["unit"]."<br>";
            echo "totalCount:";
            echo $coinInfo["totalCount"]."<br>";
            echo "userName:";
            echo $coinInfo["userName"]."<br>";  
            
            curl_close($conn);
        ?> 
    </body>
</html>

実行結果

「全ユーザーID」の取得

全ユーザIDを取得

allID.php

<html>
    <head>
        <title>allID</title>
    </head>
    <body>
    <?php
        $url = "https://crypto-app.tokyo/qCoin/api/api.php?type=allID";
            
        //cURLのセッション初期化
        $ch = curl_init();

        // オプションを設定(コメントはPHPのリファレンスから引用)
        // 取得する URL 。curl_init() でセッションを 初期化する際に指定することも可能です。
        curl_setopt($ch, CURLOPT_URL, $url); 
        // TRUE を設定すると、curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        //FALSE を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
        
        //改行区切りで分割
        $allID = explode("\n",curl_exec($ch));

        //test
        //$allID = null;
        
        if(!($allID === null)){
            //全出力
            foreach ($allID as &$a) {
                echo $a."<br>";
            }
        }else{
            echo "<p>なんか値がちゃんと取得できてねぇっす!</p>";
        }
    ?>
    </body>
</html>

実行結果

「持ってないコイン一覧」の取得

持ってないコイン一覧を取得

notHasCoinIDs.php

<html>
    <head>
        <title>notHasCoinIDs</title>
    </head>
    <body>
        <?php 
            $coinID = "ganbarumasu0525";
            $url = "https://crypto-app.tokyo/qCoin/api/api.php?type=notHasCoinIDs&coinID=".$coinID;
            
            //cURLのセッション初期化
            $ch = curl_init();

            // オプションを設定(コメントはPHPのリファレンスから引用)
            // explode — 文字列を文字列により分割する
            curl_setopt($ch, CURLOPT_URL, $url); 
            // TRUE を設定すると、curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            //FALSE を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

            //改行区切りで分割
            $notHasCoinIDs = explode("\n",curl_exec($ch));

            if(!($notHasCoinIDs === null)){
                foreach ($notHasCoinIDs as &$n) {
                    echo $n."<br>";
                }
            }else{
                echo "<p>なんか値がちゃんと取得できてねぇっす!</p>";
            }
            
            curl_close($conn);
        ?> 
    </body>
</html>

実行結果

「保持してる全コイン情報」の取得

保持してる全コイン情報を取得

allHasCoinInfo.php

<html>
    <head>
        <title>allHasCoinInfo</title>
    </head>
    <body>
        <?php 
            $coinID = "ganbarumasu0525";
            $url = "https://crypto-app.tokyo/qCoin/api/api.php?type=allHasCoinInfo&coinID=".$coinID;
            
            //cURLのセッション初期化
            $ch = curl_init();

            // オプションを設定(コメントはPHPのリファレンスから引用)
            // explode — 文字列を文字列により分割する
            curl_setopt($ch, CURLOPT_URL, $url); 
            // TRUE を設定すると、curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            //FALSE を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

            //値の取得
            //explode — 文字列を文字列により分割する
            //改行区切りで分割
            $allHasCoinInfo = explode("\n",curl_exec($ch));
            
            if(!($allHasCoinInfo === null)){
                //配列っぽいのでそれを全出力
                foreach ($allHasCoinInfo as &$a) {
                    //さらに行ごとにタブ区切りを分割
                    $o = explode("\t",$a);
                    echo "CoinID:".$o[0].",ユーザ名:".$o[1].",発行枚数:".$o[2].",所持枚数:".$o[3].",アイコンURL:".$o[4]."<br>";
                }
            }else{
                echo "<p>なんか値がちゃんと取得できてねぇっす!</p>";
            }
            
            curl_close($conn);
        ?> 
    </body>
</html>

実行結果

コメント