2013/11/12 久米
名前とパスワードを送り、結果をjsonでもらう。
post送信
<?php
//POSTデータ
$data = http_build_query(
  array(
    "name" => "test01",
    "pass" => "771"
  )
);
$opts = array(
  "http" => array(
    "method"  => "POST",
    "header"  => "Content-type: application/x-www-form-urlencoded",
    "content" => $data
  )
);
$url = "http://localhost/web3/api/login.php";
print file_get_contents($url, false, stream_context_create($opts));
?> | 
  
get送信
<?php  | 
  
jsonで受け取った後は適切にデザインする。
POSTを受け、DBを検索、挿入し、結果をjson形式で出力するスクリプト例
下記はプリペアードステートメントで作っている。
<?php
if (!isset($_REQUEST["name"])) {
    printResult("NO_NAME","");
    exit();
}
if (!isset($_REQUEST["pass"])) {
    printResult("NO_PASS","");
    exit();
}
$name = $_REQUEST["name"];
$pass = $_REQUEST["pass"];
$link = mysqli_connect("localhost", "loginapi", "771", "loginapi");
if (!$link) {/* 接続状況をチェック */
    printResult(mysqli_connect_error(), "");
    exit();
}
$stmt = mysqli_prepare($link, "SELECT name FROM users WHERE lower(name)=lower(?) AND pass=?");
mysqli_stmt_bind_param($stmt, 'ss', $name, $pass);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $hontono_name);
mysqli_stmt_fetch($stmt);
mysqli_stmt_close($stmt);
mysqli_close($link);
$rst = "";
if($hontono_name==null){
    $rst = "NO_USER";
}else{
    $rst = "OK";
}
printResult($rst, $hontono_name);
function printResult($r, $n) {
    $arr["result"] = $r;
    $arr["name"] = $n;
    printJson($arr);
}
function printJson($a) {
    $json = json_encode($a);
    header('Content-Type: text/javascript; charset=utf-8');
    print $json;
}
?>     | 
  
| result | 意味 | 
| OK | 成功 | 
| NO_NAME | 失敗:名前を入力してください | 
| NO_PASS | 失敗:パスワードを入力してください | 
| NO_USER | 失敗:名前かパスワードが間違えています |