Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Když diskuse,
tak s Lopuchem

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub PHP [ŽP: neomezená] (kategorie Programování) moderuje makovec.
Archiv
Diskuse o vybornem skriptovacim jazyku php. Dulezite odkazy, pred polozenim dotazu zkuste hledat odpoved zde:
  1. www.php.net - domovská stránka PHP
  2. www.kosek.cz - spousta tutorialu pro PHP v češtině
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: tznpqjc
[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
huh huh 14.5.2009 22:08  2665
Jenomže PHP umí -- a na to EtDirloth odkazoval -- použít vaši vlastní implementaci session.
mpts mpts Je to jinak, ba přesně naopak! 14.5.2009 21:14  2664
EtDirloth [2662]: On takový oblek z konfekce taky může být kvalitní a slušivý, ale oblek na míru je holt oblek na míru.
bredy 14.5.2009 20:21  2663
EtDirlothNo několik důvodů.
1) Kolikrát se mi stalo, že sessions z nějakého důvodu na hostingu nechodily
2) Mohu celkem dobře sledovat množství přihlášených lidí a jejich aktuální aktivitu (což se hodí zejména, pokud mám podezření, že někdo škodí).
3) Samozřejmě mohu otevřené sessions různě odhlašovat
4) Mohu si libovolně nastavovat expiraci
5) Informace o session jsou v databázi, nikoliv na serveru v adresáři /tmp
6) pokud jsou použity hash tabulky, pak mám podezření, že jsou i rychlejší
7) sessions lze i tímto způsobem sdílet mezi různými službami, pokud jsou schopni si vidět do databází (ale pravda, dá se to řešit i jinak)
etdirloth EtDirloth 14.5.2009 19:50  2662
vlastne sessionspuschpull [2653], Bredy [2647]:
Preco nepouzit user-level session storage? Mam to vyskusane.

Bredy, vazne mas pre vlastnu implementaciu nejaky rozumny dovod?
themajkl themajkl All those moments will be lost in time - like tears in rain. 14.5.2009 15:07  2661
Ty bys byl taky paranoidní, kdyby tě chtěl každej zabít!
bredy 14.5.2009 14:51  2660
machTo máš marné. Přesvědčovat paranoika, že ho nikdo nesleduje je zbytečný. Pořád bude tvrdit, že je středem vesmíru a že na něj mají políčeny všechny tajné služby světa.
mpts mpts Je to jinak, ba přesně naopak! 14.5.2009 14:42  2659
mach [2658]: ehm...
mach 14.5.2009 14:29  2658
themajlk| Ne že bych zcela souhlasil k Kdokolivem, ale argumentům,
| jak se to dělá pro dobro uživatele, nevěřím ani za mák.

Nedela se to kvuli uzivateli. To je jen sideeffect. Dobro uzivatele webove aplikace se vetsinou shoduje s dobrem provozovatele.

puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 14.5.2009 13:05 - Oblíbené kluby (01:36) 2657
Bredydíky moc
zatím jsem si to uložil, ale neodhodlal jsem se do toho pustit
až později v klidu
bredy 14.5.2009 12:56  2656
Jen malé nakopnutí (za chyby neručím)Načtení session
if (isset($_COOKIES["session"])) {
   $hash = $_COOKIES["session"];
   $res = mysql_query("SELECT `data` FROM `session` WHERE `hash`='$hash'")
   $data = mysql_fetch_row($res);
   $sdata = $data[0];
   $mysession = unserialize($sdata);
   $mysession["dirty"] = 0;
   $mysession["id"] = $hash;
}


Aktualizace session
if (isset($mysession) && $mysession["dirty"] == 1) {
   $hash = $mysession["hash"];
   unset($mysession["hash"]);
   unset($mysession["dirty"]);
   $sdata=serialize($mysession);
   mysql_query("REPLACE `session` (`hash`,`data`,`expires`)VALUES('$hash','$sdata',NOW() + INTERVAL 1 HOUR)");
}


Vyrobení session je podobně. Ještě bych tam z bezpečnostních důvodů vrazil addslashes a stripslashes u dat vkládaných a čteních z DB

z $mysession se pak pracuje stejně jako se $_SESSION. Jen pozor, že není superglobální, takže ve funkcích se musí deklarovat jako global. Při změně hodnot v poli se musí na konec udělat $mysession["dirty"] = 1
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 14.5.2009 12:44 - Oblíbené kluby (01:36) 2655
Bredydík
koukám, že celá asi zase lehce za hranicí mých schopností
:-)
bredy 14.5.2009 12:36  2654
puschpull Jednoduše, jakmile potřebuješ session (a nemáš ji), vyrobíš koláček, do něho uložíš nějaký HASH (třeba zahashovaný systémový čas v mikrosekundách), založíš v tabulce "sessions" (tebou k tomu účelu vytvořenou, může být i ten typ, co se alokuje v paměti sql serveru) řádek s klíčem toho hashe. Do řádky si nastrkáš vše co potřebuješ sledovat. Druhá možnost je tam dát TEXT políčko a do něho serializovat nějaké pole (třeba $mysession).

Na začátku stránky vždycky vyzvedneš koláček, vyzvedneš řádek z tabulky podle koláčku, deserializuješ $mysession. Pokud $mysession v průběhu zpracování skriptu změníš (doporučuju dělat formou $mysession["dirty"]=1), tak na konci skriptu proměnou serializuješ a uložiš do databáze.

Doporučuju ještě do tabulky vpašovat čas expirace a při zakládání nové session provést DELETE FROM `sessions` WHERE `expires` < NOW()

PS: Ještě k tomu hashi, pokud ti selže INSERT INTO pro duplicitní klíč, není problém generování zopakovat :-). Jenom abych se vyhnul tomuto dotazu :-)
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 14.5.2009 12:08 - Oblíbené kluby (01:36) 2653
Bredy"Já sessions nepoužívám, většinou implementuji vlastní v databázi."

je někde popsané jak na to ? (pro inspiraci)
díky
mpts mpts Je to jinak, ba přesně naopak! 14.5.2009 11:39  2652
Bredy [2651]: Však já také mluvil o těch kamerách. Proti cookies nic nemám, považuji je za rozumný mechanismus (za předpokladu, že prohlížeč je může blokovat, vybírat si, zda jim povolí permanentní uložení atd., a pokud možno že jsou ukládány v čitelném formátu, aby bylo případně lze je ručně smazat či editovat -- sqlite formát u FF je ještě jakž takž přijatelný, binární formát u Opery mi dost vadí, jak to má MSIE ani vlastně nevím).

Sám pro téměř všechny cookies nastavuji omezení životnosti na session (ať už samy chtějí session nebo delší), což u mne znamená tak den dva, leda bych sám chtěl, aby byla delší.

bredy 14.5.2009 11:16  2651
mptsNevím, přijde mi to jako hrozně paranoidní. Sledovat pomocí cookies někomu vadí, ale sledovat pomocí IP adresy těžko vypneš (přitom odvolávat se, že jsem za proxy je nesmysl, protože pravděpodobnost, že se víc uživatelů v daný okamžik prohlíží jednu site je minimální). Je to prostě asi na stejné úrovni, jako jíst hamburgra sterilizovanými rukavicemi.

[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt