I created a separate class for the database and users.
database.php
class Database{
private $db;
public function __construct(){
$hostname = 'localhost';
$username = 'username_web';
$password = 'password_web';
try {
$this->db = new PDO("mysql:host=$hostname;dbname=kamadhenu_web", $username, $password);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function query($sql)
{
return $this->db->query($sql);
}
}
Users.php
class Users{
private $db;
public function __construct($database) {
$this->db = $database;
}
public function login($username, $password)
{
$query=$this->db->prepare("SELECT 'password', 'id' FROM 'users' WHERE 'username' = ?");
$query->bindValue(1, $username);
try{
$query->execute();
$data = $query->fetch();
$stored_password = $data['password'];
$id = $data['id'];
if($stored_password === sha1($password)){
return $id;
}else{
return false;
}
}catch(PDOException $e){
die($e->getMessage());
}
}
}
Here is my login page with username and password.
login.php
include('database.php');
include('users.php');
$dbh= new Database();
$users= new Users($dbh);
if (isset($_POST['submit']))
{
$username= $_POST['username'];
$password= $_POST['password'];
$login = $users->login($username, $password);
if ($login === false) {
$errors[] = 'Sorry, that username/password is invalid';
}
else {
$_SESSION['id'] = $login;
header('Location: list-updates.php');
exit();
}
}
When I execute, I get an error message:
Calling the undefined method Database :: prepare ()
source
share