Autor Zpráva
Charlie
Profil
Potřebuji zakázat klikání na tlačítko "Zpět", jak to mám udělat? Zkusil jsem tohle:

window.onback = zakaz(); 


function zakaz() {
history.forward();
alert('Klikat na "Zpět" je zakázané!');
return;
}


Tento kód ale spouští funkci zakaz() vždy, při reloadu, při odeslání formuláře, i při kliknutí na tlačítko "Zpět".

Celé se mi to nezdá jako ideální řešení, spíš bych bral něco jako tohle:

window.onback = return false;


Nic méně Javascript vůbec neumím, takže to nejsem schopen vyřešit sám. Díky.
Boldrik
Profil
No tak si vypnu javascript. v praxi klikani zpet proste nezabranis
Charlie
Profil
Jo, mam proti tomu ochranu v PHP kódu, ale dejme tomu že si tou ochranou nejsem moc jistý. Můj systém je velmi složitý a tato ochrana Javyscriptem by se mi opravdu hodila.

Navíc, lidé, kteří budou prohlížet mé stránky budou převážně z řad dospělých doktorů, kteří ani nemají ponětí, co to Javascript je.
Fred
Profil
Charlie Myslím, že pokud se použije na onload té stránky location.replace('taStejnaStranka') , historie se ztratí, ale nebyl bych tedy rád jako uživatel.
Charlie
Profil
Fred, no, tak jdu s pravdou ven.

Dělám on-line kurzy. Člověk si zaplatí kurz a hodí ho to na soubor kurz.php. Tady se mu zobrazí uvítací stránka kurzu. Poté je fáze, kde uživatel prochází skrz jednotlivé kapitoly a řeší testy, podle kterých se určuje úspěšnost kurzu. A kdyby se uživatel, který právě špatně udělal test mohl vrátit zpět, úplně by to postrádalo smysl.

Na úvodní stránku můžu napsat: Neklikejte na "Zpět", ale protože je to komerční záležitost, budou chtít uživatelé dosáhnout co nejlepších výsledků a to je donutí podvádět.

Jak jsem již říkal, mám to asi ošéfované přes PHP, ale vzhledem k tomu, že se POST odesílá pořád na jeden soubor, nemůžu zaručit, že bude vše fungovat. Celý průběh kurzu zapisuji do databáze, podle které kontroliji, zda je uživatel tam, kde má být, nebo ne.

A to je důvod, proč to potřebuju. Nejsem žádný webdesignerský prase, snažím se jen udělat co nejlepší aplikaci.
Fred
Profil
Hm, tak jsem to zkoušel a replacnutá stránka se smaže z historie.

Tedy

stránka 1 se jménem prejdi-na-no-history.htm

kód : <a href="no-history.htm">bez historie</a>


stránka 2 se jménem no-history.htm

kód :
<script type="text/javascript">
function init(){document.location.replace('bez-historie.htm')}//přesměruje na stránku bez-historie.htm
window.onload=init
</script>

stránka 3 se jménem bez-historie.htm
tlačítko zpět ji vrátí na první stránku a vynechává v historii stránku 2
Fred
Profil
Charlie Aha jsi mě předběhnul, zkus si to co jsem napsal výše, plyne z toho, že by jsi potřeboval nějaké mezistránky, které by nebyly v historii. Nevyznám se v php, ale mám pocit, že by šlo v hlavičce posílat nějaký meta refresh pokud je nežádoucí referer. Tedy, aby pokud je referer ona stránka , aby se to refresnulo pomocí meta zpátky. viz http://www.siteexperts.com/tips/functions/ts14/page1.asp
Charlie
Profil
Fred, tvoje řešení je elegantní, ale obávám se, že ho nemohu použít. Asi by mi to zabilo všechny mé POST proměnné. Ale moc díky!
Aleš Janda
Profil *
A co si v databázi pamatovat, jestli se ten test už vyhodnotil nebo ne?
Podruhé už by to nešlo..
Yuhů
Profil
To, co navrhuje Aleš, je standardní postup.
printf
Profil
navíc pokud člověk otevře stránku v novém okně (panelu), tak ani tlačítko "zpět" nepotřebuje.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0