Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> klasa logowania
Jim
post 8.08.2005, 21:42:05
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 27.07.2005

Ostrzeżenie: (0%)
-----


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'

Ten post edytował Jim 8.08.2005, 21:44:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Ociu
post 9.08.2005, 08:25:42
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




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.

Ten post edytował Ociu 9.08.2005, 08:26:23
Go to the top of the page
+Quote Post
Spirit86
post 9.08.2005, 13:47:46
Post #3





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  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.


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
Ociu
post 9.08.2005, 13:53:12
Post #4





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




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.
Go to the top of the page
+Quote Post
Jim
post 9.08.2005, 15:57:05
Post #5





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 27.07.2005

Ostrzeżenie: (0%)
-----


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ć...
Go to the top of the page
+Quote Post
aleksander
post 9.08.2005, 17:40:56
Post #6





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

Ostrzeżenie: (0%)
-----


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:]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:38