ホームページ  >  記事  >  バックエンド開発  >  PHPは、ナレッジ質疑応答Webサイトに質問作成者と回答者の認証機能を実装しています。

PHPは、ナレッジ質疑応答Webサイトに質問作成者と回答者の認証機能を実装しています。

PHPz
PHPzオリジナル
2023-07-02 12:41:24855ブラウズ

PHP は知識質疑応答 Web サイトに質問作成者と回答者の認証機能を実装します

現代のソーシャル ネットワークでは、知識質疑応答 Web サイトの人気が日に日に高まっています。 Web サイトの信頼性とユーザー エクスペリエンスを向上させるために、質問の作成者と回答者の認証は重要な機能です。この記事では、ナレッジ質疑応答サイトに質問作成者と回答者の認証機能をPHPを使って実装する方法を紹介します。

まず、ユーザー データベースを作成し、ユーザー情報を保存するための対応するフィールドを追加する必要があります。この例では、id、ユーザー名、電子メール、パスワード、is_author_verified、is_answerer_verified のフィールドを持つ「users」という名前のテーブルを作成したと仮定します。

次に、ユーザー登録ページとログインページを作成する必要があります。登録ページではユーザーが新しいアカウントを作成でき、ログイン ページは登録ユーザーのログインに使用されます。以下は簡単な登録ページの例です。

<!DOCTYPE html>
<html>
<head>
    <title>注册</title>
</head>
<body>
    <h2>注册</h2>
    <form method="post" action="register.php">
        <input type="text" name="username" placeholder="用户名" required /><br><br>
        <input type="email" name="email" placeholder="邮箱" required /><br><br>
        <input type="password" name="password" placeholder="密码" required /><br><br>
        <input type="submit" value="注册" />
    </form>
</body>
</html>

登録ページがフォームを送信した後、データは「register.php」という名前のバックエンド処理スクリプトに送信されます。以下は簡単な例です:

<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');

// 获取表单数据
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];

// 加密密码
$hashed_password = password_hash($password, PASSWORD_DEFAULT);

// SQL 插入语句
$sql = "INSERT INTO users (username, email, password) VALUES ('$username', '$email', '$hashed_password')";

// 执行插入操作
$conn->query($sql);

// 关闭数据库连接
$conn->close();

// 返回登录页面
header("Location: login.php");
exit();
?>

実際の開発では、ユーザー入力を検証し、SQL インジェクションを防止する必要があることに注意してください。

以下はログイン ページの例です:

<!DOCTYPE html>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <h2>登录</h2>
    <form method="post" action="login.php">
        <input type="email" name="email" placeholder="邮箱" required /><br><br>
        <input type="password" name="password" placeholder="密码" required /><br><br>
        <input type="submit" value="登录" />
    </form>
</body>
</html>

ログイン ページのフォームは、「login.php」という名前のバックエンド処理スクリプトにデータを送信します。以下は簡単な例です:

<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');

// 获取表单数据
$email = $_POST['email'];
$password = $_POST['password'];

// 查询匹配的用户
$sql = "SELECT * FROM users WHERE email='$email'";
$result = $conn->query($sql);

// 验证密码
$user = $result->fetch_assoc();
if ($user && password_verify($password, $user['password'])) {
    // 登录成功,将用户信息保存在 session 中
    session_start();
    $_SESSION['user_id'] = $user['id'];
    $_SESSION['username'] = $user['username'];
    $_SESSION['email'] = $user['email'];
    $_SESSION['is_author_verified'] = $user['is_author_verified'];
    $_SESSION['is_answerer_verified'] = $user['is_answerer_verified'];

    // 跳转到首页或其他页面
    header("Location: index.php");
    exit();
} else {
    // 登录失败,返回登录页
    header("Location: login.php");
    exit();
}
?>

ログインに成功すると、その後のページ アクセスと認証制御のためにセッションにユーザー情報が保存されます。

質問の作成者と回答者の認証機能を実装するには、対応するオプションをユーザー プロフィール ページに追加します。以下は簡単なプロファイル ページの例です。

<!DOCTYPE html>
<html>
<head>
    <title>个人资料</title>
</head>
<body>
    <h2>个人资料</h2>
    <p>用户名:<?php echo $_SESSION['username']; ?></p>
    <p>邮箱:<?php echo $_SESSION['email']; ?></p>
    <form method="post" action="verify.php">
        <input type="checkbox" name="is_author" <?php if($_SESSION['is_author_verified']) echo 'checked'; ?>> 作者<br>
        <input type="checkbox" name="is_answerer" <?php if($_SESSION['is_answerer_verified']) echo 'checked'; ?>> 回答者<br>
        <input type="submit" value="保存" />
    </form>
</body>
</html>

プロファイル ページでは、ユーザーのユーザー名と電子メールが表示され、チェック ボックスを使用してユーザーが作成者として認定されるか回答者として認定されるかを選択できるようにします。フォームが送信されると、データは「verify.php」というバックエンド処理スクリプトに送信されます。以下は簡単な例です。

<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');

// 获取表单数据
$is_author = isset($_POST['is_author']) ? 1 : 0;
$is_answerer = isset($_POST['is_answerer']) ? 1 : 0;

// 更新用户认证信息
$user_id = $_SESSION['user_id'];
$sql = "UPDATE users SET is_author_verified=$is_author, is_answerer_verified=$is_answerer WHERE id=$user_id";
$conn->query($sql);

// 更新 session
$_SESSION['is_author_verified'] = $is_author;
$_SESSION['is_answerer_verified'] = $is_answerer;

// 关闭数据库连接
$conn->close();

// 返回个人资料页面
header("Location: profile.php");
exit();
?>

上記のコードは、PHP を使用して、知識の質問と回答の Web サイトに質問の作成者と回答者の認証機能を実装する方法を示しています。登録、ログイン、プロフィール ページ、認証コントロールにより、トリビア Web サイトの信頼性とユーザー エクスペリエンスを向上させることができます。もちろん、実際のニーズに基づいて、さらに多くの機能とセキュリティ メカニズムを追加できます。

以上がPHPは、ナレッジ質疑応答Webサイトに質問作成者と回答者の認証機能を実装しています。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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