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

Náš Lopuch Vám
vytře zrak

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: qhlarcr
[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
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  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  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  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.
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 14.5.2009 11:02  2650
nechci sem dávat odkaz do té sekce administrace, kterou testuji, protože není zatím nijak zabezpečená
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 14.5.2009 11:01  2649
po refresh
tam už ta hláška nikde není
?
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 14.5.2009 10:57  2648
při nastavení zobrazení všech chybových hlášek tam mám toto:
ning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0


vypsalo se to na stránce úplně dolu ...
bredy 14.5.2009 10:33  2647
puschpullTo nevím, ale zkus experimentovat. Prostě si vymysli nějaký minimální příklad a vyzkoušej ho na Ebole. Podívej se taky, zda nemáš potlačené warning hlášky v nastavení. Pak třeba to nejde jen proto, že "headers alredy sent". Nevím, ale zkus to.

Já sessions nepoužívám, většinou implementuji vlastní v databázi.
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 14.5.2009 10:30  2646
Bredyale vrátil bych se ke své původní dnešní otázce
jak dosáhnout kompatibility scriptu (konkrétně toho se SESSION) aby stránky fungovaly na serverech jak pod PHP modulem Apache tak Fastcgi ?

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

(c) 2001-2011 Lopuch.cz   
Kontakt