Jump to content

gkent

New Members
  • Posts

    1
  • Joined

  • Last visited

gkent's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. I apologize in advance if this question has a simple answer. I have had basic PHP programming experience for several years now; however, I have never ventured into object-oriented programming until now. I am trying to learn OOP and rebuild my website using various classes and objects. I can't seem to get beyond this initial problem of utilizing functions of classes from within other classes. Prior to writing on the forum, I referenced this thread (http://www.killersites.com/community/index.php?/topic/5770-new-to-oop-simple-question/) The goal is to create two files -- one (database.php) with all of the functions related to creation, manipulation, etc of databases, and the other (authentication.php) with functions related to user authentication and database confirmation. I would like to be able to call the database.php functions from within the authentication.php file. All of this would be done behind-the-scenes from my view file (login.php - or similar file). I am also using MDB2 from Pear for database connection framework utilizing mysqli. I tried to accomplish what was shared in the instructions; however, I am continuing to receive a fatal error (Fatal error: Call to a member function query() on a non-object). Here is the code from each of the pages. Login.php global $core; require_once "functions/core.php"; $core = new Core(); //Intialize Database Connection $core->db->do_connect(); //Deploy Authentication Class $core->auth->Authenticate($username, $password); Core.php require_once 'database.php'; require_once 'authentication.php'; class Core { public $db; public $auth; function __construct() { $this->db = new Database(); $this->auth = new Authentication(); } } Database.php class Database { //Create Variables private $dbuser; private $dbpwd; private $dbhost; private $dbname; public $con; //Construct MySQL_class public function __construct() { ; } public function do_connect() { //Setup Connection to MySQL Database $dbuser = "my-username-here"; $dbpwd = "my-password-here"; $dbhost = "my-host-here"; $dbname = "my-databasename-here"; //Include Required Files for PEAR MDB2 require_once 'MDB2.php'; //Intialize Database Connection $dsn = "mysqli://$dbuser:$dbpwd@$dbhost/$dbname"; $options = array("persistent" => true); $con =& MDB2::factory($dsn, $options); $con->setFetchMode(MDB2_FETCHMODE_ASSOC); } public function query($sql) { //Will eventually query database... no code written yet. } } Authentication.php class Authentication { //Construct Authentication Class function __construct() { global $core; } //Primary Function (to be called by login script) function Authenticate($username, $password) { //Check whether user exists in the database $this->UserExist($username); //Validate user's password with the database $this->PasswordMatch($username, $password); } function UserExist($username) { $sql = "SELECT * FROM tblUsers WHERE user_login = '$username' LIMIT 1"; //Code works to this point $core->db->query($sql); //This is what prompts the error. } function PasswordMatch($username, $password) { //No code written yet. Will be similar to UserExist } } Any help would be greatly appreciated!
×
×
  • Create New...