Ankündigung

Einklappen
Keine Ankündigung bisher.

Login System mit Navicat (PDO)

Einklappen

Neue Werbung 2019

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

  • Login System mit Navicat (PDO)

    Hey, ich verzweifel aktuell an einem Login System
    Ich möchte ganz Simpel Login Daten von Navicat aus einem Table ablesen (Username & Password) und wenn die auf der Website stimmen dann einfach ein Echo.
    Mein aktueller Code:

    TEST1.PHP:

    PHP-Code:
    <?php 

    include_once('user.php');

    if(isset(
    $_POST['submit'])){
        
    $user $_POST['user'];
        
    $pass $_POST['pass'];

        
    $object = new user();
        
    $object->Login($user$pass);
    }

    ?>

    <html>
    <head></head>
    <body>

    <form method="post" action="test1.php">
        Username: <input type="text" name="user"/>
        Password: <input type="text" name="pass"/>
        <input type="submit" name="submit" value="Login"/>
        </form>
    </body>
    </html>
    USER.PHP:

    PHP-Code:
    <?php

    include_once('connection.php');

    class 
    user{

        private 
    $db;

        public function 
    __construct() {
            
    $this->db = new Connection();
            
    $this->db $this->db->dbConnect();
        }

        public function 
    Login($user$pass){
            if(!empty(
    $user) && !empty($pass)){
                
    $st $this->db->prepare("SELECT * FROM Website WHERE user=? AND pass=?");
                
    $st->bindParam(1$user);
                
    $st->bindParam(2$pass);
                
    $st->execute();

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


                    echo 
    "Erfolgreich";
                }
                else{
                    echo 
    "Fehlgeschlagen";
                }

            }else{
                echo 
    "Username und Passwort ausfüllen";
            }
        }
    }
    ?>
    CONNECTION.PHP:

    PHP-Code:
    <?php

    class connection {


        public function 
    dbConnect(){
             
    //return new PDO('mysql:host='.$host.';dbname='.$db.';charset=utf8', $user, $pw);
             
    return new PDO("mysql:host=localhost; db=SECRET""SECRET""SECRET");
    }
    }



    ?>
    Die Navicat DB Ist wie folgt aufgebaut:
    navicat_2018-10-14_12-05-25.png
    Der Fehler ist dass egal ob ich nun richtige oder falsche Daten eingebe jedes mal "fehlgeschlagen" als Fehlermeldung kommt, wäre über hilfe sehr dankbar! (Und hoffentlich eine simple erklärung, da ich noch anfänger bin )

  • #2
    Warum machst du einfache Dinge so kompliziert?
    Warum muss man verschachtelte includes haben und Klassen wo keine notwendig sind. PDO ist schon eine Klasse, verwende die so wie im Handbuch angegeben.
    Was Navicat ist weisst auch nur du und ist hier auch gar nicht von belang.

    Verkürze dein Beispiel auf eine Datei damit du auf Fehlersuche gehen kannst.
    Schalte das Error-Reporting von PDO und PHP ein.

    Poste nachvollziehbaren Code, und keine Bilder von Code oder screenshots.

    Schreibe ordentliche Beitrage, siehe auch Forenregeln.

    Kommentar


    • #3
      Zitat von protestix Beitrag anzeigen
      Warum machst du einfache Dinge so kompliziert?
      Warum muss man verschachtelte includes haben und Klassen wo keine notwendig sind. PDO ist schon eine Klasse, verwende die so wie im Handbuch angegeben.
      Was Navicat ist weisst auch nur du und ist hier auch gar nicht von belang.

      Verkürze dein Beispiel auf eine Datei damit du auf Fehlersuche gehen kannst.
      Schalte das Error-Reporting von PDO und PHP ein.

      Poste nachvollziehbaren Code, und keine Bilder von Code oder screenshots.

      Schreibe ordentliche Beitrage, siehe auch Forenregeln.
      Genau deswegen sind wir auch im php-einsteiger Bereich. Eine hilfreiche Antwort hätte es auch getan. Wo habe ich "Bilder von Code oder screenshots" benutzt? Ich habe einen Screenshot von einer Datenbank, bei Navicat ist das kein Code

      Kommentar


      • #4
        Du hast aber kein PHP Problem, php funktioniert ja.
        PHP-Code:
         if($st->rowCount() > 0){ 
        rowcount ist an dieser Stelle eben nicht grösser als 0.

        dein Problem ist die Datenabfrage.
        Schaue dir an was du hier übergibst
        PHP-Code:
        if(!empty($user) && !empty($pass)){ 
        Was steht in $user und $pass, stehen diese Werte auch genau so in der Datenbank und vergiss navicat, das ist nur ein Werkzeug und das hat hier keiner.

        Kommentar


        • #5
          Zitat von protestix Beitrag anzeigen
          Du hast aber kein PHP Problem, php funktioniert ja.
          PHP-Code:
           if($st->rowCount() > 0){ 
          rowcount ist an dieser Stelle eben nicht grösser als 0.

          dein Problem ist die Datenabfrage.
          Schaue dir an was du hier übergibst
          PHP-Code:
          if(!empty($user) && !empty($pass)){ 
          Was steht in $user und $pass, stehen diese Werte auch genau so in der Datenbank und vergiss navicat, das ist nur ein Werkzeug und das hat hier keiner.
          Bei der Abfrage frage ich halt ab, falls der user & das passwort leer sind dass einfach eine Meldung kommt dass diese Felder nicht ausgefüllt sind soweit ich das richtig verstehe, und wenn diese ausgefüllt sind soll diese funktion ausgeführt werden. Die Werte stehen wie man bei dem Screenshot sieht in der Datenbank richtig, deshalb verstehe ich es nicht :/

          Kommentar


          • #6
            Du sollst auf Fehlersuche gehen und nachsehen was in den Variablen tatsächlich drin steht.

            Dreh dafür das Error-Reporting auf

            und
            PHP-Code:
            new PDO("mysql:host=localhost; db=SECRET""SECRET""SECRET"); 
            Da fehtl auch die Option, dass Fehler ausgegeben werden sollen.

            Mache dann mal
            PHP-Code:
            var_dump($user$pass);
            if(!empty(
            $user) && !empty($pass)){ 
            was kommt da raus bei var_dump

            im nächsten Schritt schaust du dir an was
            var_dump(!empty($user));
            und
            var_dump(!empty($emty));

            ergibt.

            Danach führst du dann das SQL Statement direkt auf der DB aus oder mit Heidisql oder einem andderen Werkzeug und schaust ob ein Ergebnis kommt.
            Das ist aber deine Aufgabe.

            Kommentar

            Lädt...
            X