我有两个类文件:一个称为class.database.php,它仅用于必须在数据库上完成的任何函数(连接,断开连接,查询等)PHP类,在另一个PHP文件中使用查询功能
这是class.database.php:
<?php
class DATABASE
{
public function __construct() {
$this->getConnected();
}
public function getConnected() {
$dbHost = "localhost";
$dbUser = "tysonmoyes";
$dbPassword = "F!lmtrepid";
$db = "tysonmoyes";
$dbConn = new mysqli($dbHost, $dbUser, $dbPassword, $db);
$this->dbConn = $dbConn;
}
function queryDB($queryString) {
return mysqli_query($this->getConnected(), $queryString);
}
public function close() {
mysqli_close($this->connection);
}
}
?>
我的第二类文件被称为class.users.php,它处理上的用户帐户中的所有信息。它看起来像这样:
<?php
include_once('config.php');
class USER
{
private $conn;
// All the variables needed for the user profile.
public $username;
public $userID;
public $password;
public $firstName;
public $lastName;
public $emailAddress;
public $address;
public $city;
public $province;
public $country;
var $myConn;
function __construct($conn){
$this->myConn = $conn;
}
function createNewUser($username, $password) {
// Clean inputs
$username = trim($username);
$password = trim($password);
// Encrypt password
$password = md5($password);
// Check if username already exists
$checkSQL = "SELECT * FROM users WHERE username = '$username'";
$checkResult = $this->myConn->queryDB($checkSQL);
if($checkResult->num_rows > 0) {
$error = "true";
$errorMessage = "This username has already been taken. Please try again";
}
else {
$insertSQL = "INSERT INTO users(username, password) VALUES('$username', '$password')";
//$insertResult = $this->callDB()->query($insertSQL);
// Get the user ID
$userID = $this->insert_id;
// Set the SESSION globals
$_SESSION['username'] = $username;
$_SESSION['userID'] = $userID;
}
}
function login($username, $password) {
$sql = "SELECT * FROM users WHERE username = '$username' && password = '$password'";
$result = $this->conn->query($sql);
$row = $this->conn->fetch_array($result, MYSQL_ASSOC);
$count = $this->conn->num_rows($result);
if ($count == 1) {
// Set Session Variables
$_SESSION['username'] = $username;
$_SESSION['userID'] = $row['userID'];
return true;
}
}
function isLoggedIn() {
if(isset($_SESSION['username'])) {
return true;
}
else {
return false;
}
}
function redirect($url) {
header("Location: $url");
}
function logout() {
session_destroy();
unset($_SESSION['username']);
}
}
?>
正如你所看到的,class.user.php所谓的“config.php中”文件,该文件只需创建一个新的数据库和新的用户,使用从制作创建一个链接新DATABASE:
<?php
// Turn on all error reporting
ERROR_REPORTING(E_ALL);
ini_set('display_errors', 1);
// Start Session
session_start();
// Set error to false, and blank error message
$error = "false";
$errorMessage = "";
// Include Database info
require_once('class.database.php');
$link = new DATABASE();
// Include User info
require_once('class.user.php');
// Create instance for user class
$activeUser = new USER($link);
?>
现在,我想专注于我的查询,因为他们都没有工作,我明白为什么。查询函数位于DATABASE类中,但$指向USER类。
我的问题是:我应该如何编写我的查询,以便正确调用DATABASE类。
此外,在任何人提到它之前,我知道md5是一个no-no,但是这是一个将使用模拟用户数据的类项目,而我们的教授说md5对于此项目来说足够加密
编辑:为了这个,我们可以专注于class.user.php中的createNewUser函数吗?这是我目前正在玩的部分。
你为什么不在你的Users类中继承(扩展)你的Database类? –
Rohit,正确的格式是:class USER extend DATABASE,correct? –
'class USER extends DATABASE' that that you do not need this'// Include Database info require_once('class.database.php'); $ link = new DATABASE();' –