Autor | Zpráva | ||
---|---|---|---|
Pgrlk Profil |
#1 · Zasláno: 31. 1. 2014, 15:19:50
Ahoj existuje nejaka PHP podminka pro vypnuty javascript? A nebo jak by se dalo jinak udelat, ze by se zobrazil nejaky text a neco jineho by se skrylo. Vím, že existuje <noscript>, ale to bych obsah který chci skrýt musel dát do <script> pokud se nepletu. A to nechci. Děkuji za každou radu
|
||
anonymníí Profil * |
#2 · Zasláno: 31. 1. 2014, 15:20:57
Pgrlk:
PHP samozřejmě neví, jaké nastavení má klient. |
||
Chamurappi Profil |
#3 · Zasláno: 31. 1. 2014, 15:33:18
Reaguji na Pgrlka:
„to bych obsah který chci skrýt musel dát do <script> pokud se nepletu“ Můžeš skriptem během načítání stránky nastavit třídu na <html> (tedy změnit document.documentElement.className ) a pak podle této třídy zviditelňovat a skrývat, co chceš.
|
||
Bubák Profil |
#4 · Zasláno: 31. 1. 2014, 15:37:34
Nějak takhle, tuším, že je to postup, o kterém píše Chamurappi:
http://kod.djpw.cz/kobb Případně koukni na http://jecas.cz/vypnuty-js |
||
Pgrlk Profil |
#5 · Zasláno: 31. 1. 2014, 16:15:36
Děkuji, ale moc mi to nepomohlo :( potřeboval bych něco s PHP podmínkami, protože když to udělám takto, tak ten text je stále ve zdrojovém kódu a uživateli stačí upravit prvek pomocí nástrojů v prohlížeči.
|
||
Radek9 Profil |
Pgrlk:
Jaký to má ale smysl? Kdybych si JavaScript zapnul, tak ta data přeci dostanu. Proč by to tedy nemohlo být jen skryté? |
||
Chamurappi Profil |
#7 · Zasláno: 31. 1. 2014, 16:23:31
Reaguji na Pgrlka:
Co to vytváříš, že je bezpečnostně důležité rozhodovat se podle zapnutého JS na straně serveru? Prohlížeče žádnou HTTP hlavičkou podporované/zapnuté technologie nesdělují. Což je na jednu stranu škoda, na druhou stranu je tvorba webů zajímavější :-) |
||
Str4wberry Profil |
#8 · Zasláno: 31. 1. 2014, 16:28:07
Reakce na Pgrlka:
„Děkuji, ale moc mi to nepomohlo“ A pročetl jste si ten odkázaný článek celý? Zejména Zapnutý a vypnutý JavaScript » Na straně serveru |
||
_es Profil |
#9 · Zasláno: 31. 1. 2014, 16:30:58
Pgrlk:
Možno sa ti zíde: přesmerovani po 5 sekundach |
||
Pgrlk Profil |
#10 · Zasláno: 31. 1. 2014, 16:46:35
No přesměrování pomocí metatagu, není také moc bezpečné jelikož i když tam nastavím hodnotu 0, jako dobu za kterou se to má přesměrovat, tak se to tam nepřesměruje hned a někdo může zastavit toto refreshováni a zůstane na stránce.
|
||
Joker Profil |
#11 · Zasláno: 31. 1. 2014, 16:50:12
Pgrlk:
„potřeboval bych něco s PHP podmínkami, protože když to udělám takto, tak ten text je stále ve zdrojovém kódu a uživateli stačí upravit prvek pomocí nástrojů v prohlížeči.“ A to vadí? Proč? Uživatel se zapnutým JS může udělat to stejné a neexistuje skript, který by mu v tom dokázal spolehlivě zabránit. Co do možnosti manipulace s dokumentem není rozdíl mezi zapnutým a vypnutým JS. Chamurappi: „Prohlížeče žádnou HTTP hlavičkou podporované/zapnuté technologie nesdělují. Což je na jednu stranu škoda, na druhou stranu je tvorba webů zajímavější :-)“ Stejně by to moc použitelné nebylo. Třeba Flash nainstalovaný a vypnutý na úrovni prohlížeče je podpora ano nebo ne? Já mám Flash vypnutý na úrovni prohlížeče, ale v případě potřeby ho zapnu jednoduše kliknutím na Flashový prvek. Kdyby to stránka vyhodnotila jako že Flash nemám a prvek mi vůbec neposlala, moc bych to neocenil. Nebo třeba že prohlížeč umí a má zapnutý JS (klidně nějaké konkrétní verze) ještě neznamená, že jeho DOM umí třeba document.getElementsByClassName, nebo cokoliv jiného. |
||
_es Profil |
#12 · Zasláno: 31. 1. 2014, 16:51:02
Pgrlk:
„není také moc bezpečné“ Čo si v tomto prípade prestavuješ pod „bezpečnosťou“? Lebo to vyzerá, že si sa pýtal na niečo iné, než potrebuješ. |
||
Pgrlk Profil |
#13 · Zasláno: 31. 1. 2014, 17:01:03
_es: Jen v mém případě není dobré, pokud by uživatel skončil na této stránce s vypnutým JS. Což pomocí tohohle je možné.
Joker: Mám zde už jiný JS a ten provádí určitou akci. Když by uživatel měl vypnutý JS, tak by zůstal u "kroku" 1. Ale poté se pomocí JS provádí něco kde následuje "krok" 2. A k tomuto se už uživatel s vypnutým JS nemá jak dostat (v případě, že by toto bylo pro uživatele nevýhodné, tak bych to neřešil, ale v tomto případě toho může využít oproti lidem se zapnutým JS). |
||
Joker Profil |
#14 · Zasláno: 31. 1. 2014, 17:08:39
Pgrlk:
„Když by uživatel měl vypnutý JS, tak by zůstal u "kroku" 1. Ale poté se pomocí JS provádí něco kde následuje "krok" 2. A k tomuto se už uživatel s vypnutým JS nemá jak dostat“ Když neprovedení kroku 2 tedy uživateli dá nějakou výhodu, u uživatele se zapnutým JS neprovedení kroku 2 nevadí? |
||
Bubák Profil |
#15 · Zasláno: 31. 1. 2014, 17:10:42
Pgrlk:
„Jen v mém případě není dobré, pokud by uživatel skončil na této stránce s vypnutým JS.“ Přijdu na stránku, vypnu JS, některé prohlížeče sice stránku po vypnutí JS načtou znova, ale můj oblíbený prohlížeč nikoliv. Příklad, otevřu stránku Datum v javascriptu Vypnu JS, hodiny se zastaví. Zapnu JS, hodiny zase běží. |
||
Pgrlk Profil |
#16 · Zasláno: 31. 1. 2014, 17:27:53
Joker: Ten krok 2 se spustí sám pokud máš zapnutý JS. Pokud tuto stránku zavřeš dřív než se provede krok 2 tak je to v podstatě jedno. Tam jde o to, že po určité době se provádí ten krok 2 a člověk s vypnutým JS se k tomuto kroku nedostane po stanoveném čase.
Bubák: A mohu se zeptat co je to za prohlížeč? Já když jsem to zkoušel v opeře a google chromu, tak po vypnutí script probíhá dál. |
||
Bubák Profil |
#17 · Zasláno: 31. 1. 2014, 17:43:49
Opravdová, nechromovaná Opera.
|
||
Amunak Profil |
Pgrlk:
Mohl bys přestat mlžit a říct konkrétně, o co jde? Třeba ti pak dokážeme poradit lépe. Mezi klientem se zapnutým JS a bez JS není moc velký rozdíl (a rozhodně bys ho tam neměl dělat). K přístupnosti pro nejavascriptové klienty se přistupuje tak, že je ve výchozím nastavení všechno zobrazené (třeba to, co se normálně objeví až po kliknutí na něco zajavascriptovaného [krásné slovo :-)]), a pak se to skryje přes JS, když JS funguje. Jednoduchá alternativa třebaq k nějakým složitějším prvkům (jako je odpočet) je prostě <noscript>. Je mýtus, že to musíš párovat se <script> tagem. Pokud se bojíš, že se ti někdo bude hrabat v kódu a vydoluje nějaké zjednodušení (mám pocit, že se pokoušíš o něco hnusného jako nutit javascriptové uživatele třeba čekat na odpočet jako to dělají různé stahovací servery), pak věz, že ten, kdo má nějaké ponětí o tvorbě webu, to dokáže překonat, a těch ostatních 99.9% návštěvníků ani neví, co je to zdrojový kód stránky, javascript, nebo nějaký <noscript>. Myslím, že tady tu minoritu, která ti obejde nějakou zhovadilost, můžeš oželet. |
||
_es Profil |
#19 · Zasláno: 31. 1. 2014, 17:56:32
Bubák, Pgrlk:
Rovnako sa správa aj Firefox. |
||
Pgrlk Profil |
Amunak: Snažím se o to aby pokud člověk něco neprovede do určitého času bude proveden krok 2. Což v případě s vypnutým JavaScriptem bude moct provádět třeba 10minut a poté se přesunout na krok 2 sám. A myslím, že vypnout javascript napadne přece jen více lidí než 0.1%
|
||
Radek9 Profil |
#21 · Zasláno: 31. 1. 2014, 18:10:21
Pgrlk:
Asi jsi špatně pochopil slovo „konkrétně“ z Amunakova příspěvku. |
||
Amunak Profil |
#22 · Zasláno: 31. 1. 2014, 18:21:20
Pgrlk:
„A myslím, že vypnout javascript napadne přece jen více lidí než 0.1%“ Jenže když si JS vypnou až dodatečně, stejně bys jim měl naservírovat stejnou stránku jako lidem co JS nemají „vůbec“. Nebo těm to jako nebude fungovat vůbec? Buď si vyber - lidi s vypnutým JS to budou mít znepřístupněné úplně, nebo to všem bude fungovat tak, jak má. A riskuješ, že nějakou zanedbatelnou minoritu napadne podvádět procházením kódu, a budou pak míst stejnou výhodu jako lidi co mají JS vypnutý pořád a všude. Radek9: Taky mám ten pocit. |
||
juriad Profil |
#23 · Zasláno: 31. 1. 2014, 18:23:10
Pgrlk:
Můžeš na serveru při generování první stránky vygenerovat token - náhodný řetězec platný třeba jen dvě minuty (uložíš si ho do databáze). Pokud později přijde požadavek a jeho token již platný nebude, uživateli vynadáš. Toto řešení je bezpečně a bude fungovat bez ohledu na JS. |
||
Joker Profil |
#24 · Zasláno: 31. 1. 2014, 19:56:02
Pgrlk:
„Ten krok 2 se spustí sám pokud máš zapnutý JS.“ A když budu mít zapnutý JS, ale zabráním tomu, aby se ten krok spustil? „Snažím se o to aby pokud člověk něco neprovede do určitého času bude proveden krok 2.“ Pak se nabízí snadná a poměrně neprůstřelná možnost: Ve chvíli přechodu na krok 2 na serveru zkontrolovat, jak dlouho trval krok 1. Buď přímo (porovnat čas přijetí požadavku na krok 1 a na krok 2), nebo jak píše juriad: Společně s krokem 1 poslat token s omezenou dobou platnosti (ideálně by to asi mohl být digitálně podepsaný aktuální čas, ale v PHP asi než se s tím patlat bude lepší použít jednodušší způsob), přičemž pro přechod na krok 2 by byl nutný platný token. |
||
Pgrlk Profil |
Děkuji, i když to není úplně 100% řešení mého problému nakonec jsem to takto vyřešil.
|
||
Časová prodleva: 10 let
|
0