2014-02-21 15 views
0

所以我現在試圖使用OOP來改變事情,並且我使用了兩個不同的文件,所以在一個文件中(目錄是Functions/login.class.php)是所有的針對登錄功能的代碼,該代碼由該面向對象編程PHP使用兩個不同的文件

<?php 

require('config.php'); 

class Login { 

public function login($username, $password) { 
    $CheckLogin = $database->prepare("SELECT * FROM `users` WHERE `username` = ? AND `password` = ?"); 
    $CheckLogin->execute(array($username, encrypt($username, $password)); 
    return $CheckLogin->rowCount(); 
} 


public function encrypt($username, $password) { 
return md5(sha1(md5($username.$password))); 
} 

} 


?> 

和我的下一個文件名爲remoteapi.php主目錄,我想調用的函數,並將它返回的要麼是0根據rowCount或1

<?php 
require('Functions/login.class.php'); 

$action = $_GET['action']; 
$username = $_GET['username']; 
$password = $_GET['password']; 

if($action == 'login') { 
    $output = new Login; 
    echo $output->login($username, $password); 
} 
?> 

而這裏的config.php

<?php 
$user = "USERNAME"; 
$pass = "PASSWORD"; 
$details = "mysql:dbname=NAME;host=localhost"; 
$database = new PDO($details, $user, $pass); 
?> 
+1

那麼是什麼問題? – hindmost

+0

沒有任何反應,沒有錯誤,空白頁。 – Patrick

+0

你應該得到錯誤,因爲你的登錄方法中$ database沒有定義。 – user1159791

回答

0

嘗試重寫類一點點。您可以創建一個構造函數來傳遞$database對象並將其存儲在類中。

<?php 

require('config.php'); 

class Login { 

    private $database; 

    public function __construct($database) { 
     $this->database = $database; 
    } 

    public function login($username, $password) { 
     $CheckLogin = $this->database->prepare("SELECT * FROM `users` WHERE `username` = ? AND `password` = ?"); 
     $CheckLogin->execute(array($username, encrypt($username, $password)); 
     return $CheckLogin->rowCount(); 
    } 

    public function encrypt($username, $password) { 
     return md5(sha1(md5($username.$password))); 
    } 

} 
+0

嘗試了這個,現在我知道它是類中的東西,因爲當我做「require('login.class.php');」 – Patrick

+0

那麼你的班級的問題是你沒有訪問'$數據庫'。如果它仍然不起作用,那麼你可能將不得不向我們展示更多的文件。 –

+0

這裏是'config.php'裏面的內容>我會用config.php編輯主帖子 – Patrick