2016-04-11 4 views
0

Ursprünglich hatte ich meine Website lokal auf meinem Laptop eingerichtet, der Linux ist und kürzlich meine Arbeit von dort auf meinen Haupt-PC migriert hatte - Windows. Mein Grund, meine Arbeit zu verschieben, ist, dass ich die Art von Linux gefunden habe, die ich benutze, um unglaublich buggy zu sein, wo die Verbindung ständig getrennt würde, obwohl das Internet in Ordnung war oder es unglaublich lange dauern würde, die Webseite zu aktualisieren.WSOD nach der Migration von Linux zu Windows

Ich benutze jetzt XAMPP anstatt manuell einen localhost mit PHP, Apache und MySQL einzurichten. Die IDE, die ich jetzt auch benutze, ist PhpStorm, die direkt mit meinem phpmyadmin verbunden ist.

Jetzt ist mein Problem, dass ich jetzt den WSOD - White Screen Of Death bekomme, wenn ich, sagen wir, versuche, jemanden über meine Website zu registrieren, dieser leere weiße Bildschirm kommt mit KEINE Fehler angezeigt und ich habe alle möglichen angeschaut Hilfe, dass ich finden könnte, das zu beheben. Noch kein Erfolg, so dass ich jetzt in der Schwebe stehe, ob mein Code das Problem ist oder etwas anderes ist, kann ich einfach nicht sagen.

Das ist das gleiche, wenn ich meine Login-Funktion auch versuche.

Dies funktionierte gut auf meinem Laptop, trotz der kleinen Fehler hier und da.

Ich habe Fehlerberichte aktiviert und ich habe versucht, es in der php.ini Datei zu aktivieren, die nur ignoriert wird oder XAMPP ablehnt (funktioniert nicht).

Hier ist mein Code sowieso sowohl für die Datenbank und die Registrierung, um nur ein Beispiel zu geben:

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'); 
} 
} 

Datenbank - Tabelle Benutzer: (nach Anmeldung erforderlich und Register)

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); 
+0

Sie wollen die Fehlerzeilen vor kommen Berichterstattung 'require‚connection.php‘;' – AbraCadaver

+0

nur bestätigt, dass Sie alle Ihre Dateien in der Web-Root gesetzt von XAMPP? –

+0

@JayBlanchard Das habe ich nicht getan. Ich wusste nicht, dass es das war, was ich tun sollte. Ich werde das untersuchen. Vielen Dank! :) –

Antwort

1

Du PhpStorm eigenen integrierten Web-Server, die jetzt einige Probleme hat (vor allem mit POST requ B. z.B. WEB-17317 - Sie können dieses Ticket (Stern/Abstimmung/Kommentar) sehen, um bei jedem Fortschritt benachrichtigt zu werden.

Die Lösung ist, Ihren eigenen richtigen Webserver (Apache von Ihrem XAMPP) zu verwenden.

  1. Definieren Sie den Bereitstellungseintrag des entsprechenden Typs. In place Typ kann in Ordnung sein, solange Ihr Apache Dateien von diesem Ort aus liefern kann; Andernfalls konfigurieren Sie entweder den Webserver, um dies zu tun .. oder verwenden Sie einen anderen Bereitstellungstyp (z. B. Local or Mounted Folders für IDE, um Dateien an einen anderen Speicherort für Sie zu kopieren).
  2. Konfigurieren Sie es (stellen Sie die gewünschte URL usw.) - stellen Sie sicher, dass es keine Warnungen über nicht gefüllte Felder auf den ersten 2 Registerkarten zeigt.
  3. Markieren Sie es als Standard für dieses Projekt.

Jetzt wird IDE, dass die Basis-URL verwenden, wenn Sie Open in Browser oder Ausführen/Debug Aktionen verwenden werden (Anmerkung: es wird keinen Einfluss auf all vorhandenen Run/Debug-Konfigurationen - nur Zukunft diejenigen, Sie müssen Ihren aktuellen Run aktualisieren/Debug Konfigurationen manuell).


Was ist der Unterschied zwischen den beiden ist: https://stackoverflow.com/a/33598214/783119

+0

Vielen Dank für Ihre Hilfe. Ich konnte mein Problem beheben, und jetzt kann ich die Dateien sehen und Informationen in meiner Datenbank veröffentlichen. :) –