Portál AbcLinuxu, 25. dubna 2024 01:03


Dotaz: session_start v PHP

2.6.2005 13:23 Open Mage | skóre: 24 | Lom
session_start v PHP
Přečteno: 363×
Odpovědět | Admin
Zdravím, používám LAMP na intranetové aplikace, pro operátorské aplikace zatím bez využití sezení, pro administraci (bezpečnost přístupu na jednotlivé stránky je kontrolována pomocí sezení a proměnných jména a hesla) pak se session. Asi jako samorostlý samouk jsem si osvojil nějaký systém a používám v každém skriptu session_start, kontrola zda je uživatel přihlášen. Nevím zda je toto strůjcem mého problému, ale každopádně na těchto stránkách když odešlu formulář s daty (řekněme jméno, příjmení, heslo, čísločehosi) a jiný skript ho zpracuje a zjistí, že nemůže uložit tento záznam do MySQL pač je třeba čísločehosi v nečíselném formátu (tj. neošetřeno před odeslání javascriptem) a uživatel dá stránku zpět, tak tam už nejsou uloženy informace o jménu, příjmení, heslu a číslučehosi (musí je vypsat znovu, což se mi u ostatních skriptů na intranetu nestáva a pěkně se sami načítaji hodnoty znovu). Můžete prosím poradit, čím je toto obecně způsobováno, zda za to opravdu může session nebo mám někdě jinde chybu, co to obvykle způsobí ... ? Díky moc, Standa Puffler
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

LFCIB avatar 2.6.2005 14:37 LFCIB | skóre: 19 | blog: LFCIB | /home/lfcib
Rozbalit Rozbalit vše Re: session_start v PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi ti neodpovím proč, ale poradím ti jak to obejít. V té stránce s formulářem si přidej vložený rámec (iframe) a výsledek scriptu posílej do něj. V něm pak např. javascriptem (při úspěchu) přesměruješ celé okno na další stránku, nebo (při neúspěchu) zobrazíš opět javascriptem chybové hlášení (alert) přičemž data vyplněná uživatelem zůstávají ve formuláři. Jestli je to nepochopitelné, tak se ti omlouvám. LFCIB
-=:L:i:N:u:X:=-<=>-=:4:e:V:e:R:=- Vyhovuje mi Debian GNU/Linux
2.6.2005 17:43 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: session_start v PHP
Díky za radu, v nejhorším případě bych toto použil, ale akceptoval bych raději nějaké jednodušší řešení nebo radu, jelikož toto budu používat u mnoha aplikací a čím víc takovýchhle "nazvěme to prodlužování vývoje" tam bude, tim méně aplikací stihnu... Má někdo prosím ještě nějakou radu ?
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
10.6.2005 10:55 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: session_start v PHP
Opravdu prosím nikoho nenapadá čím je to způsobeno ? Mám už další aplikaci a k ní jakousi administraci pro supervizory, obě jsou víceméně skoro stejné, jen v administrátorské je více práv na práci s mysql daty - v operátorské části nepoužívám ochranu přes session (jméno, heslo, IP kompu, který na to smí), v supervizorské (administraci) pak ano. Teď ten kámen úrazu, v operátorské aplikaci když se odešle formulář s daty skriptu, který má data uložit do MySQL a zjistí se nesrovnalost, skript se ukončí, nahlási chybu a ukáže operátorovi javasript:history.back(), když klikne má tam data, opraví třeba nějaký formát a uloží už úspěšně. Stejný princip v stejném souboru, ale administrace kde je o pár kolonek navíc a vše chráněno jménem a heslem přes session se však po návratu neukáže ve formuláři nic.

Jsem si už téměř stoprocentně jist, že jakmile použiju session, tak se mohu s touto možností návratu rozloučit, což mi hooooodně moc vadí - řešení pomocí iframe se mi nevyplatí a ani mi po jeho vyzkoušení nepřijde moc dobré, řešit to ukládáním toho co se odesílá do GET proměnných se mi nechce (pak je nějak vracet zpátky pomocí odkazu na předchozí stránku a ), posílám přes POST. Je prosím tento fakt někde zdokumentovaný ? Nedaří se mi to najít, abych se podle něčeho mohl zařídit. Díky moc
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
10.6.2005 11:48 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: session_start v PHP
Za asistence kolegy na ICQ jsem na to přišel (guru co píše svůj vlastní HTTP server :o) - prohlížeč považuje stránku se sessions správně za dynamickou a jako takovou ji vždy načítá data z mysql znovu a neuloží si do cache data z formu zadaná operátorem, lze to řešit buď explicitně hlavičkou http EXPIRE a nebo v nastavení php.ini globálně zde :
; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
session.cache_limiter = nocache

; Document expires after n minutes.
session.cache_expire = 180
změnou na následující - pro cache prohlížeče private a pro proxy server pak public :
; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
session.cache_limiter = private

; Document expires after n minutes.
session.cache_expire = 180
Teď mi to šlape jako hodinky a radost nezná mezí. Tímto uzavírám tenhle problém.
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
Valoun avatar 10.6.2005 12:01 Valoun | skóre: 30 | blog: Psavec | Středočeský kraj
Rozbalit Rozbalit vše Re: session_start v PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
1. Takze kdyz udela uzivatel chybu, a vy mu ji zobrazite na dalsi strance (tj. po zpracovani na serveru), tak predpokladate ze da uzivatel "zpet" v prohlizeci? To snad ne. Pri psani aplikaci radsi zapomente, ze nejake zpet vubec existuje!

2. Z pohledu skriptu na serveru: Dostal jsem data z formulare, ale jeden udaj nesouhlasi. Opravdu je takovy problem zobrazit formular ihned znovu, uz predvyplneny?

3. Chovani formulare pri tlacitku zpet zalezi vyhradne na chovani prohlizece a vy jakozto autor webove aplikace to nemuzete nijak ovlivnit

4. Se session to nema imho nic spolecneho

5. Jak spravne zpracovavat data z formulare (spravne, bezpecne a inteligentne) zjistite napr. zde knihu

6. Vrele doporucuji si zakoupit nejakou knihu, a prostudovat si jak funguje HTTP komunikace. A kdyz pisete PHP, myslete z pohledu serveru, ne uzivatele, nebo prohlizece.
10.6.2005 13:28 Open Mage | skóre: 24 | Lom
Rozbalit Rozbalit vše Re: session_start v PHP
Ondro, děkuji Vám za rady, nejsem zahleděnej do svých řešení, prostě jsem měl radost že to funguje a naprosto otevřene přiznávám, že na té další stránce, je že pokud se vypíše chyba (die u spuštění SQL příkazu do databáze) tak v definici die je klikněte zpět a opravte ... Není tam konkrétně co, jelikož se jedná o aplikace který musim sesmolil za velmi, ještě jednou zdůrazňuju, velmi krátký čas aby provoz běžel. Co se browserů týče, uznávám že mám situaci jednodušší a všichni moji klienti přistupují ve firmě na stránky jediným browserem se stejným nastavením (díky Group Policy v Active Directory, to je asi pro abclinuxu nedůležité), tudíž tohle si můžu ošéfovat. Teď k jednotlivým bodům :

ad 1) souhlas naprostej, ve chvíli kdy budu umět k tý troše HTML, CSS, PHP i výborně Javascript, tak si ošetřim tyhle vyjímky na straně browseru... nehledě na to, že jakmile bude opravdu spousta času na každou jednotlivou aplikačku, nic takového prostě řešit nebudu - dělám to proto, že jsem léta programoval v proprietárním formátu MS Access a LAMP se učím pár měsíc, což na aplikace typu takového jaký dělám není opravdu mnoho - prostě chci přejít do opensource a předělat tak celou firmu co se databázových aplikací týče na LAMP.

ad 2) Není to problém pomocí GET, cookies, ... vím.

ad 3) Jak jsem psal mohu to ovlivnit velmi jednoduše, samozřejmě to neplatí, jakmile budu programovat aplikace pro internet a ne intranet.

ad 4) Má a velmi jak jsem si sám ověřil.

ad 5) Díky moc za tip, pár učebnic a knih už mám (základy, příklady, pak něco kapesního), tuhle jsem viděl v Luxoru, pokud ji doporučujete, koupím si ji a prostuduju.

ad 6) V tomto s Vámi souhlasím, jsem stále hodně začátečník, až budu dělat v PHP rok, dva, tři tak budu spousty věcí řešit jinak, lépe, bezpečněji, ... stejně tak souhlas, že díky tomu, že jsem samouk, osvojuju si určitě spousty zlozvyků, špatných postupů, zbytečně zdlouhavých řešení. To přiznávám a chystám se to řešit (jednak studiem cizích referenčních skriptů, postupů, webů, tutoriálů ...).

PEACE
Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.