0

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; }
4

2 に答える 2

0

どうもありがとうございました。スクリプトは完全に機能しています。データベースで user_auth_token の長さを 37 ではなく 18 に誤って設定しました。もう一度ありがとう。

于 2013-08-15T18:09:41.623 に答える