Autor Zpráva
Perry
Profil
Dá se nějakým způsobem v PHP zjistit, zda má uživatel povolený nebo bloknutý JS ? Klidně i při opakovaném načtení (podobně, jako se dají otestovat koláčky)
Měsíček
Profil
Chabé pokusy o zjištění.
bohyn
Profil
Co treba merici tecka?
<noscript>
<img ...>
</noscript>
Měsíček
Profil
http://us2.php.net/manual/en/function.get-browser.php
bohyn
Profil
Měsíček
To nerika nic o tom jestli ma JS zapnuty
Měsíček
Profil
Ale ano :) je tam hodnota "javascript" a pokud je zapnutý tak má "1" pokud ne tak "0", problém je v tom, že správce serveru musí mít správně nakonfigurovaný server s určitým souborem, aby tato funkce mohla fungovat, čti příště pořádně :o)
bohyn
Profil
Měsíček
A jak to z $_SERVER['USER_AGENT'] poznas?
To jestli je 1 nebo 0 zalezi na tom jestli dany browser JS umi nebo ne (nehlede na zapnuti/vypnuti).
Leo
Profil
"Ale ano :) je tam hodnota "javascript"...."

Měsíček

Kecate. Vzhledem k tomu, ze - jak pise bohyn - se info o zapnutem js automaticky nepredava v zadne http hlavicce, slo by to jedine telepatii.

Leo
Měsíček
Profil
"A jak to z $_SERVER['USER_AGENT'] poznas? "

Nijak, .. nespletl sis kontext? :) .. upřímně nevím proč si vytáhl superglobální pole $_SERVER[] k funkci get_browser.

"To jestli je 1 nebo 0 zalezi na tom jestli dany browser JS umi nebo ne (nehlede na zapnuti/vypnuti)."

Možná. Možná taky 1 znamená zapnutý, 0 vypnutý a prázdný znamená "promiň neumím".

Nechceš to nechat tak pro Perryho budou tvé a mé poslední příspěvky v tomto vlákně nejméně důležité.

EDIT:// OK, leo a bohyne beru zpět.
Chamurappi
Profil
Reaguji na Měsíčka:
Tvůj příspěvek #4 je velmi zavádějící, protože server nedostává od prohlížeče informaci, jestli má zapnutý JavaScript. Odkázaná funkce může nanejvýš tipovat z User-Agenta a z něj nikdy nemůže zjistit, jestli je JS povolený.
Leo
Profil
Doplnim pro mene chapave: browscap.ini obsahuje informace jen o tom, jestli dany prohlizec javascript umi v principu, ne jestli je zapnuty v dane chvili - takze je to informace na dve veci. Leo
Měsíček
Profil
Tak to jsem blbě pochopil, promiň Bohyne.
bohyn
Profil
Měsíček
Superglobalni promenou sem pletu proto ze se to z ni urcuje.

Perrymu by melo pomoci co sem psal vyse - vlozit obrazek (smerijici na PHP script) mezi noscript tagy
Leo
Profil
Jeste k puvodnimu tematu - at uz zvolite jakekoliv reseni, mel byste myslet jednak na uzivatele s vypnutym js (i kdyz tech je uz malo) a taky na to, jak se budou chovat roboti vyhledavacu. Me osobne je sympaticke treba reseni s meta refresh v noscriptu (i kdyz mozna neni validni, ale to neresim), ale otazka je, jak se k nemu postavi roboti, ze. Leo
bohyn
Profil
Leo
Vylekat navstevnika refreshem se mi moc nelibi, kdyztak to aspon schovat nekam do 1x1 px iframe
Perry
Profil
bohyn

Nějak ten obrázek nechápu... jak z toho poznám, zda JS běží nebo ne ?

Leo
Zajímavé řešení, to bych mohl zkusit, ovšem pokud to nebude validní, tak je mi to na nic... (práce musí být validní).


---
JS potřebuji kontrolovat kvuli AJAXu. Když ho uživatel zablokuje, tak mi nebude fungovat admin sekce, kde ho hojně využívám v tabulkách. Přeci jenom beru to tak, že admin by měl mít JS povolený, ale náhoda je blbec, a pak to nepojede :)... takže pokud nemá JS, tak se nebude moci přihlásit
bohyn
Profil
Perry
Pokud se odesle dotaz na obrazek (script) tak je vypnuty JS a nastavis session/cookie. Na to ze je vypnuty JS muzes upozornit i nejakym "transparentem" pres obrazovku taktez pres noscript.
Leo
Profil
"JS potřebuji kontrolovat kvuli AJAXu. Když ho uživatel zablokuje, tak mi nebude fungovat admin sekce, kde ho hojně využívám v tabulkách. Přeci jenom beru to tak, že admin by měl mít JS povolený, ale náhoda je blbec, a pak to nepojede :)... takže pokud nemá JS, tak se nebude moci přihlásit"

Ona nakonec nejlepsi cesta (pokud se na adminy, co nemaji zapnuty js nemuzete vykaslat) neni test zapnuteho js na strane php, ale proste udelate stranky tak, aby s vypnutym js fungovaly taky, i kdyz ne tak elegantne. Muzete sice treba pres js nastavit cookie, tu na serveru detekovat, ale co kdyz si admin vypne js az pak? Vy predpokladate, ze je zapnuty a cela aplikace je v troskach. Takze - tam, kde ajax na pozadi stranky muze stahnout nejaka data ze serveru proste musite udelat klasicky formular v jednotlivych krocich - vyplnit cast dat, odeslat, pockat na data ze serveru, vyplnit dalsi cast formulare atd. Leo
Leo
Profil
"takže pokud nemá JS, tak se nebude moci přihlásit"

Eee, k cemu je potreba ajax na prihlaseni? Leo
Perry
Profil
Leo

Na přihlášení ne... ale potom se použije v admin sekci, tak nemá cenu se logovat, když není povolený a lepší je upozornit a nepřihlásit se.

Problém je, ze bez toho vypnutého JS (a následně nefunkčního AJAXu), by to bylo hrozně nepřehledné a zbytečné to dělat... to je lepší právě ten test a když JS nebude, tak ho přesměruju v PHPku na nějakou error stránku a má smůlu... rozhodně lehčí, než to dělat 2x kvůli cca. 2% lidí (bohužel, pár lidí, co to vypínají osobně znám ... a mě se dokonce diví, že JS mám povolené)
Leo
Profil
V tom pripadku bych proste na prihlasovaci strance javascriptem vygeneroval ve formulari dalsi, skryty input (type="hidden"), a v PHP skriptu, ktery zpracovava udaje z prihlasovaciho formulare testoval, jestli z inputu prisla data. Leo
Chamurappi
Profil
Reaguji na Lea:
+ rovnou otestoval, jestli prohlížeč podporuje XMLHttpRequest.

Reaguji na Perryho:
Mohl jsi od základu psát administraci tak, aby fungovala i bez JS, ne?
Aesir
Profil
Perry:
rozhodně lehčí, než to dělat 2x kvůli cca. 2% lidí
Proč něco dělat dvakrát? Pouze se na základě typu requestu rozhodnete jak vrátíte odpověď. Pokud se bude jednat o request javascriptem (viz Chamurappi a XMLHttpRequest), vrátíte jako plain text/json/... Pokud se bude jednat o normální http request, tak normálně flushnete obsah do šablony. Nic neděláte dvakrát. Navíc na to stačí jedna kontrola globálně pro celou administraci pro každý request.
Mastodont
Profil
Perry
Už jsme to tu řešili:
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=64 654

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0