Diskuze: Refresh při splněné podmínce (ale pouze jednou)
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
No a třeba teď to funguje...
To je jak to klasické meme.
Tak bych zatím neřešil
No...
A nakonec mi tedy nejshůdnější řešení přišlo nacpat
header("Refresh:0");
všude, kde dochází ke změnám.
Co myslíte?
Nerozumim ani slovu
Ve 'chci docilit' mas nejaky blabol.
Co to ma vlastne delat, mi neni vubec jasne.
Ve 'zkusil jsem' je tez nejaky blabol, ktery bez kodu, ktery odpovida textu
nedava moc smysl.
header("Refresh:0"); Jsem nikdy nepouzil, netusim, co to udela. A tys to
nepopsal. jestli to presmeruje na tu samou stranku, php a to dal presmeruje, tak
by uzivateli mohl zobrazit uz jen vysledky php, ktery nikam nepresmeruje. Nebo
to cele ukonci uz pri prvnim presmerovani a zobrazi uzivateli jen 1.
Zkus treba nejaky kompletni jednoduchy program, ktery staci ctrl+c, ctrl+v a spustit. Nestacilo by treba ty podminky zkratit na $i++; a $i<50? Vis, jako, pro nas. Nemusis rozepisovat podrobnosti, pokud nejsou potreba.
Ja bych pro presmerovani pouzil tag <meta> nebo javascript window.location.href. V php presmerovavam obvykle jen jednou pomoci header() a obvykle u formulare, aby mi uzivatel omylem 2x neposlal stejna data.
echo "SORRY JAKO!";
Fakt jsem se snažil pochopit, o co Ti jde. No, takže pokud je realizovaný počet pokusů právě o 1 menší, než celkový povolený počet pokusů, stránka vygenerovaná PHP skriptem se začne zběsile stále dokola refreshovat v intervalu 0 sekund (jak se načte, okamžitě se začne načítat znovu). Další případné zvýšení $_SESSION['realizedTries1Safe'] o 1 by ale musel provádět jiný skript zobrazovaný ve stejném prohlížeči, protože ve stránce refreshované po 0 sekundách už uživatel nemá šanci cokoliv zadat (skoro to vypadá, jako by to běželo ve FRAMESETu či dvou nezávislých JavaScriptových boxech atp., ale nechci hádat, to by se nám to poněkud rozvětvilo).
Jinak se dá říct, že "refresh pouze jednou" se provede už tím, že PHP skript stránku vygeneruje a pošle prohlížeči (další refresh by vrátil stejný výsledek, pokud by tam nebylo třeba nějaké odpočítávání času, nebo zpracování něčeho jiného, co se mění nezávisle na tomto skriptu, případně načítání počtu refreshů do session atp. - tím se nám to opět může větvit, takže radši počkám na upřesnění).
Můžeš nějak upřesnit, o co Ti vlastně jde? Jsem si téměř jist, že rozumné řešení nebude problém vymyslet.
No, celé to bylo jen zacyklené, teď už přesně nevím jak a kde, ale začlo to fungovat - šel jsem dál.
Šlo mi hlavně o to, že mám v PHP nějakou logiku, která se vykoná a potřebuji pak zobrazit aktuální stav proměnných.
Tudíž jsem po vykonání příkazů v různých větvích přidal
header("Refresh:0");
Takže vše funguje, nejradši bych se sám označil jako řešitele, ale
přijde mi to nevhodné a nevím - je to vůbec správně?
Mluvím právě čistě o jazyku PHP, žádném dynamickém (JS? U něho jsem se
ještě nezastavil).
P.S. Přesto díky moc za pozastavení nad dotazem!
P.S.2 Když mi někdo nepoví, zda dělám správně, klidně to někdo
uzavřete (nebo uzavřu časem sám)
Spis, nikdo takove veci nezkousel. Promenou obvykle lidi ulozi do db nebo
session. Nepotrebuji zahlcovat server opakovanym refresh. Staci treba jednou za
17s (u chatu), kdyz se nic nedeje.
Kdyz to nikdo nepouziva a nezna duvody, ktere te k tomu vedou, tezko se da
posoudit spravnost takoveho zpusobu.
Zobrazeno 7 zpráv z 7.