PHPでユーザログインのAPIを作成しています。以下のコードを作成し、クライントサイドからメールアドレスとパスワードをPOSTしたのですが、401エラーで正しく認証できませんでした。
ユーザデータはデータベースにあるのでメールアドレスとパスワードの打ち間違いはありません。どこを間違えているかわかりますか。またデバッグ方法などありましたら教えて下さい。よろしくお願いします。

ソーズコード

  1 <?php
  2 header("Content-Type: application/json; charset=UTF-8");
  3 header("X-Content-Type-Option: nosniff");
  4 header("Access-Control-Allow-Origin: *");
  5 header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
  6 require_once 'functions.php'
  7 $pdo = initDB()
  8 switch($_SERVER['REQUEST_METHOD']){
  9 case 'POST':
 10   $in = json_decode(file_get_contents('php://input'), true);
 11   if(isset($in['mail_address'])&&isset($in['password'])){
 12     $st = $pdo->prepare("SELECT * FROM user WHERE (mail_address) VALUE (:mail_address)");
 13     $st->bindParam(':mail_address', $in['mail_address'], PDO::PARAM_STR);
 14     $st->execute();
 15     while($row = $st->fetch(PDO::FETCH_ASSOC)){
 16       $password = $row['password'];
 17     }
 18     if($password==$in['password']){
 19       onPostSuccess($in['mail_address']);
 20     }else{
 21       header("HTTP/1.0 401 Unauthorixed");
 22     }
 23   }else{
 24     header("HTTP/1.0 400 Bad Request");
 25   }
 26 }
 27
 28 function onPostSuccess($mailAddress){
 29   $accessToken = makeAccessToken();
 30   $st = $pdo->prepare("UPDATE user SET accessToken=:accessToken WHERE mail_address=:mail_address");
 31   $st->bindParam(':accessToken', $accessToken, PDO::PARAM_STR);
 32   $st->bindParam(':mail_address', $mailAddress, PDO::PARAM_STR);
 33   $st->execute();
 34   header("HTTP/1.0 200 OK");
 35   echo json_encode(array('accessToken' => $accessToken));
 36 }