Autor Zpráva
Venca V.
Profil *
Zdravím všechny... Poradíte mi prosím, jestli jde javascriptem zakázat refresh? Jak zakázat zpět už jsem zjistil, ale na tohle nějak nemůžu přijít... Děkuji. V.
quinux
Profil
Venca V.
No tak pokud se nepletu tak tohle nejde, jelikož na refresh máš tlačítko v prohlížeči, pak můžeš použít F5 a Ctrl+F5 a taky můžeš kliknout do adresního řádku a dát entr čímž v podstatě taky provedeš refresh. Zakázat tohle všechno tak se na tvé stránky nikdo nedostane.

Je třeba, ale uvážit proč chceš takto omezovat uživatele? Z bezpečnostních důvodů? Vypnu si javascript a projdu. Pokud chceš opravdu takto nějak zabezpečit např. uživatelskou sekci tak raději nastavuj na serveru platnost stránky to bude bezpečnější.
Venca V.
Profil *
Jde o to, že po vložení záznamů do db zůstanou v adrese ty proměnné, a po refreshi se znovu načtou do db. Unique zadat nelze, protože některé záznamy mohou být duplicitní. Řeším tento problém i v sekci PHP, záležitost s přesměrováním stránky na sebe samu po přidání záznamů mi z nějakého důvodu nefunguje... Tohle řešení mi přišlo nejjednoduší:-)
Venca V.
Profil *
Jo a na zpět je taky tlačítko v prohlížeči i zkratky, a taky jde zakázat:-)
DJ Miky
Profil
Venca V.
Posílej data pomocí postu... Vkládat věci do DB získané přes get.. No nevím, nepřijde mi to ideální.
quinux
Profil
Venca V.
Tohle v žádném případě neřeš javascriptem jelikož nic nevyřešíš. Co když bude mít uživatel javascript vypnutý?
Rozhodně to řeš na serveru, bohužel ti v tom neporadím, jelikož PHP příliš neumím, ale v sekci PHP ti jistě někdo poradí.
DJ Miky
Profil
Venca V.
Jak jde zakázat Zpět? Novým oknem jedině, ale to jde zavřít :-).
Venca V.
Profil *

window.history.forward(1);

jde o aplikaci do práce, takže tam bych si to u těch pár počítačů ohlídal, aby nebyl javascript vypnutý...
Venca V.
Profil *
DJ Miky:Posílej data pomocí postu... Vkládat věci do DB získané přes get.. No nevím, nepřijde mi to ideální.

Máš pravdu, metodu už jsem si opravil na POST, nicméně problém to neřeší-i když nejsou vidět v adresním řádku, stejně tam ty proměnné jsou a při refreshi se přidají:-(
Takže víte prosím někdo zda jde zakázat javascriptem refresh? Děkuji, V.
tiso
Profil
Venca V.
Neviem o tom že by to išlo.
Anonymní
Profil *
Venca V.
udělej to přes php - je to lehčí / lepší a proveditelné :-)
yosarin
Profil *
to jsem byl já...
peta
Profil *
DJ Miky Tak POST je totez jako GET z hlediska refresh :)
Venca V. Vzdycky muzes v PHP hodnoty smazat
foreach ($_GET as $key => $value) {unset($_GET[$key]);}
nebo to mozna pujde hromadne
unset($_GET)
Tim padem by se nemuseli pres F5 prenaset.

Pak ja treba pri zpracovani formulare pouzivam pro zpracovani jiny soubor a vracim se pres header("location:"), soubor mam obklopeny obstart obflush .

Take muzes pouzivat JS cookies
kde muzes hodnoty prenaset
nebo je muzes vyuzit pro kontrolu stranky

Take muzes odesilat v GET pomocnou promennou a tu ve strance incrementovat a ulozit do SESSION. Pak uz jen pri odeslani zkontrolujes session.

Proc bych javascriptem zakazoval refresh? To mi prijde stejne prastene jako zakazovat history. Nemas to od, jej, zrovna mi nick vypadl, ale se s nim hadam o kazdou prkotinu :) Si mysli, ze forum je neco takove jako FAQ nebo horka linka a nemuze pochopit, co znamena slovo diskuse :)

Co bych udelal ja? nastavil META tag no-cache. Tim by mela byt stranka pokazde unikatni. Je treba nastavit Pragma i Cache-control z duvodu nejakeho prohlizece.
v PHP se to dela takto
Header ('Pragma: no-cache');
Header ('Cache-Control: no-cache, must-revalidate');
Pokud i presto se poslou tataz data, pak bych to povazoval za vyjimecnou udalost a osetril nejakym vyse popsanym zpusobem nebo jeste jinym.
venca12
Profil
Venca V. ::: Na zakazování refreshe kvůli znovuposlání dat se vyprdni. Lepší je to ošetřit pomocí php. Já to dělám nějak takhle:

Ve formuláři si přidám jeden input type hidden a do něj vygeneruju zcela náhodné číslo.

Po odeslání dat na server uložím toto číslo do session.

Při dalším odeslání dat na server zkontroluju, zda-li se náhodné číslo shoduje s tím v session, pokud ano, neukládám záznam do databáze, protože se zjevně jedná o již vložený záznam (náhodné číslo nebylo změněno).

A to je vše. Jediná "nevýhoda" je použití sessionu, ale myslím si, že to v pohodě kompenzuje to, že ti to bude fungovat.

Btw. unset($_GET); ti nepomůže, protože tím odstraníš data z paměti na serveru, ale při kliknutí na refresh jsou data znovu zaslána z prohlížeče na server.

Btw2. tím že budeš data zpracovávat v jiném souboru a vracet se přes header:location nebudou data při refreshi již zaslána, protože byla zaslána z předchozí stránky. Zaslala by se v případě, že by uživatel kliknul na zpět. To máš ale ty zakázané, tzn. zjevně by to řešilo tvůj problém, ale nezdá se mi to příliš čisté.
Venca V.
Profil *
Děkuju všem za odpovědi, už jsem to vyřešil s pomocí dobrých duší v sekci php...


<?
session_start();
mysql_connect("localhost","$_SESSION[jmeno]","$_SESSION[heslo]");
mysql_select_db('pokus');
mysql_query("set names utf8");
$vlozeno=mysql_query("insert into $_POST[posta] (id........;
values (0,'$_POST[druh].......;
$result = mysql_query($vlozeno);
if ($vlozeno) {
header("Location: ".$_SERVER["HTTP_REFERER"]);
exit();
}
?>

Takže se mi to tímto skriptem pouze zpracuje a vrátí zpět na stránku s formulářem. V.
venca12
Profil
Venca V. ::: Člověče nechci být prudérní, ale já mám referer defaultně v prohlížeči zakázaný. Když hledám na internetu dětské porno a vyhledávač mě odkáže na stránky nějakého provokatéra, který se potom baví čtením refererů, nejsem tolik nápadný, jako bych ho měl zaplý.

Btw. mám takový divný pocit, že tam máš asi o jedno mysql_query víc, než jsi chtěl mít
Jan Tvrdík
Profil
Venca V.
přesměrovávej to na nějakou úplně jinou stránku, kde třeba oznámíš, že to co chtěli, se úspěšně povedlo.
nebo testuj HTTP_REFERER přes isset a když není kdispozici, tak přesměruj třeba na úvodní stránku
Toto téma je uzamčeno. Odpověď nelze zaslat.