Autor | Zpráva | ||
---|---|---|---|
Asterofix Profil |
#1 · Zasláno: 8. 9. 2007, 14:53:22
Zdravím,
chtěl jsem zabezpečit stránky na kterých mám diskusi, aby se příspěvek nevkládal opakovaně po refreshi, ale vzhledem k tomu, že stránky incuduju (diskusi mám jen u článků), tak se mi header moc nehodí. Nevíte o nějaké jiné možnosti? např. tato kniha http://firstpage.profitux.cz/?page=guest to nějakým způsobem řeší, ale i když jsem prošel celý kód od hora dolů nepodařilo se mi v tom kódu nic zvláštního najít Mockrát díky za pomoc |
||
Aleš Janda Profil |
#2 · Zasláno: 8. 9. 2007, 15:50:40
> vzhledem k tomu, že stránky incuduju (diskusi mám jen u článků), tak se mi header moc nehodí
To se navzájem nějak vylučuje? Header se hodí, nic jiného pořádně není. |
||
bukaj Profil |
#3 · Zasláno: 8. 9. 2007, 15:54:19
Asterofix
Pokud jsem to pochopil, tak v tvém případě to vidím jako nejschůdnější možnost bufferování výstupu. |
||
Rellik Profil |
#4 · Zasláno: 8. 9. 2007, 17:29:20
Cece asi si ten kod prosel spatne... Je to refreshovane pomoci JS. Presneji se podivej na radek 155 -159 ;)
|
||
Mastodont Profil |
#5 · Zasláno: 8. 9. 2007, 17:32:03
Mně by taky zajímalo, jestli to jde bez redirectu, ale to asi ještě nikdo neobjevil ...
|
||
Asterofix Profil |
#6 · Zasláno: 8. 9. 2007, 18:33:19
Aleš Janda
Nevylučuje, ale ta diskuse, je v includované stránce pod článkem, který má vždy jinou url, takže nevím jak bych zadal v header('Location: http://stranka.cz/index.php?page=clanek&id=50', TRUE, 303); vždy tu správnou cestu, když má být header vždy na začátku stránky a já nemůžu tu url např. vybrat z databáze. A taky pořádně nevím, jak to vlastně funguje :) Rellik No jo, díky, toho jsem si vůbec nevšim, protože jsem to vzal vylučovací metodou a promazal to, aby mi v editoru zůstal jen kód, kde by to mohlo být a tohle jsem asi přehlíd. Ale to by znamenalo, že to funguje jen když má prohlížeč zapnutý JS, ne? bukaj No nevím, přijde mi to na mě moc složité a navíc by to mohlo být na nějakém serveru vypnuté, pokud se nepletu. Ale díky za radu, zkusím si o tom něco dalšího najít a třeba změním názor. Má ještě někdo nějaký nápad, prosím? |
||
Mastodont Profil |
#7 · Zasláno: 8. 9. 2007, 18:40:33
Asterofix
Co třeba si do formuláře pro vložení příspěvku dát hidden pole s id článku, ke kterému se ten komentář přidává, a z něj pak sestavit URL? |
||
Asterofix Profil |
#8 · Zasláno: 8. 9. 2007, 18:50:55
Mastodont
Dobrý nápad, ale protože hlavička musí být na začátku stránky, tak to musím dát do index.php a co by se stalo, kdybych otevřel stránku, která by vypadala třeba jako stranka.cz/index.php?page=kategorie a žádné id by neobsahovala?? S hlavičkami moc zkušeností nemám, tak mě omluvte. |
||
Asterofix Profil |
#9 · Zasláno: 8. 9. 2007, 19:59:41
bukaj
Tak teď jsem si něco prostudoval o tom bufferování a opravdu by to mohlo jít, mockrát díky. Ale ještě bych se rád zeptal jestli to nemůže mít nějaké vedlejší efekty, třeba že se zpomalí načítání, nebo to bude mít problém se session, která musí být na začátku stránky... A pokud jsem to správně pochopil, tak tu hlavičku dám do podmínky typu: jestli je formulář odeslán, zapiš údaje do databáze a pak proveď header?? Moc Tě prosím o odpověď, protože tím bych konečně ten problém vyřešil |
||
bukaj Profil |
#10 · Zasláno: 9. 9. 2007, 00:04:56
Asterofix
Ale ještě bych se rád zeptal jestli to nemůže mít nějaké vedlejší efekty Vše má své vedlejší účinky tudí i bufferování. V podstatě jde o to, že místo toho, aby se výstup stránky rovnou odesílal klientovi se ukládá do paměti a až tehdy, pokud to sám chceš (použiješ nějakou fci flush) nebo skončí soubor, výstup bude odeslán. Tudíž to klade vyšší hlavně vyšší nároky na pamět (z čehož vyplývá, že tě provozovatelé serveru nebudou mít moc rádi :). třeba že se zpomalí načítání Nemělo by být nijak citelné. Samozřejmě záleží na výkonosti serveru. nebo to bude mít problém se session Většinou práve naopak ;) A pokud jsem to správně pochopil, tak tu hlavičku dám do podmínky typu: jestli je formulář odeslán, zapiš údaje do databáze a pak proveď header?? Ne, ani ne. Začátek bufferování (ob_start()) by měl být na začátku stránky, resp. před jakýmkoli výstupem (HTML nebo fce echo, print apod.). Poté můžeš dělat co je libo. A za poslední fcí header() či jinou, která má co do činění s hlavičkami, uvolnit výstup (ob_end_flush()), aby se zbytečně nezabírala paměť. |
||
Asterofix Profil |
#11 · Zasláno: 9. 9. 2007, 13:56:41
bukaj
Omlouvám se, ale teď mě napadá ještě jedna otázečka :) Ještě raději připomenu, že mám index a do něho includuju stránku s článkem. Takže začátek bufferování musím umístit na začátek indexu a konec bych tedy umístil pod hlavičku, která se spustí pokud návštěvník odeslal formulář. To by ale znamenalo, že se bufferování spustí i v případě, že si návštěvník prohlíží jakoukoli jinou stránku, kde buffer není potřeba. Takže šlo by to ošetřit tím, že bych na začátek indexu dal následující podmínku, která by spustila buffer jen po odeslání formuláře? if($odeslat) ob_start(); Už Tě nechci otravovat, takže mi klidně jen prosím napiš ano nebo ne, jestli to bude fungovat jak chci... Mockrát díky |
||
Mastodont Profil |
#12 · Zasláno: 9. 9. 2007, 14:01:08
Asi mi něco uniklo, ale jak vlastně bufferování výstupu nahrazuje redirect coby ochranu proti opakovanému odeslání POSTu?
|
||
Asterofix Profil |
#13 · Zasláno: 9. 9. 2007, 14:59:21
Mastodont
Právě že to redirect nenahrazuje, ale díky tomu nemusím mít hlavičku na začátku stránky. |
||
Časová prodleva: 17 let
|
0