Witam,
Zaczynam się dopiero uczyć PHP OOP. Utworzyłem skrypt połączenia z bazą i logowania. Kiedy próbuję się zalogować otrzymuję komunikat:
Fatal error: Call to a member function prepare() on null in C:\xampp\htdocs\try\CLASS\phpLoader.class.php on line 18Bardzo proszę was o pomoc i wyrozumiałość bo naprawdę mnie ta obiektówka rozłożyła. Oto kod:
config.class.php:
<?php
class config
{
static public function connect
() {
try
{
$pdo = new PDO('mysql:host=localhost; dbname=baza', 'root', '');
return true;
}
catch(PDOException $e)
{
echo 'Wystąpił problem z połączeniem z bazą danych '.$e->getMessage(); }
}
static public function disconnect
() {
}
static public function clear
($text) {
// jeśli serwer automatycznie dodaje slashe to je usuwamy
{
}
return $text;
}
static public function codepass
($password) {
return sha1
(md5($password).'#!%Rgd64'); }
}
?>
phpLoader.php:
<?php
class phpLoader extends config
{
// funkcja: logowanie
static public function login
() {
require_once 'config.class.php';
config::connect();
if(empty($_SESSION['logged'])) {
if(isset($_POST['name'])) {
$_POST['name'] = config::clear($_POST['name']);
$_POST['password'] = config::clear($_POST['password']);
$_POST['password'] = config::codepass($_POST['password']);
$query = config::$pdo->prepare("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_POST['name']}' AND `user_password` = '{$_POST['password']}' LIMIT 1");
try
{
$query->execute();
if($query->rowCount() > 0)
{
$dane = $query->fetch(PDO::FETCH_ASSOC);
if($dane['user_pasword'] === $_POST['password'])
{
$_SESSION['logged'] = true;
$_SESSION['user_id'] = $row['user_id'];
}
else
{
}
}
else
{
}
}
catch(PDOException $e)
{
$e->getMessage();
}
}
}
config::disconnect();
}
}
?>
login.php:
<?php
require_once 'CLASS/config.class.php';
require_ONCE 'CLASS/ModuleLoader.class.php';
require_once 'CLASS/phpLoader.class.php';
ModuleLoader::setDoctype();
phpLoader::login();
ModuleLoader::setLogo();
ModuleLoader::setTopbar();
ModuleLoader::setSidebar();
ModuleLoader::setContent();
ModuleLoader::setFooter();
?>
Na kodowanie hasła, itd. nie patrzcie na razie. Na razie chciałbym się po prostu zalogować. Co robię źle? Dlaczego to nie działa? Co powinienem zmienić/dopisać?