Witam napisałem sobie prostą klasę która wygląda tak:
<?php
class User
{
private $uid;
private $fields;
public function __construct()
{
$this->uid = null;
$this->fields = array('user_id' => '', 'username' => '',
'password' => '',
'position' => '',
'gadugadu' => '',
'pseudo' => '',
'email' => '',
'banned' => '');
}
public function __get($field)
{
if ($field == 'userId')
{
return $this->uid;
}
else
{
return $this->fields[$field];
}
}
public function __set($field, $value)
{
{
$this->fields[$field] = $value;
}
}
public static function validateUsername
($username) {
return preg_match('/^[A-Z0-9]{2,20}$/i', $username); }
public static function validateEmailAddr
($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
public static function getById
($uid) {
$u = new User();
$query = sprintf('SELECT * FROM %susers WHERE USER_ID = %d', DB_TBL_PREFIX
, $uid);
{
$u->exist = true;
$u->username = $row['username'];
$u->gadugadu = $row['gadugadu'];
$u->password = $row['password'];
$u->position = $row['position'];
$u->email = $row['email'];
$u->banned = $row['banned'];
$u->pseudo = $row['pseudo'];
$u->uid = $uid;
}
return $u;
}
ciąg dalszy klasy:
public static function getByUsername
($username) {
$u = new User();
$query = "SELECT * FROM ".DB_TBL_PREFIX
."users WHERE username = '".mysql_real_escape_string($username, $GLOBALS['DB'])."'";
{
$u->exists = TRUE;
$u->username = $username;
$u->password = $row['password'];
$u->position = $row['position'];
$u->gg = $row['gadugadu'];
$u->email = $row['email'];
$u->banned = $row['banned'];
$u->uid = $row['user_id'];
}
return $u;
}
{
if ($this->uid)
{
$query = sprintf('UPDATE %susers SET password = "%s", gadugadu = "%s", email = "%s", pseudo = "%s" WHERE user_id = %d', DB_TBL_PREFIX
, }
else
{
$query = "INSERT INTO ".DB_TBL_PREFIX
."users SET username = '".mysql_real_escape_string($this->username, $GLOBALS['DB'])."', }
}
public static function getUserAccess
($uid) {
$u = new User();
$query = "SELECT autopilot, pozdrowienia, utwor, ramowka, lista, erds FROM ".DB_TBL_PREFIX."user_access WHERE user_id = '".$uid."'";
{
$u->autopilot = $row['autopilot'];
$u->pozdrowienia = $row['pozdrowienia'];
$u->utwor = $row['utwor'];
$u->ramowka = $row['ramowka'];
$u->erds = $row['erds'];
}
return $u;
}
public static function saveLogs
($text, $data, $czas, $kategoria) {
$u = new User();
$query = "INSERT INTO ".DB_TBL_PREFIX."logs SET tresc = '".$text."', data = '".$data."', godzina = '".$czas."',
kategoria = '".$kategoria."'";
if (!$result)
{
$u->wynik = 'ok';
}
return $u;
}
}
?>
otóż mam problem z modyfikacją danych.
funkcja za to odpowiedzialna wygląda tak:
{
if ($this->uid)
{
$query = sprintf('UPDATE %susers SET password = "%s", gadugadu = "%s", email = "%s", pseudo = "%s" WHERE user_id = %d', DB_TBL_PREFIX
, }
else
{
$query = "INSERT INTO ".DB_TBL_PREFIX
."users SET username = '".mysql_real_escape_string($this->username, $GLOBALS['DB'])."', }
}
podczas próby modyfikacji otrzymuje błąd:
Kod
Fatal error: Using $this when not in object context in C:\xampp\htdocs\panel\lib\user.php on line 99
dodam jeszcze że skrypt wywołuje tak: