Archiwum dla sierpień 14th, 2007

14
sie
07

easyNotes – skrypt notatek

Jest to wyciąganie armaty na muchę, ale żeby poznać dobrze FW trzeba sporo pisać. Więc na potrzebę chwili ( a może i dużej chwili ) napisałem skrypt notatek bazując na Code Igniterze.

Na początek logowanie w kontrolerze easyNotes:
public function login()
{
if ( $this -> is_logged() )
{
redirect( 'easynotes/index', "Location" );
}
else
{
$form_data['login'] = array( 'id' => 'login_id', 'name' => 'login' );
$form_data['password'] = array( 'id' => 'pass_id', 'name' => 'password' );
$form_rules['login'] = 'required|xss_clean';
$form_rules['password'] = 'required|xss_clean';
$this -> validation -> set_rules( $form_rules );
if ( $this -> validation -> run() == FALSE )
{
$form_data['login']['value'] = $this -> input -> post ( 'login' );
$form_data['password']['value'] = $this -> input -> post( 'password' );
$this -> response['content'] = $this -> load -> view( 'login_form', $form_data, TRUE );
}
else
{
$this -> load -> model( 'User' );
$query = $this -> User -> get_user( $this -> input -> post( 'login' ), $this -> input -> post( 'password' ) );
// login and password are correct
if ( $query -> num_rows() == 1 )
{
$item = $query -> result_array();
$array_data = array( 'user_id' => $item[0]['user_id'], 'logged_in' => TRUE );
$this -> session -> set_userdata( $array_data );
redirect( 'easynotes/index' );
}
}
}

Korzystam tutaj z biblioteki validation. Najciekawszy fagment tego kodu to właśnie przygotowanie reguł do walidacji oraz jej sprawdzenie:
$form_rules['login'] = 'required|xss_clean';
$form_rules['password'] = 'required|xss_clean';
$this -> validation -> set_rules( $form_rules );
if ( $this -> validation -> run() == FALSE )

Wywołana jest tu metoda set_rules, która jak argument przyjmuje tablicę z regułami walidacji dla poszczególnych pól formularza ( nazwy pól to klucze tablicy ). Jeśli walidacja się uda to sprawdzamy w bazie czy taki użytkownik z takim hasłem istnieje.
$this -> load -> model( 'User' );
$query = $this -> User -> get_user( $this -> input -> post( 'login' ), $this -> input -> post( 'password' ) );
// login and password are correct
if ( $query -> num_rows() == 1 )
{
$item = $query -> result_array();
$array_data = array( 'user_id' => $item[0]['user_id'], 'logged_in' => TRUE );
$this -> session -> set_userdata( $array_data );
redirect( 'easynotes/index' );
}

Ładujemy model User i pobieramy użytkownika. Jeśli mamy 1 wynik to za pomocą biblioteki do obsługi sesji zapisujemy sobie jakieś dane w niej ( tutaj przykładowe ), po czym następuje przekierowanie na stronę główną. Kolejna metoda kontrolera:
private function is_logged()
{
if( $this -> session -> userdata( 'logged_in' ) && $this -> session -> userdata( 'user_id' ) > 0 )
return TRUE;
else
return FALSE;
}

Sprawdza czy użytkownik jest zalogowany i zwraca odpowiednia wartość logiczną.
public function logout()
{
if ( $this -> is_logged() )
{
$this -> session -> sess_destroy();
}
redirect( 'easynotes/index', 'Location' );
}

Wylogowanie polega na zniszczeniu sesji i przekierowaniu użytkownika na stronę główną.
Model User i jego metody:
class User extends Model
{
public function __construct()
{
parent::__construct();
}

public function get_user( $login, $pass )
{
$this -> db -> where( 'login', $login );
$this -> db -> where( 'password', md5( $pass ) );

return $this -> db -> get( 'users' );
}
}

Możnaby pobierać do metody get_user jako trzeci parametr sposób hashowania hasła, ale dla uproszczenia napisałem to tak jak jest. Korzystam tutaj z biblioteki database, do której dostęp mam poprzez:
$this ->db -> metoda();
Za pomocą metody WHERE ustawiam klauzulę warunkową dla zapytania SQL a następnie zwracam zasób z metody get(), która jako argument przyjmuje nazwę tabeli.

Pozostałych modeli oraz widoków opisywał nie będę, są one analogiczne do przedstawionego kodu. Tu opisałem pokrótce sposób korzystania z bazy danych oraz z sesji.

14
sie
07

phpBB 3.0 RC4

Jako, że jestem administratorem dwóch for to śledzę poczynania developerów, jakie są prowadzone w stronę wydania finalnej wersji phpBB3. Na razie mamy kolejny RC ( Release Candidate ) pod numerkiem 4 tym razem. Z ciekawości ściągnąłem i zainstalowałem wersję anglojęzyczną.

I muszę przyznać, że robi wrażenie. Instalacja jest prowadzona krok po kroku, wszystko dobrze opisane ( lepiej niż w phpBB2.x ). Ustawienia są na bieżąco sprawdzane i nie ruszysz dalej dopóki nie będzie OK. Po instalacji logujemy się do panelu admina. Tu był pierwszy szok in plus. PA bardzo rozbudowany, z możliwością konfiguracji naprawdę ogromną. Duży postęp w tym miejscu. Kolejkna sprawa to moderacja. Panel moderatora IMHO dużo wygodniejszy niż niż był w starej wersji, bardziej poukładany itd. Sam widok jest o tyle ciekawy, że teraz posty są z lewej strony a autor i info o nim z prawej. Będzie mi się pewnie ciężko przestawić. Profil użytkownika zawiera również sporo opcji i ustawień, ale tam już się nie zagłebiałem.

Podsumowując: czekam z niecierpliwością na wersję finalną!




 

sierpień 2007
P W Ś C P S N
« lip   wrz »
 12345
6789101112
13141516171819
20212223242526
2728293031  

a

Strony