rozlišení obrazovky v PHP
Stáhl jsem si nějaký script na zjištění rozlišení v PHP.
http://regretless.com/scripts/basics/get_screen_wid th_height.php
Funguje to tak, že na klientově počítači se zjistí rozlišení pomocí javascriptu a to se odešle na server. PHP si to vybere z cookies.
Všechno je v pořádku, ale pokud klient má vypnutý javascript, nebo cookies, nebo jde přes anonymní proxy, tak se tento script stále volá dokola (zacyklí se to).
Potřeboval bych jednu z těchto dvou možností:
1. Aby se to necyklilo (nejlépe).
2. Pokud nemá zapnutý javascript, či cookies, či to jde přes nějakou anomynizační proxy, aby se to neprovedlo.
Nevím, jestli jsem to srozumitelně napsal. Prostě potřebuju zjistit rozlišení a pokud to nějakým způsobem nejde, aby to nic neudělalo.
Pokud má klient vypnutý JS, tak jaké hodnoty rozlišení se předají PHP? Je tam nějaké otestování rozsahu? Který skript se ti zacyklí? Ten v PHP?
Zacyklí se mi tento script (v php):
Prostě potřebuju u uživatele provést:
odeslat na server bez nutnosti spolupráce s uživatelem. Uživatel aby pak uviděl výsledek na obrazovce. A taky, aby si myslel, že to bylo na první pokus (nemusel dělat reload stránky, nebo něco podobnýho).
Zkouším to přes cookies, ale to asi nebude to nejlepší řešení.
Ak to chceš len zobraziť, tak si to nemusíš ani posielať na server. Najjednoduchšie je asi použiť document.write počas nahrávania stránky (alebo pridať ten text po nahratí stránky cez DOM).
Ak to chceš poslať na server a nepotrebuješ odozvu, stačí napr.:
Tu môže byť problém kešovanie, pretože ak nebude skript.php posielať správne hlavičky, tak sa môže stiahnuť z cache. Ak sa Ti nechce posielať hlavičky, dá sa to jednoducho obísť tak, že pridáš do url ešte jednu premennú vždy s jedinečnou hodnotou (napr. aktuálny čas v sekundách).
Ak potrebuješ aj nejakú odozvu zo servera, tak potom chceš použiť AJAX, ale myslím, že v tomto prípade ho nepotrebuješ.
No ukládat rozlišení do cookies není úplně nejmoudřejší.
Protože jestli jsem to pochopil správně tak prohlížeč stejně musí nejprve toto nastavení odeslat na server a pokud náhodou uživatel rozlišení změní tak bude mít stránky neoptimalizované.
Ale to jsem se nedočetl .
Takže v takovém případě už je v podstatě jedno jestli to rozlišení bude vždy při zavolání stránky stahovat čerstvě z prohlížeče.
Více to jako webový laik komentovat netroufám.
Ještě ohledně toho načtení nadvakrát.
Není problém založit proměnnou v nastartované session a počítat kolikrát byla stránka načtena.
Lze tak třeba zjistit, že stránka byla načtena již podruhé a stále nebyl schopen prohlížeč odeslat data o rozlišení atd....
Já bych to udělal tak, že bych si dal do stránky skryté počítadlo z TopListu a na to, jaké, kdo měl rozlišení, barevnou hloubku, prohlížeč, odkud přišel, jakou značku kafe pije, bych se podíval tam.
Tak si s tím od včerejška hraju.
Mám to udělaný tak, že mám script index.php ve kterém mám
Nejprve jsem zkoušel na klientské straně zavést proměnou x (byla vytvořena v hlavním scriptu index.php), kterou jsem inkrementoval v get_resolution.php a tím jsem zjistil kolikrát byl reloadnut. Skutečně se to nezacyklí, ale bohužel zůstane to viset na tom scriptu get_resolution.php. Nepředá se řízení zpět do index.php. Vůbec nechápu proč, neboť jej neukončuju, pouze pokud je splněná podmínka, že to proběhlo víckrát, tak se přestane cookies používat.
Zkusil jsem i ten nápad z session, ale nakonec se ukázalo, že to vede k obdobným výsledkům.
Zkoušel jsem i nejdřív testovat, zda počítač má zapnutý cookies, ale abych to zjistil, tak zase musím stránku reloadnout. Takže jsem tam, kde jsem byl předtím.
Nakonec ztrácím chuť použít na to cookies. Asi to není vůbec dobré řešení.
Má někdo nějaký jiný nápad, jak to dostat na server. Mělo by to jít pomocí obrázku, ale nevím jak rozlišení monitoru propašovat v javascriptu do url na klientské straně. Pak bych si to měl přečíst na serveru pomocí $_GET. Jestli to jde. Hledám nějaký příklad (hotový jednoduchý script), ale nemůžu nic najít.
Tak bys tady měl ten skript zveřejnit.
To čeho chceš dosáhnout je běžně praktikovaná rutina a problém, který popisuješ může způsobovat jen programátorská nedomyšlenost = krpa.
Asi by jsi měl uvést přesně skripty, které se údajně zacyklí.
Provádění skriptu PHP lze ukončit příkazem exit; nebo die();
Pokud i přesto je skrip volán stále dokola tak už to může být snad jen vyloženě na volání na klientské straně.
Zacyklí se to na klientské straně a je to přesně ten script, co jsem zveřejnil nahoře.
Jinak jsem to vyřešil pomocí javascriptu na klientské straně:
A pomocí $_GET na serverové straně:
A je to!
A hlavně je to bez cookies