Witam,
Próbuję przerobić skrypt logowania z struktury na obiekty i rozwiązuję ciągle problemy. Z tym nie mogę sobie poradzić... Przeglądarka wyświetla:
Fatal error: Using $this when not in object context in C:\xampp\htdocs\try\CLASS\config.class.php on line 13
Oto kod:
config.class.php:
<?php
class config
{
private $pdo;
static public function connect()
{
ob_start();
try
{
$this->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()
{
ob_end_flush();
}
static public function clear($text)
{
// jeśli serwer automatycznie dodaje slashe to je usuwamy
if(get_magic_quotes_gpc())
{
$text = stripslashes($text);
}
$text = trim($text);
$text = mysql_real_escape_string($text);
$text = htmlspecialchars($text);
return $text;
}
static public function codepass($password)
{
return sha1(md5($password).'#!%Rgd64');
}
}
?>
phpLoader.class.php:
<?php
class phpLoader
{
// 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']);
// i kodujemy hasԯ
$_POST['password'] = config::codepass($_POST['password']);
// sprawdzamy prostym zapytaniem sql czy podane dane s٠prawidԯwe
$query = $pdo->query("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
{
echo "Złe hasło";
}
}
else
{
echo "Zły użytkownik";
}
}
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();
?>
Po skryptach pewnie widać, że dopiero zaczynam w obiektowym PHP. Czy moglibyście mi powiedzieć co robię źle, jakich nawyków nabierać i dlaczego to nie działa??