PHP で Web サービスの認証チャネルを作成しています。最初の 2 行で、データベース内のユーザーに対して設定したランダムな 18 バイトの 16 進数を作成し、同じ auth_token を相手側のユーザーにも送信します。しかし、ユーザーが同じ auth_token を送信してデータを取得すると、スクリプトはデータベースを検索できません。データベースで照会される 16 進コードに問題があります。助けてください。
$hex = bin2hex(openssl_random_pseudo_bytes('18'));
$database->executeObject('UPDATE tbluser SET user_auth_token="'.$hex.'" WHERE user_name="'.$_POST['uid'].'"');
...
...
...
}elseif ( $_POST['query'] = "fetch" && !empty($_POST['auth_token']) ){
$token = $_POST['auth_token'];
$uid = $database->executeObject('SELECT user_id AS id FROM tbluser WHERE user_auth_token="'.$token.'"');
if (!empty($uid)){
$fname = $database->executeObject('SELECT writer_first_name as fname FROM tblwriter WHERE user_id="'.$uid.'"')->fname;
echo $fname;
exit;
}else{ echo "Not Authorized"; exit; }