![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 215 Pomógł: 0 Dołączył: 28.10.2003 Skąd: - Ostrzeżenie: (0%) ![]() ![]() |
[php:1:f3d8be1558]<?php
class usersAuthenticate { var $login; var $password; var $db; function loginUser() { if(empty($this->login) || empty($this->password)) { return(false); } else { $row = $this->db->GetRow("SELECT password, date, userName FROM users WHERE login='".$this->login."'"); } if($row[0] != md5($this->password)) { return(false); } else { $this->db->Execute("UPDATE users SET session='".session_id()."', ip='".$_SERVER['REMOTE_ADDR']."', date=NOW() WHERE login='".$this->login."'"); } if(!$this->db->Affected_Rows()) { return(false); } else { $_SESSION['date'] = $row[1]; $_SESSION['pelnaNazwa'] = $row[2]; return(true); } } ?>[/php:1:f3d8be1558] Czy odwolanie sie do ADODB (po przez $db) w tym fragmencie klasy to jedyny sposob? Czy jest to optymalne rozwiazanie? Czy mozna zrobic to w inny sposob np. przez "extends"? Jakie są Wasze rozwiązania i doświadczenia? |
|
|
![]() |
![]()
Post
#2
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Cieżko jest sie tutaj bawić bez zmiennych globalnych, bo zazwyczaj nie chcemy tworzyć więcej niż jednej instancji tych klas, a musimy je wykorzystać w kilku innych. Można zrobić jednen głowny obiekt, który tworzy instancje AdoDB i Smartych, a potem inne są klasy ktore będą z nich korzystać są rozszerzane o niego. Gorzej jeśli któryś z obiektów tworzonych w rodzicu potrzebuje innego obiektu tego typu. I tutaj zazwyczaj przychodzą z pomocą zmienne globalne ( $this->db = &$GLOBALS[DB_INSTANCE] i po sprawie ). Jest to może nieeleganckie, ale ja jak do tej pory nie wpadłem na lepsze rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Licze że Nalfein wskarze nam droge (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 21:01 |