Asahi-jp
@Asahi-jp

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PHPとMySQLの問題

Q&A

Closed

謎のエラー

PHPでQiitaとTwitterと2chを融合させたようなWebアプリをつくっています。
アカウント登録機能の実装中にエラーが発生しました。
解決方法を教えて下さい。

発生している問題・エラー

画面が真っ白

該当するソースコード

<?php session_start(); ?>
<!DOCTYPE html>
<html>

<head>
    <title>ログイン</title>
    <link rel="stylesheet" type="text/css" href="login.css">
    <meta charset="utf-8">
</head>

<body>
    <?php if ($_SERVER['REQUEST_METHOD'] == 'GET') { ?>
        <div class="register-container">
            <h2>新規登録</h2>
            <form action=<?php echo $_SERVER['PHP_SELF'] ?> method="post">
                <label for="name">名前:</label>
                <input type="text" id="name" name="name" required>

                <label for="email">メールアドレス:</label>
                <input type="email" id="email" name="email" required>

                <label for="password">パスワード:</label>
                <input type="password" id="password" name="password" required>

                <label for="confirm_password">パスワード確認:</label>
                <input type="password" id="confirm_password" name="confirm_password" required>

                <button type="submit">登録</button>
                <?php if (isset($_SESSION["err_register_message"])) {
                    echo "<p style='color: red;'>" . $_SESSION["err_register_message"] . "</p>";
                } ?>
            </form>
            <p>既にアカウントをお持ちの方は<a href="login.php">ログインページ</a></p>
        </div>
    <?php } ?>

    <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { ?>
        <?php

        include "sql_connection.php";

        // フォームからの入力を取得
        $name = $_POST["name"];
        $email = $_POST["email"];
        $password = $_POST["password"];
        $confirm_password = $_POST["confirm_password"];

        $stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
        $stmt->bind_param("s", $email);
        $stmt->execute();
        $result = $stmt->get_result();

        if ($result->num_rows === 0) {
            if ($password === $confirm_password) {
                $hashed_password = password_hash($password, PASSWORD_DEFAULT);
                $stmt = $conn->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?)");
                $stmt->bind_param("sss", $name, $email, $hashed_password);
                $stmt->execute();

                $stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
                $stmt->bind_param("s", $email);
                $stmt->execute();
                $result = $stmt->get_result();
                $user = $result->fetch_assoc();
                // ログイン成功時にindex.phpにリダイレクト
                $_SESSION["id"] = $user["id"];
                $_SESSION["name"] = $user["name"];
                $_SESSION["email"] = $user["email"];
                $_SESSION["err_register_message"] = null;

                header("Location: index.php");
                exit;
            } else {
                $_SESSION["err_register_message"] = "確認と違うパスワードが入力されました。";
                header("Location: register.php");
                exit;
            }
        } else {
            // ログイン失敗
            $_SESSION["err_register_message"] = "そのemailは登録されています。";
            header("Location: register.php");
            exit;
        }

        $conn->close();
        ?>
    <?php } ?>
</body>

</html>

自分で試したこと

PHPMyAdmin上からデータを挿入、ログイン・アカウント情報の変更ができるかの検証。
結果は全く問題なしでした。

上記のソースコードはシステムのアカウント機能の基盤の参考用に
https://qiita.com/fwzis/items/5fa0e33da3484b5fde70
から拝借していたものです。MySQL、PHPのVerは@fwzisさんのものと全く同じです。
どなたか原因のわかる方、回答お願いします。

0

2Answer

エラーメッセージは出てないのですか? デバッガを使ってステップ実行させてどこに問題があるか調べられませんか?

0Like

Comments

  1. @Asahi-jp

    Questioner

    phpのEroor Messageをオンにしても真っ白です。
    Net2ftpのAce Code Editerでエラー探してもエラーは発見できませんでした。
    VScodeのデバッガを使ってステップ実行させて見ましたが、やはり不明です。

Comments

  1. @Asahi-jp

    Questioner

    増設していたテーブルをnullに設定し忘れていたのが原因でした。nullにしたことでエラーは修復できました。

Your answer might help someone💌