Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klasa logowania
Forum PHP.pl > Forum > PHP
Jim
Witam,
poszukuję prostej, aczkolwiek efektownej klasy obsugujacej logowanie i sesje. jesli chodzi o programowanie obiektowe to za bardzo jeszcze nie jestem wtajemniczony dlatego prosze o pomoc.

Znalazlem spore archiwum klas o tej tematyce ale nie wiem ktora klase z tamtad wybrac dry.gif . znalazlem rowniez na tym forum taka oto klase:


  1. <?php
  2.  
  3. class Session {
  4.  
  5.     function Session() {
  6.         global $db;
  7.         $db->Execute("DELETE FROM `session` WHERE `endtime`<'".time()."'");
  8.         $this->sid;
  9.     }
  10.  
  11.  
  12.     function Start() {
  13.         global $db;
  14.         if(!isset($_COOKIE['CMS'])) {
  15.  
  16.             $sid = md5(getenv("REMOTE_ADDR").time());
  17.             $this->sid = $sid;
  18.             $time = time() + 3600;
  19.             $sql = "INSERT INTO `session` VALUES('{$this->sid}','{$time}',NULL,NULL)";
  20.             $db->Execute($sql);
  21.             setcookie("CMS",$this->sid,time()+3600);
  22.  
  23.         } else {
  24.             $this->$sid = $_COOKIE['CMS'];
  25.         }
  26.     }
  27.  
  28.  
  29.     function Destroy() {
  30.         global $db, $_COOKIE;
  31.         $sid = $_COOKIE['CMS'];
  32.         setcookie("CMS",1,time()-3600);
  33.         $db->Execute("DELETE FROM `session` WHERE `session_id`='{$sid}'");
  34.     }
  35.  
  36.  
  37.     function SaveVar($varname,$varvalue) {
  38.         global $db;
  39.         $result = $db->Execute("SELECT `vars` FROM `session` WHERE `session_id`='{$this->sid}'");
  40.  
  41.         while(!$result->EOF) {
  42.             $vars = unserialize($result->fields['vars']);
  43.         }
  44.         $vars[$varname] = $varvalue;
  45.         $save = serialize($vars);
  46.         $db->Execute("UPDATE `session` SET `vars`='{$save}' WHERE `session_id`='{$this->sid}'");
  47.     }
  48.  
  49.  
  50.     function GetVar($varname) {
  51.         global $db;
  52.         $result = $db->Execute("SELECT `vars` FROM `session` WHERE `session_id`='{$this->sid}'");
  53.  
  54.         while(!$result->EOF) {
  55.             $vars = unserialize($result->fields['vars']);
  56.         }
  57.         return $vars[$varname];
  58.     }
  59. }
  60.  
  61. ?>


i tereaz pytania:
czy $sid to id sesji? po co zapisywac to w bazie danych?
do czego sluzy funkcja destroy()?
jesli znacie lepsza klase to poprosze o przeslanie jej?

dzieki,
JIM
snitch.gif

ps. moze gdyby podczepic temat z klasa logowania i opisem jak ja uruchomic, skonczylyby sie tematy typu 'jak zrobic logowanie'
Ociu
sid do session id
destroy niszczy sesje na rządzanie. Coś jak session_destroy" title="Zobacz w manualu php" target="_manual.
Jest artykuł na php.pl, o własnym mechaniźmie sesji, jest ładnie napisan. Przeczytaj a wsio zrozumiesz.
Spirit86
  1. <?php
  2.  global $db, $_COOKIE;
  3. $sid = $_COOKIE['CMS'];
  4. ?>



po co w global tablica COOKIE, przeciez, to jest superglobalna?

ej on szukał samego

Cytat
poszukuję prostej, aczkolwiek efektownej klasy obsugujacej logowanie i sesje. jesli chodzi o programowanie obiektowe to za bardzo jeszcze nie jestem wtajemniczony dlatego prosze o pomoc.


jak się nie znasz na obiektowym, to po co Ci klasy? Możesz to osiągnąć w sposób nieobiektowy, zrozumiały dla siebie... ?

  1. <?php
  2. function Session() {
  3. global $db;
  4. $db->Execute("DELETE FROM `session` WHERE `endtime`<'".time()."'");
  5. $this->sid; // a to do czego ma niby służyć?
  6. }
  7. ?>


klasa dobra, bo można ją z łatwością rozbudować i używać w innych CMS, niż ten do którego została napisana.
Ociu
Cytat(Jim @ 2005-08-08 22:42:05)
Znalazlem spore archiwum klas o tej tematyce ale nie wiem ktora klase z tamtad wybrac dry.gif . znalazlem rowniez na tym forum taka oto klase:

To nie jego skrypt, więc się go o takie rzeczy nie pytaj.
Jim
Cytat
Jest artykuł na php.pl, o własnym mechaniźmie sesji, jest ładnie napisan. Przeczytaj a wsio zrozumiesz.

dzięki, @Ociu ten artykuł mi pomógł.


ps.:
Cytat
jak się nie znasz na obiektowym, to po co Ci klasy?

żeby się nauczyć...
aleksander
na artykułach leży art o OOP, aczkolwiek troche juz przestarzały smile.gif jednak podstaw się nauczysz. I pamiętaj, że pisanie w klasach to nie znaczy pisanie obiektowo:]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.