2017-04-16 3 views
-2

Ich habe den Fehler unerwartete $ dbconn, wenn ich diesen Code ausführen, aber ich habe den Code für $ dbconn und ich habe keine Ahnung, warum schrieb ....

hier meine user.php mit Login-Datenbank und Benutzer-Tabelle.

<?php 

define('DB_NAME','login'); 
define('DB_SERVER','localhost'); 
define('DB_USERNAME','root'); 
define('DB_PASSWORD',''); 

class User{ 
    $dbConn = new PDO("mysql:host=".DB_SERVER.";dbname=".DB_NAME,DB_USERNAME,DB_PASSWORD); 
    $dbConn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 


    public function Login($name, $password){ 
    if(!empty($name) && !empty($password)){ 
     $statement = $dbConn->prepare("select * from users where name=? and password=?"); 
     $statement->bindParam(1, $name); 
     $statement->bindParam(2, $password); 
     $statement->execute(); 

     if($statement->rowCount() == 1){ 
     echo "User verified, Access granted."; 
     }else{ 
     echo "Incorrect username or password"; 
     } 
    }else{ 
     echo "Please enter username and password"; 
    } 

    } 


} 


?> 

Im Folgenden sind die index.php

<?php 

include_once('user.php'); 

if(isset($_POST['submit'])){ 
    $name  = $_POST['user']; 
    $password = $_POST['password']; 

    $object = new User(); 
    $object->Login($name, $password); 
} 


?> 

<html> 
<head> 
</head> 
<body> 
    <form method="post" action="index.php"> 
    Username: <input type="text" name="user"> 
    Password: <input type="text" name="password"> 
    <input type="submit" name="submit" value="Login"> 
    </form> 
</body> 
</html> 

mir jemand bei meinem Problem helfen? Danke und viel zu schätzen.

+0

Nebenbei bemerkt: Der Code, den Sie gepostet in Bezug auf Passwörter; Ist das live oder in einer Live-Umgebung so wie es ist? Sie erkennen, dass das selbst mit einer vorbereiteten Aussage nicht sicher ist. –

+0

Versuchen Sie, den Code, der $ dbConn definiert, innerhalb der Login-Funktion zu setzen, nur um zu testen, ob es funktioniert. Dann kann es ein Problem mit dem Umfang sein. Möglicherweise müssen Sie innerhalb der Funktion global $ dbConn oder etwas Ähnliches verwenden, wenn $ dbConn außerhalb davon deklariert ist? –

Antwort

1

Sie können nicht haben ausführbaren Code außerhalb einer Methode in einer Klasse wie folgt aus:

class User 
{ 

    $dbConn = new PDO(...); 
    $dbConn->setAttribute(...); 

    public function Login($name, $password){ 
    } 

} 

Wenn Sie etwas initialisieren möchten, können Sie einen Konstruktor verwenden:

class User 
{ 

    protected $dbConn; 

    public function __construct() 
    { 
     $this->dbConn = new PDO(...); 
     $this->dbConn->setAttribute(...); 
    } 

} 
Verwandte Themen