[ ducker @ 18.04.2004. 19:18 ] @
Pozdrav ljudi, imam problem:
Kako da procitam koji sadrzaj browser zeli da primi? Mislim, prvenstveno, na razlike izmedju HTML, WML i plaintext browsera.
Da pojasnim, zelim da korisnik ode na adresu www.domen.com, pa da ako ide sa mobilnog, dobije WML, ako ide sa PCa dobije HTML, i sl.

Vidim da ES to ima reseno, ali ne kapiram kako. Gledao sam phpinfo(), ali nigde ne vidim sta browser trazi. Jel' postoji neka skripta koja to radi, ili neka lista USER_AGENT-a koju treba da skinem pa da po njoj gledam da li da saljem WML ili HTML?
[ -zombie- @ 18.04.2004. 19:50 ] @
loše si gledao phpinfo(). imaš $_SERVER['HTTP_ACCEPT'] koji recimo za mozillu izgleda ovako:

text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8, video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1

ako te zanimaju detalji šta znače ovi q= koeficijenti, pogledaj RFC za HTTP/1.0 http://ftp.ics.uci.edu/pub/ietf/http/rfc1945.html.

mada, verujem da je dovoljno da proveriš da li se string wml nalazi u ovom hederu ili ne..
[ Dejan Topalovic @ 18.04.2004. 20:55 ] @
Browser šalje serveru specifične header-e, na osnovu kojih ti možeš odrediti koji output da pošalješ.
Kao što je već -zombie- naveo, ja bih samo dodao još jedan link
http://asg.web.cmu.edu/rfc/rfc2068.html
konkretno poglavlje 14 Header Field Definitions.
[ ducker @ 19.04.2004. 02:56 ] @
Tomice,
meni moj IE6@XP za HTTP_ACCEPT prikazuje:
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*

Tu me je bunilo zasto nema text/html ili sl. pa sam se zato pitao kako to... :-)

Klondike WAP browser mi sasvim kulturno javi wap.wml.

Znaci, provera ima li 'wml' stringa? Ajd, probat' cemo... :-)

Hvala svima, skinuo sam RFC-ove, u listi za citanje su.
[ broker @ 19.04.2004. 16:57 ] @
Jedna napomenica: iako na prvi pogled izgleda kao zanimljivo resenje mislim da, uopste uzev, to sto si zamislio nije dobro.

WEB je takav medijum da pretpostavlja interaktivnost, a pre svega mogucnost posetiocu da bira sta ce da gleda. Uobicajeno da je se wap verzija sajta nalazi na razlicitoj adresi koja sama po sebi naznacava da se radi o wap sadrzaju. Iako je sada ocigledno da citac obavestava sjt o tome sta moze da prikaze, nije tesko zamisliti citace koji umeju da prikazu i html i wap sadrzaj zavisno sta im se ponudi a tad ce tvoja aplikacija biti problem.

Ovako kako si namerio da uradis, kada nekome das adresu on nece znati da moze da je pogleda wap citacem osim ako mu to posebno ne naglasis. To znaci da ce korisnik biti zbunjen informacijom i u stvari nece ni koristiti wap verziju sajta, jer mu nece biti jasno da ona uopste postoji a on ocekuje da na takvoj adresi bude klasican html.

Logika kojom se vodi dobar sajt je da je on ocigledan i jasan, a koncept koji si zamislio je u suprotnosti sa tom logikom.
[ -zombie- @ 21.04.2004. 07:25 ] @
e svakakve gluposti ću još da čujem ovde..

prvo, nije to "njegova zamisao", nego čovek lepo planira da odradi detekciju na najbolji mogući, tj preporučeni način, a ti ga još odvraćaš.. wtf?!?

content-negotiation, tj odabir jedne od dostupnih verzija istog dokumenta (što osim formata uključuje i jezike) je jedna od osnovnih načela na kojima počiva internet svih ovih godina (ko je skoro sa validno-podešenim browserom posetio http://office.microsoft.com). ti standardi su projektovani (od strane ljudi pametnijih od nas ovde) da odgovore upravo na ovakve probleme.

čak ni klijenti koji mogu da interpretiraju više različitih formata nisu problem, jer oni to lepo oglašavaju baš ovim Accept HTTP zaglavljem, i lako se može zaključiti koji format oni preferiraju (to su oni "čudni brojevi" posle q=). pa čak i da ne objave koji preferiraju, uvek je logično poslati najbogatiji format koji klijent podržava (naravno, u slučaju HTMLa i WMLa je to HTML).

znači tehnologija je tu, i to već dugi niz godina, samo se treba malo potruditi i saznati.

i btw, baš me zanima kako je po tebi "očigleno i jasno" da kada korisnik iz wap browsera dođe na sajt koji ima i wml verziju (na drugoj adresi) ne dobije ništa, tj grešku. gde je tu logika?!?
[ broker @ 21.04.2004. 16:01 ] @
Logika je da, ako neko u casopisu vidi adresu www.nekidomen.com, on ce pretpostaviti da se radi o HTML sajtu i nece mu ni na kraj pameti biti da tu ima i wap verzija, tako da ako ima samo wap citac nece se ni potruditi da ode na sajt. Medjutim, ako je data adresa wap.nekidomen.com, korisniku ce odmah biti jasno da tamo moze da vidi wap sadrzaj pa ce ako ima samo wap citac otici i da ga vidi.

Logika je da cak i ako korisnik sa wap citacem dodje na sajt www.nekidomen.com, da bude preusmeren na adresu wap.nekidomen.com makar i da je to samo alias, tako da dobije odgovarajuci sadrzaj ali mu je i jasno da se umesala automatika.

Logika je recimo i to da korisnik moze sam na sajtu da bira jezik a ne da sajt sam odlucujekoji ce jezik da koristi na osnovu podesavanaj koja dobije od web citaca.

Logika je i da sajt ne moze da na osnovu IP adrese zakljuci iz koje je zemlje korisnik i da na osnovu toga prilagodjava sadrzaj dokumenata.

Odavno je poznata jedna izreka, nastala bas u IT svetu: napravi program koji mogu idioti da koriste pa ce ga samo idioti i koristiti. Sustina weba je da korisnik kontrolise sta hoce, kada hoce i kako hoce da vidi. Onog momenta kada korisnik izgubi kontrolu, i nije mu jasno sta se desava na sajtu, to jest zbunjen je, sajt gubi tog korisnika. Automatika moze da mu u mnogome pomogne ali ne treba preterivati.

Prepoznavanje podrzanog sadrzaja od strane citaca donekle ima smisla sve dok ne postavlja preterane uslove pred korisnika. Recimo, prepoznavanje tipa i verzije citaca pa mozda i OS-a u nekoj meri moze da bude korisno jer aplikacija moze da prilagodi sadrzaj takvom softveru i to korisnika ne dotice. Ali menjati recimo jezik samo zato sto korisnik ima podesen parametar u OS-u koji njemu sluzi za nesto sasvim drugo ili terati korsinika da podesava paramere citaca ili OS-a samo zato da bi na zeljeni nacin video sadrzaj sajta je besmisleno i to isto onoliko koliko je besmisleno praviti sajt koji podrzava samo odredjenu verziju citaca ili OS-a.

Pozivas se na Microsoft koji je upravo poznat po tome sto preteranom automatikom maltretira korisnike ili ih prisiljava da rade nesto kako im ne odgovara da bi postigli ono sto im je potrebno.
[ noviKorisnik @ 21.04.2004. 23:03 ] @
Ne znam, izuzetno zbunjuješ ovim stavovima.
Citat:
Logika je recimo i to da korisnik moze sam na sajtu da bira jezik a ne da sajt sam odlucujekoji ce jezik da koristi na osnovu podesavanaj koja dobije od web citaca.

Logika je i da sajt ne moze da na osnovu IP adrese zakljuci iz koje je zemlje korisnik i da na osnovu toga prilagodjava sadrzaj dokumenata.

Slažem se da korisnik treba da ima mogućnost izbora jezika na sajtu. Prateći "logiku" nije mi jasno šta korisnik inicijalno dobija po dolasku na sajt - da li je to stranica "odaberite jezik" ili postoji default jezik na kom se prikazuje sadržaj dok korisnik ne skonta da može nešto da čita i po srpski namesto engleskog?
[ -zombie- @ 22.04.2004. 04:40 ] @
Citat:
broker:
Pozivas se na Microsoft koji je upravo poznat po tome sto preteranom automatikom maltretira korisnike ili ih prisiljava da rade nesto kako im ne odgovara da bi postigli ono sto im je potrebno.


naravno da je korisniku kasnije omogućeno da promeni jezik i slično, samo mu je default onaj koji je korisnik odabrao u svom browseru. to podešavanje za to i služi!

office.microsoft.com sam iskoristio samo zato što je najsvežiji primer, pa mi je bio u sećanju. istu stvar rade mnogi veliki (tj gotovo svi najveći) sajtovi. problem je samo što mali broj sajtova ima prevod na srpski, pa mi to retko primetimo. promenite preferirani jezik na nemački recimo i posetite sajtove kao što su google, yahoo, hotmail..

google čak radi i na srpskom (osim ako već nemate pref. kuki u kome je sačuvano da želite engleski jezik. ako imate, izbrišite kuki, i podesite u browseru srpski kao prvi jezik, pa probajte).

dakle, pokušavaš da dokažeš da si ti u pravu, a da kompanije koje stoje iza najvećih sajtova nemaju pojma?!?

// zaboravih da je sa tobom besmisleno diskutovati.. ne znam ni zašto se trudim..
[ Goran Rakić @ 22.04.2004. 17:08 ] @
Podržavam mišljenje da lokacija treba da se automatski što više prilagodi korisniku. I to ne samo po jeziku i sl, već po sadržaju (ko je pomenuo Amazon?).

Ipak, korisnik mora imati i kontrolu, tj. nikada ga ne treba dovesti u situaciju da ne može da kontroliše kroz interakciju sa samom lokacijom šta će mu se prikazati od sadržaja. Pomenuti Office portal postaje naupotrebljiv na srpskom, jer ne dozvoljava prikaz engleskih šablona. Probajte, na kraju sam morao u browser-u da menjam jezik...
[ Dag @ 03.05.2004. 13:06 ] @
Eh broker... logika - u suštini treba uvek da se čita kao "logika" jer onaj koji nikada nije izučavao logiku (i/ili filozofiju) jako teško sa time izlazi na kraj.

Malo više bi trebalo da obraćaš pažnju na to što zombie piše... sve što se tiče adrese (URL) ti pogrešno shvataš. Za tebe je logika da adresa bude ovakvog tipa: Jovana Cvijića, 8, dvosobni stan, kupatilo levo, vc desno a to je pogrešno. URL treba (i mora) da bude jedan za sve UA. Ostalo sve treba da radi inteligentno (logično) naštelovan server (a danas je to najveći problem: jadan će nam biti ovaj svet ako nam logiku diktiraju polupismeni programisti).

Google: to je tragedija a ne logika. Rešio neki glupander tamo da ako ja iz Rusije tražim google.com da će za mene najbolje da bude da mi da stranicu google.ru (re: jezik). Strašna glupost i narušenje svih principa i filozofije URL kao unikalne adrese. Ja sam aborigin koji je doputovao u Moskvu na mesec dana i hoću da gledam google na engleskom bre... ili sam prevodilac... ili linguist... daj mi na toj prvoj stranici "choose your language" i super će biti bre. I nigde mi to nemoj da pamtiš ili pišeš jer danas hoću da gledam na turskom, sutra na niškom, prekosutra na latinici, nakosutra na francuskom... WWW se zove... a geto-tipno razmišljanje...
[ bluesman @ 04.05.2004. 15:14 ] @
Citat:
Dag:
Google: to je tragedija a ne logika. Rešio neki glupander tamo da ako ja iz Rusije tražim google.com da će za mene najbolje da bude da mi da stranicu google.ru (re: jezik).

Da, oni su poznati po tome što su jako glupi ljudi.
Citat:
Strašna glupost i narušenje svih principa i filozofije URL kao unikalne adrese. Ja sam aborigin koji je doputovao u Moskvu na mesec dana i hoću da gledam google na engleskom bre...

Ti si aboridžin u Moskvi i jos koliko Vas ima takvih tamo? Ima vas sigurno više nego rusa...

Koliko si se nalupao to je strašno. Prosto ne mogu ni da komentarišem.
[ ducker @ 24.05.2004. 09:54 ] @
Znam da je proslo dosta vremena, ali nikad nije naodmet osveziti temu, cisto zbog buducih generacija... ;-)

Elem, evo koda koji sam na kraju sklepao... Ima li neko primedbu na ovo? Mozda nesto na sta nisam obratio paznju?

Inace, onaj q= uopste nisam skontao... :-(

Code:

// HTML/TXT/WML/XML SWITHCER
function get_requested_output() {
    // determine the position of all major types
    $httpa = ' ' . strtoupper($_SERVER['HTTP_ACCEPT']);
    $p['html'] = strpos($httpa, 'TEXT/HTML');
    $p['xml'] = strpos($httpa, '/XML');
    $p['wml'] = strpos($httpa, '/VND.WAP.WML');
    $p['txt'] = strpos($httpa, 'TEXT/PLAIN');
    $p['all'] = strpos($httpa, '*/*');
    // sum all the values in array, so we can subtract later
    $p_sum = array_sum($p);
    // first extract XML for browsers with only XML support (client-side programs)
    if ( $p['xml'] and $p['xml'] == $p_sum ) return 'xml';
    // now WAP browsers
    if ( $p['wml']) {
        // phones with HTML-enabled browsers
        if ( $p['html'] or $p['all'] ) {
            // set a flag that we need a mobile phones parser (trim HTML to 8kb max.)
            $_SESSION['run_parsers'][] = 'wml';
            // but return HTML as default output
            return 'html';
        }
        // only WML browsers
        return 'wml';
    }
    // don't forget fossils with plaintext browsers
    if ( $p['txt'] and !$p['html'] and !$p['all'] ) return 'txt';
    // and eventually, HTML
    return 'html';
}

$covek_hoce_format = get_requested_output();

[ del-boy @ 17.01.2005. 22:37 ] @
Malo ti ne radi dobro kod. Ja probao da pristupim sa samsungom X100 i on javi da traži HTML!
[ afwt @ 18.01.2005. 12:53 ] @
Gde ti puca? Kako ti se prijavljuje browser telefona? daj, posalji malo info-a, da mozemo da patch-ujemo... ;-)
[ afwt @ 18.01.2005. 12:57 ] @
aha... sad sam ti video temu 89898...
napisi sta ti vraca $_SERVER['HTTP_ACCEPT']
naravno... ;-)
[ del-boy @ 19.01.2005. 10:19 ] @
Evo šta vraća moj browser sa mobilnog:

Code:
application/vnd.phonecom.mmc-wbxml, application/octet-stream, 
application/vnd.openwave.pp, image/bmp, image/x-up-wpng, application/smil, 
audio/imelody, audio/midi, application/vnd.smaf, 
application/vnd.samsung.specific-image, text/vnd.sun.j2me.app-descriptor, 
application/java-archive, application/java, 
application/vnd.uplanet.bearer-choice-wbxml, application/vnd.wap.wmlc, 
application/vnd.wap.wmlscriptc, application/vnd.wap.multipart.related, 
application/vnd.wap.multipart.mixed, text/plain, text/css, image/gif, image/jpeg, 
image/png, image/vnd.wap.wbmp, application/vnd.wap.sic, application/vnd.wap.slc, 
application/vnd.wap.coc, application/vnd.wap.xhtml+xml, application/xhtml+xml, 
text/html, application/vnd.wap.mms-message, text/vnd.wap.wml, text/vnd.wap.si, 
text/vnd.wap.sl, text/vnd.wap.co, text/vnd.wap.wmlscript, multipart/related, 
multipart/mixed


Lepo piše da browser podržava wml i wmlscript, ali on mi vraća html!
Znam, sad sam video da skripta vraća html ako browser podržava i jedno i drugo, ali ako mu pošaljem html biće mnogo podataka pa neće biti pregledno. Što me opet vraća na moje pitanje "Kako da razlikujem sa čega korisnik dolazi?"

Ako stavim da ukoliko browser podržava oba formata php vraća wml, u tom slučaju će npr. i Opera da traži wml, a to bih hteo da izbegnem!

Neko rešenje?
[ afwt @ 08.02.2005. 12:28 ] @
Ne kapiram u cemu ti je problem.
Tebi je mobilni uredno prijavio da prima i HTML, time sto je poslao 'text/html'. Zato ti je taj kod i podesio HTML za default, a postavio ti je i flag
$_SESSION['run_parsers'][] = 'wml';
da skripta moze kasnije da zna da treba da se igra (parsira) sa HTMLom.

P.S. Izvini zbog kasnog odgovora, retko pregledam svoje stare teme...