Witam,
Potrzebuje pomocy. Staram się obiektowo napisać skrypt logowania. Nie wiem dlaczego zaraz po załadowaniu index.php zmienna $_SESSION['logged'] równa jest true oraz widzę napis "Zalogowano". Przecież nie wprowadzono jeszcze nic do formularza. Przez to nie może wykonać się funkcja login. Dopiero zacząłem łapać o co chodzi z tym OOP. Proszę pomóżcie...
index.php:
<?php
require_once 'core/init.php';
$logowanie = DB::getInstance();
$login = trim($_POST['login']);
$password = trim($_POST['password']);
$logowanie->login($login, $password);
print_r($_SESSION['logged']);
if($_SESSION['logged'])
{
echo "Zalogowano";
}
else
{
echo "Nie zalogowano";
}
?>
db.php:
<?php
class DB
{
private static $_instance = null;
private $_pdo,
//konstruktor klasy BD,
private function __construct()
{
try
{
$this->_pdo = new PDO('mysql:host=localhost;dbname=informator', 'root', '');
echo "Connected";
}
catch(PDOException $e)
{
die($e->getMessage());
}
}
//sprawdߠczy klasa DB juߠistnieje,
public static function getInstance()
{
if(!isset(self::$_instance))
{
self::$_instance = new DB();
}
return self::$_instance;
}
public function login($login, $password)
{
if(!isset($_SESSION['logged']))
{
if(isset($_POST['submit']))
{
//$login = trim($_POST['login']);
//$password = trim($_POST['password']);
try
{
$pdo = self::getInstance();
$stmt = $pdo->prepare('SELECT * FROM users WHERE login = :login');
$stmt->bindValue(':login', $login, PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_OBJ);
$pass = $row->password;
$usr = $row->login;
if(password_verify($password, $pass) && $login ===$usr)
{
session_start();
echo "Witaj ".$login;
$_SESSION['logged'] = true;
$_SESSION['login'] = $login;
}
else
{
echo "Podano nieprawidłowe dane";
}
}
catch(PDOException $e)
{
echo "Połączenie nie mogło zostac utworzone" .$e->getMessage();
}
}
}
}
}
?>