Ankündigung

Einklappen
Keine Ankündigung bisher.

verknüpfung zu Datenbank schlägt fehl

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • verknüpfung zu Datenbank schlägt fehl

    Hallo,

    ich arbeite gerade an einem Login/Registrierungssystem. Dafür nutze ich folgendes Tutorial
    https://www.itechempires.com/2016/06...a-object-pdo/o

    Auf einer seite (index.php) gibt es das formular zum einloggen/registrieren. dieses wird, sofern das Login-Formular ausgewählt wurde, an login.php mit post gesendet. login.php sieht momentan so aus:

    PHP-Code:
    <?php

    ini_set
    ('diplay_errors'1);

    ini_set('display_startup_errors'1);

    error_reporting(E_ALL);

    session_start();

    require_once(
    "scripts/dbconfig.php");

    require_once(
    "scripts/accountHelperClass.php");

    $app = new accountHelperClass();

    $username strip_tags($_POST["username"]);

    $password strip_tags($_POST["password"]);

    echo 
    $app->Login($username$password);

    ?>
    accountHelperClass.php sieht wie folgt aus:

    PHP-Code:
    <?php

    ini_set
    ('display_errors'1);

    ini_set('display_startup_errors'1);

    error_reporting(E_ALL);

    class 
    accountHelperClass {

    public function 
    Register($username$email$password) {

    $db DB();

    $query $db->prepare("INSERT INTO ChatUsers(userName, E_Mail, Password) VALUES (:username,:email,:password)");

    $query->bindParam("email"$emailPDO::PARAM_STR);

    $query->bindParam("username"$usernamePDO::PARAM_STR);

    $enc_password password_hash($passwordPASSWORD_DEFAULT);

    $query->bindParam("password"$enc_passwordPDO::PARAM_STR);

    $query->execute();

    return 
    $db->lastInsertId();

    }

    public function 
    isUsername($username) {

    $db DB();

    $query $db->prepare("SELECT User_Id FROM ChatUsers WHERE UserName=:username");

    $query->bindParam("username"$usernamePDO::PARAM_STR);

    $query->execute();

    return 
    $query->rowCount() > 0;

    }

    public function 
    isEmail($email) {

    $db DB();

    $query $db->prepare("SELECT UserId FROM ChatUsers WHERE E_Mail=:email");

    $query->bindParam("email"$emailPDO::PARAM_STR);

    $query->execute();

    return 
    $query->rowCount() > 0;

    }

    public function 
    Login($username$password) {

    $db DB();

    $query $db->prepare("SELECT UserId FROM ChatUsers WHERE (UserName=:username OR E_Mail=:username) AND Password=:password");

    $query->bindParam("username"$usernamePDO::PARAM_STR);

    $enc_password password_hash($passwordPASSWORD_DEFAULT);

    $query->bindParam("password"$enc_passwordPDO::PARAM_STR);

    $query->execute();

    if (
    $query->rowCount() > 0) {

    $result $query->fetch(PDO::FETCH_OBJ);

    return 
    $result->user_id;

    } else {

    return 
    false;

    }

    }

    public function 
    UserDetails($user_id) {

    $db DB();

    $query $db->prepare("SELECT UserId, UserName, E_Mail FROM ChatUsers WHERE UserId=:user_id");

    $query->bindParam("user_id"$user_idPDO::PARAM_STR);

    $query->execute();

    if (
    $query->rowCount() > 0) {

    return 
    $query->fetch(PDO::FETCH_OBJ);

    }

    }

    }

    ?>
    In dbconfig werden String-Konstanten für den Host, Datenbanknamen, Benutzernamen und das Passwort definiert. Außerdem folgende Funktion:

    PHP-Code:
    <?php
    function DB() {
    $db = new pDO("mysql:host=".myhost.";dbname=".mydbnamemyusernamemypw, array(PDO::ATTR_ERRMODE => PDO::ERRMONE_EXCEPTION));
    return 
    $db;
    }
    ?>
    Wenn ich in meiner offline-IDE für PHP diesen Code ausführe (die IDE unterstützt angeblich PDO), kriege ich immer PDOException wegen timeout. Führe ich es online auf meinem Server aus, kriege ich bloß den berüchtigten white screen of death. Ich weiß wirklich nicht mehr weiter, und auf Stack Overflow kam nichts konstruktives zustande... Wäre also für jegliche Hinweise dankbar.

    Danke im voraus.

  • #2
    Führe ich es online auf meinem Server aus, kriege ich bloß den berüchtigten white screen of death.
    Dann sollte sich aber was im error log finden lassen.

    Kommentar


    • #3
      Und/oder Fehlerausgabe in der php.ini zentral aktivieren (Entwicklungsystem). Wenn das nämlich ausgeschalten ist und das Script einen Parse Error hat dann kommt es gar nicht dazu das die Aktivierung im Script verarbeitet wird, weil es ja nicht geparst und verarbeitet werden kann. Dh das und/oder ins ErrorLog schauen.
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar

      Lädt...
      X