3

私は非常に単純な問題を抱えていると思います。私は現在 API に取り組んでおり、それを使用する前にログインする必要があります。ログインは http リクエスト経由で行われるため、ログインするには次のようにアクセスします。

http://myapi.com/login.php?email=mail@mail.com&password 

例えば。

電子メールとパスワードが正しい場合、いくつかのセッション変数を設定してセッションを開始します。

session_start();
$_SESSION['idUser'] = $row['id'];
$_SESSION['email'] = $row['email'];
print(json_encode(array("authenticated" => true)));

ただし、API にアクセスし、ターミナルから cURL で (ログインではなく) リクエストを行うと、最初にログイン リクエストを実行したときに、認証されていないと表示されます。別のページで API を呼び出すたびに、セッション変数をチェックします。それらが設定されている場合、ユーザーはログインしています。

function checkSession()
{
    session_start();
    if(!isset($_SESSION['idUser']) || !isset($_SESSION['email']))
    {
            print json_encode(array("error" => "Not authorized"));
            exit();
    }
}

権限がないと表示されるのはなぜですか? Web ブラウザーからページにアクセスすると、すべて正常に動作します。

ありがとう!

4

2 に答える 2

7

これはおそらく、PHP セッションがユーザーの代わりに Cookie を使用してセッションをユーザーのブラウザーに保存するためです。これにより、ユーザーが PHP ページに HTTP リクエストを送信するたびに、PHP アプリがユーザーを認識することができます。

cUrl の「cookie」オプションをいじる必要があります。

基本的に、最初にログインしてセッション Cookie を保存します。

curl -c cookies.txt http://myapi.com/login.php?email=mail@mail.com&password=yourpassword

次に、cUrl にCookieを送り返すように指示する次のリクエストを行います。

curl -b cookies.txt http://myapi.com/login.php?email=mail@mail.com&password 

Cookie が cookies.txt 内にプレーン テキストとして保存されていることがわかります。

于 2012-10-05T19:16:03.843 に答える
2

クッキーの瓶が必要...

http://curl.haxx.se/libcurl/php/examples/cookiejar.html

ブラウザ Cookie != コード (curl クライアント) Cookie。

クッキーモンスターの歌が頭から離れない…

于 2012-10-05T19:15:51.120 に答える