2017-01-04 6 views
0

Ich habe versucht, diese tutorial zu folgen, um eine einfache Anmeldung und Registrierung für Android-Anwendung mit MySql. Die Android App läuft solange einwandfrei, bis beim Zugriff auf die Datenbank ein Fehler auftritt (Account-Register).Php-Klasse innerhalb enthalten Datei nicht gefunden

Als ich versuchte, die PHP-Anwendung zuzugreifen, um sicherzustellen, dass der Fehler in dem Android-App ist, habe ich diesen Fehler:

Fatal error: Class 'DbConnect' not found in C:\xampp\htdocs\AndroidLogin\include\user.php on line 12 

Ich bin sicher, dass db.php bereits in user.php enthalten ist. Dies sind die Codes ich aus dem Tutorial verwendet: Die erste ist index.php

//index.php 
<?php 

require_once 'include/user.php'; 

$username = ""; 
$password = ""; 
$email = ""; 

if(isset($_POST['username'])){ 
    $username = $_POST['username']; 
} 

if(isset($_POST['password'])){ 
    $password = $_POST['password']; 
} 

if(isset($_POST['email'])){ 
    $email = $_POST['email']; 
} 

// Instance of a User class 
$userObject = new User(); 

// Registration of new user 
if(!empty($username) && !empty($password) && !empty($email)){ 
    $hashed_password = md5($password); 
    $json_registration = $userObject->createNewRegisterUser($username, $hashed_password, $email); 
    echo json_encode($json_registration); 
} 

// User Login 
if(!empty($username) && !empty($password) && empty($email)){ 
    $hashed_password = md5($password); 
    $json_array = $userObject->loginUsers($username, $hashed_password); 
    echo json_encode($json_array); 
} 
?> 

Als nächstes config.php

//config.php 
<?php 
define("DB_HOST", "localhost"); 
define("DB_USER", "root"); 
define("DB_PASSWORD", ""); 
define("DB_NAME", "androidlogin"); 
?> 

Dieser ist db.php

// db.php 
<?php 

include_once 'config.php'; 

class DbConnect{ 
    private $connect; 

    public function __construct(){ 
     $this->connect = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
     if (mysqli_connect_errno($this->connect)){ 
      echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 
    } 

    public function getDb(){ 
     return $this->connect; 
    } 
} 
?> 

Und die letzte ist user.php

// user.php 
<?php 

include_once 'db.php'; 

class User{ 
    private $db; 
    private $db_table = "users"; 

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

    public function isLoginExist($username, $password){ 
     $query = "select * from " . $this->db_table . " where username = '$username' AND password = '$password' Limit 1"; 
     $result = mysqli_query($this->db->getDb(), $query); 

     if(mysqli_num_rows($result) > 0){ 
      mysqli_close($this->db->getDb()); 
      return true; 
     } 

     mysqli_close($this->db->getDb()); 
     return false; 
    } 

    public function createNewRegisterUser($username, $password, $email){ 
     $query = "insert into users (username, password, email, created_at, updated_at) values ('$username', '$password', '$email', NOW(), NOW())"; 
     $inserted = mysqli_query($this->db->getDb(), $query); 

     if($inserted == 1){ 
      $json['success'] = 1; 
     }else{ 
      $json['success'] = 0; 
     } 

     mysqli_close($this->db->getDb()); 

     return $json; 
    } 

    public function loginUsers($username, $password){ 
     $json = array(); 
     $canUserLogin = $this->isLoginExist($username, $password); 

     if($canUserLogin){ 
      $json['success'] = 1; 
     }else{ 
      $json['success'] = 0; 
     } 
     return $json; 
    } 
} 
?> 

sieht Meine Auswahl dieses wie:

AndroidLogin 
|index.php 
|include 
|config.php 
|db.php 
|user.php 

Habe ich etwas verpasst?

+0

umbenennen Sie folgen die falsche Anleitung, die nicht Passwörter in der Clar speichern und eine wird Ihre Website zu SQL-Injektionen – e4c5

+0

jemand anderes haben das gleiche Problem wie du. Der Autor schreibt "Stellen Sie sicher, dass Sie diese Datei auf Ihren lokalen oder Remote-Server kopiert haben." Vielleicht könnte das dein Problem sein. – Michael

+2

Nur ein Vorschlag: normalerweise, rufen Sie die Datei wie die Klasse, die Sie darin deklarieren. In WAMP gibt es normalerweise einige Probleme, ich empfehle Ihnen, db.php in DbConnect.php umzubenennen – MikeKeepsOnShine

Antwort

1

Normalerweise rufen Sie die Datei wie die Klasse, die Sie darin deklarieren. In WAMP gibt es in der Regel einige Probleme, ich schlage vor, dass Sie db.php in DbConnect.php

-2

Erstellen Sie einen Standardkonstruktor (leer) in DbConnect, und machen Sie eine einfache Methode, die etwas zurückgeben würde. Versuchen Sie, eine neue DbConnect-Instanz aufzurufen, um diese Methode von der Benutzerklasse aus aufzurufen.

+0

Scheint nicht wie eine Antwort. – malutki5200

+0

Es ist nicht. Er behauptet, dass db.php bereits in der user.php enthalten ist. Lasst uns das zuerst überprüfen, bevor wir weiter gehen. – Cornelius

+0

Wenn es keine Antwort ist, antworten Sie nicht. Mache stattdessen einen Kommentar. Das ist, was @ malutki5200 sagt – MikeKeepsOnShine