Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Roman Duchoň:5.8.2018 11:07

Ahoj,
mám proměnné:
$tries1Safe - pevně dané číslo
$_SESSION['re­alizedTries1Sa­fe']) - postupně se přičítá při splnění podmínek.

Pak mám následující funkce:

if (($tries1Safe-$_SESSION['realizedTries1Safe'])==1) {
    header("Refresh:0");
}

Jde o to, aby se zobrazovalo správně při výpisu do HTML - tj. aktuální stav

echo "Pokusů na 1 sejf: ".($tries1Safe-$_SESSION['realizedTries1Safe'])."<br>";
echo "Uskutečněné pokusy: ".$_SESSION['realizedTries1Safe']."<br>";

Zkusil jsem: Zkoušel jsem např. závést jakousi novou proměnou, která se měnila dle dané podmínky a různě začlenit změnu té proměnné do kódu, kde se dějou změny těch před tím zmíněných proměnných.
Také jsem zkoušel hledat různé nastavení toho refreshe...

Chci docílit: Vím, že by mi pomohl nějaký dynamický jazyk, ale momentálně bych to potřeboval vyřešit nějak staticky.

Odpovědět
5.8.2018 11:07
RD
Avatar
Roman Duchoň:5.8.2018 11:13

No a třeba teď to funguje...
To je jak to klasické meme.
Tak bych zatím neřešil

Nahoru Odpovědět
5.8.2018 11:13
RD
Avatar
Roman Duchoň:5.8.2018 11:29

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?

Editováno 5.8.2018 11:31
Nahoru Odpovědět
5.8.2018 11:29
RD
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:6.8.2018 13:42

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.locati­on.href. V php presmerovavam obvykle jen jednou pomoci header() a obvykle u formulare, aby mi uzivatel omylem 2x neposlal stejna data.

Editováno 6.8.2018 13:44
 
Nahoru Odpovědět
6.8.2018 13:42
Avatar
Odpovídá na Roman Duchoň
Petr Spěvák:6.8.2018 16:14
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['re­alizedTries1Sa­fe'] 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.

Editováno 6.8.2018 16:16
 
Nahoru Odpovědět
6.8.2018 16:14
Avatar
Roman Duchoň:7.8.2018 22:40

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)

Editováno 7.8.2018 22:43
Nahoru Odpovědět
7.8.2018 22:40
RD
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:8.8.2018 9:02

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.

Editováno 8.8.2018 9:03
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
8.8.2018 9:02
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.