Kenelläkään mitään linkkiä mistä löytäisi täydellisen ympäristömuuttuja listan PHP:lle? PHP.nettiä selaamalla en oikein päässyt puusta enkä pitkään...
Tai sitten jos joku osaa kertoa suoraan kuinka voisin poimia käyttäjän resoluution ja tallentaa sen tilastoihin. Kun palvelun kehittämisen kannalta olisi hyvä tietää, että mitä käyttäjät käyttävät ja kuinka suunnitella palvelun ulkoasua (erittäin hyödyllinen tieto muuten)...
Wizard kirjoitti:
Kenelläkään mitään linkkiä mistä löytäisi täydellisen ympäristömuuttuja listan PHP:lle?
Tee seuraavanlainen skripti ja aja se:
<?php phpinfo(); ?>
Wizard kirjoitti:
Tai sitten jos joku osaa kertoa suoraan kuinka voisin poimia käyttäjän resoluution ja tallentaa sen tilastoihin.
PHP:llä et mitenkään. Ei tuollaista tietoa mistään ympäristömuuttujista löydy.
Joissain tilastoissa näkee noita resoluutiostatseja, ne on kerätty JavaScriptiä hyväksikäyttäen.
BTW, mitä sinä näytön resoluutiolla? Eikö selainikkunan koko olis paljo hyödyllisempi tieto?
Wizard kirjoitti:
Kun palvelun kehittämisen kannalta olisi hyvä tietää, että mitä käyttäjät käyttävät ja kuinka suunnitella palvelun ulkoasua (erittäin hyödyllinen tieto muuten)...
Suunnittele se ulkoasu niin, että se skaalautuu kaikkiin selainikkunan kokoihin, niin ei tarvitse pähkäillä tuollaisia joutavuuksia.
Käyttäjän resoluutio pitää poimia JavaScriptin avulla (AFAIK), tarvitsemasi muuttujat ovat screen.width ja screen.height - eli siis vaikka näin:
document.write("<img src='resoluutiot.php?"+screen.width+"x"+screen.height+"' width=1 height=1>");
ja resoluutiot.php:ssä sitten tutkitaan $_SERVER["QUERY_STRING"]-muuttujaa.
Blaze kirjoitti:
BTW, mitä sinä näytön resoluutiolla? Eikö selainikkunan koko olis paljo hyödyllisempi tieto?
Resoluutiosta voidaan päätellä helposti kuinka suuri se selainikkuna on. Samalla saadaan tilastotietoa käyttäjien resoluutioista.
Edit: Entä jos linkki aukeaa uuteen ikkunaan, ja selainikkunan koko on 640x480 ? Sitten l33tweppimästeri luulee että 90% käyttäjistä käyttää 640x480 resoluutiota.
T.M. kirjoitti:
Resoluutiosta voidaan päätellä helposti kuinka suuri se selainikkuna on.
Niinkö? Resoluutioni on 1280x1024, kuinka iso selainikkunani on?
Resoluutiosta voidaan päätellä vain ja ainoastaan selainikkunan järkevä maksimikoko.
Resoluutio on se mitä kaivataan, ei mikään muu. Selainikkunan koko on taas tässä tapauksessa täysin turha tieto.
Skaalautuvuus kaikkiin selainikkunan kokoihin ei taas ole millään tavalla järkevää tässä tapauksessa, koska kyseessä on täysin informatiivinen palvelu. Minua kiinnostaa se, että kuinka monella käyttäjällä on MAHDOLLISUUS saada leveyssuunnassa kaikki tieto kerralla näkyviin. Ja sen kertoo resoluutio. Nyt siis haetaan sitä maksimaalista käyttökelpoista leveyttä/korkeutta, eikä sitä mikä on käytössä selaimissa. Kaksi eri asiaa.
PHPINFO taas ei kerro kaikkea sitä mitä voisi kaivata eikä php.net myöskään auttanut. Toisaalta ihmettelen sitä, että php:ssä ei ole suoraa ympäristömuuttujaa kyseiselle, koska se on ylläpidon kannalta joskus ihan kätevä tieto.
Ps. kiinnostava yksityiskohta on muuten se, että kun itselläni on käytössä 2 monitoria yhdessä koneessa ja toisessa on 1600*1200 resoluutio ja toisessa 1280*1024 (eri kuva kummassakin), niin kaikki JavaScript sätökset antaa AINA resoluutioksi 1600*1200 vaikka käyttäisitkin sivua 1280*1024 tilassa. Hyvin mielenkiintoista siis...
Viikon kysymys vko. 31 v. 2003 kirjoitti:
Mitä resoluutiota käytät? 800x600 tai pienempi 12.7 % 1024x768 48.4 % 1280x1024 30.7 % 1600x1200 tai suurempi 8.1 % Vastauksia: 283
Wizard kirjoitti:
Skaalautuvuus kaikkiin selainikkunan kokoihin ei taas ole millään tavalla järkevää tässä tapauksessa
Skaalautuvuus on AINA järkevää. Ei ole mitään syytä tehdä kiinteäleveyksisiä sivuja.
Wizard kirjoitti:
koska kyseessä on täysin informatiivinen palvelu.
Suomeksi? "Mainossivu, jolla kukaan täysijärkinen kuitenkaan käy"?
Wizard kirjoitti:
Toisaalta ihmettelen sitä, että php:ssä ei ole suoraa ympäristömuuttujaa kyseiselle
Koska PHP ei tiedä sitä, kun selain ei sitä erikseen missään HTTP-headereissa lähetä.
Blaze kirjoitti:
Skaalautuvuus on AINA järkevää. Ei ole mitään syytä tehdä kiinteäleveyksisiä sivuja.
Ei ole. Kun luetaan tietoa tietokannoista ja halutaan mahduttaa yhdellä kyselyllä mahdollisimman paljon tietoa yhdelle sivulle, niin suorituskyvyn kannalta kyseessä on paras vaihtoehto. Mitä enemmän saat hakukyselyssä suoraan ruudulle, niin sitä paremmin käyttäjät löytävät heti etsimänsä ja sitä vähemmän rasitetaan tietokantoja turhilla kyselyillä. Hakuominaisuuksilla on tietysti paljon merkitystä, mutta niin on tuloslistoillakin.
Kotisivut ja mainossivut sitten erikseen.
Blaze kirjoitti:
Suomeksi? "Mainossivu, jolla kukaan täysijärkinen kuitenkaan käy"?
Pieni harrastesivusto joka pohjautuu tietokantoihin ja josta ladataan 800.000 sivua kuukaudessa. Rivejä tietokannassa muutama miljoona. Eikä ole muuten yhtään mainosta. ;P
Blaze kirjoitti:
Koska PHP ei tiedä sitä, kun selain ei sitä erikseen missään HTTP-headereissa lähetä.
Olisi syytä ja ehkä ihan asiallistakin.
Wizard kirjoitti:
Olisi syytä ja ehkä ihan asiallistakin.
Onko mielestäsi siis hyvä asia, jos selain lähettää koneesi teknisiä tietoja omatoimisesti jokaiselle palvelimelle jolta lataat sivuja?
Wizard kirjoitti:
Ei ole. Kun luetaan tietoa tietokannoista ja halutaan mahduttaa yhdellä kyselyllä mahdollisimman paljon tietoa yhdelle sivulle, niin suorituskyvyn kannalta kyseessä on paras vaihtoehto. Mitä enemmän saat hakukyselyssä suoraan ruudulle, niin sitä paremmin käyttäjät löytävät heti etsimänsä
Hyvä poliitikko susta tulis, mutta en minä näe, mikä tuossa vaatii kiinteän leveyden sivulle. Jos sitä dataa tulee paljon, niin tunkee sitten allekain. Selain kyllä hoitaa rivityksen, jos se on tekstimuotoista.
Wizard kirjoitti:
Blaze kirjoitti:
Koska PHP ei tiedä sitä, kun selain ei sitä erikseen missään HTTP-headereissa lähetä.
Olisi syytä ja ehkä ihan asiallistakin.
Sopii mennä ehottamaan HTTP-protokollaa ylläpitävälle taholle ;)
Edit: tagitus bugitus
Metabolix kirjoitti:
Onko mielestäsi siis hyvä asia, jos selain lähettää koneesi teknisiä tietoja omatoimisesti jokaiselle palvelimelle jolta lataat sivuja?
Tiettyjä tietoja kyllä. Resoluutio ei kyllä ole kovin tekninen tieto mielestäni. Rajoittaisin kyllä puhtaasti teknisten tietojen lähettämisen, mutta käyttöjärjestelmän tieto (XP, W2, MacOS...), resoluutio ja vastaavat tiedot voisi kyllä lähettää.
Mitä tulee taas sitten niihin koodinpätkiin joiden tarkoitus on vain tuottaa vahinkoa, niin niille ei voi koskaan mitään.
Kyllähän noita tietoja saa nytkin jo kerättyä ja miksi ei niitä lähetettäisi jo suoraan? Niillä ei kovin suurta merkitystä ole tietoturvan kannalta kuten esimerkkinä nyt resoluutio. Mitä merkitystä sillä on käyttäjän kannalta, että tietääkö joku ulkopuolinen hänen resoluutionsa vai ei?
Blaze kirjoitti:
Hyvä poliitikko susta tulis, mutta en minä näe, mikä tuossa vaatii kiinteän leveyden sivulle. Jos sitä dataa tulee paljon, niin tunkee sitten allekain. Selain kyllä hoitaa rivityksen, jos se on tekstimuotoista.
Voisin lukea rivien välistä, että et ole kovin paljon ollut tekemisissä tietokantojen ja varsinkin suorituskyvyn kanssa.
Kuinka monta informatiivistä palvelua olet luonut jossa hakukysely voi tuottaa tulokseksi 5000 riviä tai enemmän? Oletko koskaan ajatellut sitten sitä, että kuinka paljon suorituskykyä vievät kaikki tietokantahaut ja vastaavat?
Toisaalta käyttäjätkin ovat laiskoja: se lopputulos pitäisi löytää mahdollisimman helpolla eli vaikka vähän väljemmät hakuehdot ja sitten voisi ruudulta yhdellä silmäyksellä katsoa, että tuo vastaa suunnilleen hakuehtoja. Voit kokeilla asiaa kun etsit vaikka itsellesi autoa tai asuntoa näistä nykyisistä hakukoneista.
Lisäksi jonkinlaisen STANDARDIN omaavat sivut ovat aina helpompaa luettavaa kuin ne missä hakutulos saattaa olla yhdellä tai kahdella rivillä ja jotkut vievät 4 riviä tilaa. Kyllä taulukot selventävät selvästi hakulistausten lukemista. Jos taulukoiden koko taas muuttuu sivun koon mukaan, niin 640*480 tilassa taulukko on hyvän näköinen, mutta iskepä sama sitten 1600*1200 tilaan. Voisin väittää, että tulos on hirveän näköistä.
Wizard kirjoitti:
Voisin lukea rivien välistä, että et ole kovin paljon ollut tekemisissä tietokantojen ja varsinkin suorituskyvyn kanssa.
No se pitää kyllä paikkansa, liekö siksi en pysty näkemään, miksi kiinteäleveyksiseen taulukkoon tulostettu data vaatisi tietokannalta vähemmän suorituskykyä, kuin vapaamittaiseen.
Sama datahan sieltä tulee? Kyse on vain, missä muodossa se esitetään.
Wizard kirjoitti:
Kyllä taulukot selventävät selvästi hakulistausten lukemista.
Riippuu tiesti datasta, mutta joo.
Wizard kirjoitti:
Jos taulukoiden koko taas muuttuu sivun koon mukaan, niin 640*480 tilassa taulukko on hyvän näköinen, mutta iskepä sama sitten 1600*1200 tilaan. Voisin väittää, että tulos on hirveän näköistä.
No joo, kauneus on katsojan silmässä.
Voisi olla fiksua myös karsia esitettävää dataa skaalauksen mukaan.
Eräs mielenkiintoinen ominaisuus PHP:ssä on get_browser().
Sillä saa jo aika paljon infoa suoraan ja tuosta melkein puuttuukin enää vain se resoluutio. ;P
Wizard kirjoitti:
Toisaalta ihmettelen sitä, että php:ssä ei ole suoraa ympäristömuuttujaa kyseiselle, koska se on ylläpidon kannalta joskus ihan kätevä tieto.
Varmaankaan sitä ei ole siinä ihan siksi että yleensä selaimet eivät lähetä sitä tietoa servulle :)
Edit: $_SERVER['HTTP_USER_AGENT'] -muuttujasta löytyy kyllä jotain tietoa yleensä.
tejeez kirjoitti:
Varmaankaan sitä ei ole siinä ihan siksi että yleensä selaimet eivät lähetä sitä tietoa servulle :)
Mjoo, mutta kuten sanoin, niin ihan hyvin voisi.
tejeez kirjoitti:
Edit: $_SERVER['HTTP_USER_AGENT'] -muuttujasta löytyy kyllä jotain tietoa yleensä.
Jota get_browser() hyödyntää sopivasti. Erittäin käytännöllinen ja käytännöstä palautettavat objektit sisältävät kaiken tarvittavan informaation.
Ja sitten kun vähän aikaa surffailin ja lueskelin muitakin juttuja, niin sattui silmään yksinkertainen hyvä scripti joka vastaa minun tarpeita kaikilta osin:
<?php if ( isset ($HTTP_COOKIE_VARS["users_resolution"] ) ) { $screen_res = $HTTP_COOKIE_VARS["users_resolution"]; } else { ?> <script language="javascript"> <!-- writeCookie(); function writeCookie() { var today = new Date(); var the_date = new Date("December 31, 2023"); var the_cookie_date = the_date.toGMTString(); var the_cookie = "users_resolution="+ screen.width +"x"+ screen.height; var the_cookie = the_cookie + ";expires=" + the_cookie_date; document.cookie=the_cookie } //--> </script> <?php $screen_res = $HTTP_COOKIE_VARS["users_resolution"]; } ?>
Yksinkertaisempia tapojakin varmasti on, mutta tuo on erittäin hyvin toimiva.
Aihe on jo aika vanha, joten et voi enää vastata siihen.