I'm trying to rebuild the login_1.php into OOP but i was not successful. in login_1.php the $numberofrows is being echoed but in the login_2.php I am not gettig something back or errors. I do not know where my mistake is. If I comment the getData method out then i get the error "call of undefined method". I do not see a big difference between the getData Method in login_2.php and the flow in login_1.php
login_1.php (It works):
<form action="login.php" method="post" name="login">
<input type="text" name="username" /><br />
<input type="password" name="password" id="password"/><br />
<input type="submit" value="Login" name="login" />
</form>
<?php
$mysqli = new mysqli('localhost', 'root', '****', '******');
if(isset($_POST['login'])){
$username = $_POST['username'];
$password = $_POST['password'];
echo $username;
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username=? AND password=? LIMIT 1");
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->bind_result($username, $password);
$stmt->store_result();
$numberofrows = $stmt->num_rows();
echo '# rows: '.$numberofrows;
}
?>
loginController:
<?php
error_reporting(-1);
ini_set('display_errors', 1);
if (isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if(!empty($username) && !empty($password)){
try{
include "./models/login_2.php";
$login = new Login($username, $password);
if ($login== TRUE) {
session_start();
$_SESSION['username'] = $username;
header('Location: index.php');
}
}catch(Exception $exc ){
echo $exc->getMessage();
}
}else{ echo "Please enter your username und your password!";}
}
?>
login_2.php (Hier the getData method does not echo $numberofrows)
<?php
class Login
{
private $host = "localhost";
private $user = "root";
private $db_password = "***";
private $database = "****";
private $db;
private $username;
private $password;
function __construct($username, $password)
{
// Set data
$this->setData($username, $password);
// connect to db
$this->connectToDb();
//get Data
$this->getData();
}
private function setData($username, $password){
$this->username = $username;
$this->password = $password;
}
private function connectToDb(){
session_start();
// connect to the server.
$this->db = new mysqli($this->host, $this->user, $this->db_password, $this->database);
if ($this->db->connect_errno) {
die("We are sorry, you could not be connected to the server,
plaese check your connection setting!");
}else{
echo "You are connected to the database";
}
}
private function getData(){
$stmt = $this->db->prepare("SELECT username, password FROM users WHERE username=? AND password=? LIMIT 1");
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->bind_result($username, $password);
$stmt->store_result();
$numberofrows = $stmt->num_rows();
echo '# rows: '.$numberofrows;
}
}
?>
i appreciate any help.