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. Czy moglibyście jakoś mnie nakierować na dobre tory?
index.php:
<?php
require_once 'core/init.php';
$logowanie = DB::getInstance();
$login = trim($_POST['login']); $password = trim($_POST['password']);
$logowanie->login($login, $password);
if($_SESSION['logged'])
{
}
else
{
}
?>
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', '');
}
catch(PDOException $e)
{
}
}
//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['logged'] = true;
$_SESSION['login'] = $login;
}
else
{
echo "Podano nieprawidłowe dane"; }
}
catch(PDOException $e)
{
echo "Połączenie nie mogło zostac utworzone" .$e->getMessage(); }
}
}
}
}
?>