もともと、私は自分のウェブサイトを Linux のラップトップでローカルにセットアップしていましたが、最近、そこからメインの PC である Windows に作業を移行しました。作業を移す理由は、私が使用している種類の Linux が非常にバグが多く、インターネットに問題がない場合でも接続が常に切断されたり、Web サイトを更新するのに信じられないほど長い時間がかかったりすることがわかったからです。
PHP、Apache、および MySQL をセットアップしたローカルホストを手動で設定する代わりに、XAMPP を使用しています。私が現在使用している IDE は、私の phpmyadmin に直接接続されている PhpStorm です。
今、私の問題は、WSOD - ホワイト スクリーン オブ デスが表示されることです。たとえば、私の Web サイトから誰かを登録しようとすると、この空白の白い画面にエラーが表示されず、可能なすべてのヘルプを調べました。これを修正するために見つけます。それでも成功していないので、コードが問題なのか、それとも他の何かが問題なのか、わからないままです。
これは、ログイン機能を試しても同じです。
あちこちで小さなエラーが発生したにもかかわらず、これは私のラップトップでは問題なく機能しました。
エラー報告を有効にして、php.ini
ファイルで有効にしようとしましたが、無視されるか、XAMPP が拒否する (機能しない) だけです。
例を示すために、データベースと登録の両方のとにかく私のコードを次に示します。
Register.php:
<?php
require 'connection.php';
ini_set('display_errors', 1);
ini_set('html_errors', 0);
error_reporting(E_ALL);
$firstname = isset($_POST['firstname']) ? $_POST['firstname'] : '';
$lastname = isset($_POST['lastname']) ? $_POST['lastname'] : '';
$email = isset($_POST['email']) ? $_POST['email'] : '';
$username = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
$confirmpassword = isset($_POST['confirmpassword']) ? $_POST['confirmpassword'] : '';
$message[] = '';
if (!empty($_POST['username']) && !empty($_POST['password']))
{
//var_dump($password, $confirmpassword);
if(strlen($password) > 6 && strlen($password) < 32)
{
if($password == $confirmpassword)
{
$records = $conn->prepare('SELECT * FROM users WHERE Username = :username');
$records->bindParam(':username', $_POST['username']);
$records->execute();
$results = $records->fetchAll(PDO::FETCH_ASSOC);
//var_dump($results);
if(count($results) > 0)
{
echo 'That username is already in use, please use a different one.';
}
else
{
$emailRecords = $conn->prepare('SELECT * FROM users WHERE Email = :email');
$emailRecords->bindParam(':email', $_POST['email']);
$emailRecords->execute();
$emailResults = $emailRecords->fetchAll(PDO::FETCH_ASSOC);
if(count($emailResults) > 0)
{
echo 'That email is already in use, are you sure you\'re not registered with us already? <a href="loginPage.php">Login Here</a>';
}
else
{
$sql = "INSERT INTO users (Firstname, Lastname, Role, Email, Username, Password) VALUES (:firstname, :lastname, :role, :email, :username, :passwords)";
$stmt = $conn->prepare($sql);
$hashPassword = password_hash($password, PASSWORD_DEFAULT);
$stmt->bindParam(':firstname', strip_tags($firstname));
$stmt->bindParam(':lastname', strip_tags($lastname));
$stmt->bindParam(':role', $_POST['role']);
$stmt->bindParam(':email', strip_tags($email));
$stmt->bindParam(':username',strip_tags($username));
$stmt->bindParam(':passwords',strip_tags($hashPassword));
if ($stmt->execute())
{
echo 'Well done! You have successfully registered with us!';
header('Location:loginPage.php');
}
else
{
echo 'There seems to be an issue getting you registered.';
//$message = 'There seems to be an issue getting you registered.';
}
}
}
}
else
{
echo 'Your passwords do not match, please enter them correctly.';
//$message = 'Your passwords do not match, please enter them correctly.';
//header('Location:registerPage.php');
}
}
else
{
echo 'Your password must be between 6 to 32 characters.';
//header('Location:registerPage.php');
}
}
データベース - テーブル ユーザー: (ログインして登録する必要があります)
CREATE TABLE users
(
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
Firstname VARCHAR(50) NOT NULL,
Lastname VARCHAR(50) NOT NULL,
Role VARCHAR(30) NOT NULL,
Email VARCHAR(150) NOT NULL,
Username VARCHAR(60) NOT NULL,
Password VARCHAR(128) NOT NULL
);
CREATE UNIQUE INDEX Email ON users (Email);
CREATE UNIQUE INDEX Username ON users (Username);