Ahmed Nefzaoui
Ahmed Nefzaoui

Reputation: 191

Fatal error: Call to a member function AddUser() on a non-object

so after hours on the web searching for smallest details or solution for this error I still can't fix it

The errors :

Notice: Undefined variable: Login in C:\xampp\htdocs\up\administration\adduser.php on line 3

Fatal error: Call to a member function AddUser() on a non-object in C:\xampp\htdocs\up\administration\adduser.php on line 3

These errors are from adduser.php which contains

<?php
require_once('LoginClass.php');
$Login->AddUser('Test','test312');
?>

And this is the LoginClass.php

<?php

class Login {

//Username Variables
private $username;
private $password;

//MySQL Variables
private $Host;
private $MySQLUsername;
private $MySQLPassword;
private $Database;
private $Conn;


//Constructor
public function Login()
{
    session_start();
    $this->Host = "localhost";
    $this->MySQLUsername = "root";
    $this->MySQLPassword = "";
    $this->Database = "up";

    $this->Connection();

    unset($this->Host);
    unset($this->MySQLUsername);
    unset($this->MySQLPassword);
    unset($this->Database);
}
//**********************
//Mysql Functions
//********************** 
public function Connection()
{
    $this->Conn = @mysql_connect($this->Host,$this->MySQLUsername,$this->MySQLPassword);

    if($this->Conn)
    {
        mysql_select_db($this->Database) OR die('Could not select DB');
    }
    else
    {
        die(mysql_error());
    }  
}

public function Query($sql)
{
    $result = mysql_query($sql);

    if(!$result)
    {
        die(mysql_error());
    }

    return $result;
}

public function Disconnect()
{
    mysql_close($this->Conn);
}

//Escapes bad values for MySQL to prevent SQL injections.
public function EscapeString($badstring)
{
    if(!get_magic_quotes_gpc())
    {
        $goodstring = addslashes($badstring);
    }
    else
    {
        $goodstring = stripslashes($badstring);
    }

    $goodstring = mysql_real_escape_string($badstring);

    return $goodstring;
}

public function EncryptPassword($password)
{
  return sha1(md5($password));  
} 
//Check if the user can login
public function CheckLogin($username,$password)
{
    $this->username = $this->EscapeString($username); 
    $this->password = $this->EscapeString($this->EncryptPassword(($password)));

    $result = $this->Query("SELECT * FROM `users` WHERE `username` = '$this->username' AND `password` = '$this->password' LIMIT 1");

    //If we get one result we know the login is right.
    if(mysql_num_rows($result) == 1)
    {
        $this->username = $username;
        $_SESSION['username'] = $this->username;
        $_SESSION['authorized'] = 1; 

        header('location:Private.php');
    }
    else 
    {
        die('Invalid Login');
    }

}
//Add a user
public function AddUser($username,$password)
{
    //$username = $this->EscapeString($username);
    //$password = $this->EscapeString($this->EncryptPassword($password));
    $username = $this->$username;
    $password = $this->$this->EncryptPassword($password);

    $result = $this->Query("INSERT INTO `users` (username,password) VALUES ('$username','$password')");
}
//Takes the result of a query and puts the information into an array
public function Result_To_Array($result)
{
    $result_array = array();

    for ($i=0; $row = mysql_fetch_array($result); $i++) 
    {
        $result_array[$i] = $row;
    }

    return $result_array;

}
//Delete user
public function DeleteUser($username)
{
    $username = $this->EscapeString($username);

    $result = $this->Query("DELETE FROM `users` WHERE `username` = '$username' LIMIT 1");

}
//Checks if the user is authorized or not
public function IsAuth()
{
    if(isset($_SESSION['username']) && $_SESSION['authorized'] == 1)
    return true;

    else
    {
        die('You are not authorized to view this information');
        header('login.html');
    }    
}
//Shows user's IP
public function GetIP()
{
    return $_SERVER['REMOTE_ADDR'];
}
//Display all users
public function ShowUsers()
{
    $users = $this->Result_To_Array($this->Query("SELECT * FROM `users`"));

    foreach($users as $user)
    {
        echo $user['username']."<br />";
    } 
}

public function LogOut()
{

     session_destroy();

     header('location:login.html');
}
}
?>

Upvotes: 0

Views: 1842

Answers (1)

mgraph
mgraph

Reputation: 15338

you should create new object Login() :

require_once('LoginClass.php');
$Login = new Login();
$Login->AddUser('Test','test312');

or call the function directly like this :

require_once('LoginClass.php');
Login::AddUser('Test','test312');

Upvotes: 2

Related Questions