0

もともと、私は自分のウェブサイトを 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);
4

1 に答える 1

1

PhpStorm 独自の組み込み Web サーバーを使用していますが、現在いくつかの問題があります (特に POST リクエスト、たとえばWEB-17317 -- このチケット (スター/投票/コメント) を監視して、進行状況に関する通知を受け取ることができます)。

解決策は、独自の適切な Web サーバー (XAMPP の Apache) を使用することです。

  1. 適切なタイプの展開エントリを定義します。In placetype は、Apache がその場所からファイルを提供できる限り、問題ありません。それ以外の場合は、それを実行できるように Web サーバーを構成するか、別のタイプの展開を使用します (たとえばLocal or Mounted Folders、IDE が別の場所にファイルをコピーするようにします)。
  2. それを構成します (目的の URL などを提供します) -- 最初の 2 つのタブで未入力のフィールドに関する警告が表示されないことを確認します。
  3. このプロジェクトのデフォルトとしてマークします。

これで、IDE は実行/デバッグ アクションを使用するときにそのベース URL を使用しますOpen in Browser(注: 既存の実行/デバッグ構成には影響しません。将来の実行/デバッグ構成のみに影響します。現在の実行/デバッグ構成を手動で更新する必要があります)。


2つの違いは何ですか: https://stackoverflow.com/a/33598214/783119

于 2016-04-11T20:50:15.003 に答える