ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して基本的なパスワードなしのログインを行う方法

PHP を使用して基本的なパスワードなしのログインを行う方法

PHPz
PHPzオリジナル
2023-06-22 08:01:421410ブラウズ

Webアプリケーション開発において、毎回アカウント番号やパスワードを入力することなく、一度ログインすると長時間ログイン状態を維持できるパスワードフリーログイン(Remember Me)は非常に一般的な機能です。人気のある Web 開発言語として、PHP にはこの機能を実現する簡単な方法がいくつか用意されています。この記事では、PHP を使用して基本的なパスワードなしでログインする方法を紹介します。

  1. Set Cookie

PHP では、setcookie() 関数を使用して Cookie を設定できます。ユーザーがパスワードなしでログインすることを選択した場合、次のように設定できます。ユーザーがログインに成功した後、Cookie を設定してユーザーのログイン状態を保存します。サンプル コードは次のとおりです。

// 设置cookie
setcookie('remember_me', '1', time() + 86400 * 7);

上記のコードでは、値が「1」、有効期間が 7 日間の「remember_me」という名前の Cookie を設定します。このようにして、ユーザーが次回 Web サイトにアクセスしたときに、Cookie に「remember_me」が存在するかどうかを確認して、ユーザーがパスワードなしでログインすることを選択したかどうかを判断できます。

  1. Cookie の確認

ユーザーが Web サイトにアクセスするたびに、Cookie に「remember_me」が存在するかどうかを確認して、ユーザーがログインしているかどうかを確認する必要があります。以下はサンプル コードです。

// 检查cookie
if (isset($_COOKIE['remember_me'])) {
    // 用户已登录
} else {
    // 用户未登录
}

上記のコードでは、ユーザーに適切なページを表示するために、$_COOKIE['remember_me'] が存在するかどうかを確認することでユーザーがログインしているかどうかを判断します。

  1. ユーザーをログイン状態に保つ

ユーザーがパスワードなしでログインすることを選択した場合、ユーザーがパスワードを入力する必要がないように、ユーザーのログイン ステータスを保存する必要があります。アカウントとパスワードを一定期間再度入力します。通常、ユーザーがログインすると「remember_token」をデータベースに保存し、Cookie に保存できます。サンプル コードは次のとおりです。

// 生成remember_token
$remember_token = md5(uniqid(rand(), true));

// 保存remember_token到数据库
$query = "UPDATE users SET remember_token = '{$remember_token}' WHERE id = '{$user_id}'";
mysqli_query($conn, $query);

// 设置cookie
setcookie('remember_token', $remember_token, time() + 86400 * 7);

上記のコードでは、一意の remember_token を生成し、データベースに保存します。次に、記憶されたトークンをユーザーの Cookie に保存します。

  1. ユーザーのログイン ステータスを復元する

ユーザーが Web サイトに再度アクセスしたときに、cookie に remember_token が存在するかどうかを確認し、データベース内で一致するユーザーを見つける必要があります。ユーザーが見つかった場合、そのユーザーはログイン状態に設定されます。サンプル コードは次のとおりです。

// 检查cookie中的remember_token
if (isset($_COOKIE['remember_token'])) {
    // 查询数据库中匹配的用户
    $query = "SELECT * FROM users WHERE remember_token = '{$_COOKIE['remember_token']}'";
    $result = mysqli_query($conn, $query);
    $user = mysqli_fetch_assoc($result);

    // 如果找到用户,则将用户设置为已登录状态
    if ($user) {
        $_SESSION['user_id'] = $user['id'];
        // 更新remember_token,防止被恶意利用
        $new_remember_token = md5(uniqid(rand(), true));
        $query = "UPDATE users SET remember_token = '{$new_remember_token}' WHERE id = '{$user['id']}'";
        mysqli_query($conn, $query);
        // 更新cookie
        setcookie('remember_token', $new_remember_token, time() + 86400 * 7);
    }
}

上記のコードでは、Cookie 内の remember_token をチェックし、データベースから一致するユーザーを検索します。ユーザーが見つかった場合は、そのユーザーがログインするように設定し、remember_token を更新して、悪意のある使用を回避します。

概要

この記事では、PHP を使用して基本的なパスワードなしのログインを行う方法を紹介しました。これは非常に一般的な Web アプリケーション機能であり、実装する際はセキュリティと合法性を確保するように注意する必要があります。実装する際にはこの記事を参照することをお勧めしますが、特定の状況に応じて適切な修正や調整を行う必要があります。

以上がPHP を使用して基本的なパスワードなしのログインを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。