ホームページ > データベース > mysql チュートリアル > PHP ログイン フォームが MySQL に接続できないのはなぜですか?

PHP ログイン フォームが MySQL に接続できないのはなぜですか?

Susan Sarandon
リリース: 2025-01-03 18:50:39
オリジナル
164 人が閲覧しました

Why Is My PHP Login Form Failing to Connect to MySQL?

ログイン フォームが MySQL データベースに接続できないのはなぜですか?

次の理由により、ログイン フォームは MySQL データベースに接続できません。いくつかの理由があります。次の応答は、潜在的な問題に対処するための包括的なソリューションを提供します:

安全なパスワードの処理:

代わりにパスワード ハッシュを使用してユーザー パスワードを保護することが重要です。それらを平文で保存すること。 password_hash() などの関数を利用してパスワードを一方向に暗号化し、セキュリティを確保します。

SQL インジェクション防止:

user- SQL クエリで直接データを提供します。プリペアド ステートメントとバインド パラメータを使用して、データベースを侵害する可能性のある悪意のある SQL インジェクション攻撃を防ぎます。

コードによる mysqli の機能例:

register.php

// DB Credentials
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_accounts2";

// Secure Connection
mysqli_report(MYSQLI_REPORT_ALL);
error_reporting(E_ALL);
ini_set("display_errors", 1);

// Database Connection
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// User Registration
if (isset($_POST['register'])) {
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $password = mysqli_real_escape_string($conn, $_POST['password']);

    // Password Hashing
    $hashed_password = password_hash($password, PASSWORD_DEFAULT);

    // Prepared Statement and Parameter Binding
    $stmt = $conn->prepare("INSERT INTO user_accounts2 (email, password) VALUES (?, ?)");
    $stmt->bind_param("ss", $email, $hashed_password);

    // Query Execution
    $stmt->execute();
}

// Close Connection
$stmt->close();
$conn->close();
ログイン後にコピー

login.php

// DB Credentials and Secure Connection Same as register.php

// User Login
if (isset($_POST['login'])) {
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $password = mysqli_real_escape_string($conn, $_POST['password']);

    // Prepared Statement and Parameter Binding
    $stmt = $conn->prepare("SELECT * FROM user_accounts2 WHERE email = ?");
    $stmt->bind_param("s", $email);

    // Query Execution
    $stmt->execute();
    $result = $stmt->get_result();

    if ($row = $result->fetch_assoc()) {
        // Password Verification
        if (password_verify($password, $row['password'])) {
            echo "Logged in successfully!";
        } else {
            echo "Invalid credentials";
        }
    } else {
        echo "User not found";
    }

    // Close Statement and Connection
    $stmt->close();
    $conn->close();
}
ログイン後にコピー

コードによる pdo 機能例:

PDO を使用したユーザー認証の詳細な例については、このリソースを参照してください: [回答: PDO ユーザー認証](https://stackoverflow.com/questions/5926241/php-pdo-user) -authentication/5927236#5927236)

以上がPHP ログイン フォームが MySQL に接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート