1

HTTP 要求を Web サイトに送信し、HTTP 応答を取得する小さなアプリケーションを実行しようとしています。ヘッダーのステータスを使用して、リクエストで何が起こったかを確認します。コードは非常にシンプルで短いですがHTTP/1.1 200 OK、すべてがうまくいくと、パーソナライズ メッセージの代わりにデフォルトのメッセージが表示されます。

注: リクエストは 2 つまたは 3 つの部分を持つことができます。2 つの部分は認証のみで、3 つ目の部分は何かを追加する必要があることを意味します。コードの他の部分について何かコメントがありましたら、私も喜んで拝見いたします。注2:トークンはユーザー名です。本当に必要かどうかわからないためです。

<?php
if(isset($_POST['usernameUS'])&&isset($_POST['passwordUS'])&&!empty($_POST['usernameUS'])&&!empty($_POST['passwordUS']))  {
    try {
        $hostname = "";
        $database = "";
        $username = "";
        $password = "";
        $pdo = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
        $stmt = $pdo->prepare("SELECT salt, password FROM users WHERE account=:account");
        $stmt->bindParam(':account', $_POST['usernameUS'], PDO::PARAM_STR);
        $stmt->execute();
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
        $passwordUS = $pdo->quote($_POST['passwordUS']);
        $Blowfish_Pre = '$2a$05$';
        $Blowfish_End = '$';
        $bcrypt_salt = $Blowfish_Pre . $row['salt'] . $Blowfish_End;
        $hashed_password = crypt($passwordUS, $bcrypt_salt);
        if ($hashed_password == $row['password']) {
            if(isset($_POST['message']))    {
                try {
                    $stmt = $pdo->prepare("INSERT INTO newData (ip , account , token, message) VALUES (:ip, :username, :token, :message)");
                    $stmt->bindParam(':ip', $_POST['usernameUS'], PDO::PARAM_STR);
                    $stmt->bindParam(':username', $_POST['usernameUS'], PDO::PARAM_STR);
                    $stmt->bindParam(':token', $_POST['usernameUS'], PDO::PARAM_STR);
                    $stmt->bindParam(':message', $_POST['message'], PDO::PARAM_STR);
                    $value = $stmt->execute();
                    if($value)  {
                        header("HTTP/1.1 200 Added");
                    }
                    else {
                        header("HTTP/1.1 400 Could not add information");
                    }
                } catch (PDOException $e) {
                    header("HTTP/1.1 400 Cannot insert message", false);
                    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
                }
            }
                header("HTTP/1.1 200 Authenticated", false);
        } 
        else {
            header("HTTP/1.1 400 Incorrect Login Information", false);
        }
    } catch(PDOException $e) {
        header("HTTP/1.1 400 Could not connect", false);
        file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
    }
}
else {
    header( 'Location: http://www.example.com/' ) ;
}
?>
4

1 に答える 1

0

答えは見つかりましたが、説明は見つかりませんでした。200のコードを使うと常に「OK」になるので、400に変更すれば自分で返信できるように設定できました。

自分の質問に答えることが断食を求めることなのか、それとも少なくとも解決策を探し続けることを意味するのかはわかりません:S

于 2013-01-05T17:23:26.547 に答える