Autor Zpráva
richard
Profil *
Ahoj, jen by mě zajímalo k čemu je $_SERVER['REMOTE_ADDR'] , když to jen zjistí ip adresu uživatele, který čte daný skript. Ale dnes už má každý doma router a ten mu přidělí ip v obvykle stejném rozsahu, bud 192.168.0.... , nebo 10.0.0..... Má tahle proměnná vůbec nějaký smyl ?
Alphard
Profil
„Venku“ uvidíte vnější IP, kterou klientovi přidělí poskytovatel připojení. Lokální adresy za routerem neuvidíte, všichni uživatelé za routerem budou mít z vašeho pohledu stejnou adresu. To je nevýhoda třeba u anket.
Je možné skrývat se za různé proxy servery, někdo má mobilní připojení a jinou IP každou chvíli, jindy zase sdílí jednu IP půlka paneláku... ale to je dlouhodobý stav.

IP se může stále hodit u anket, statistik přístupů, v boji se spammery, ..., ale je nutné myslet na nedostatky.
mimochodec
Profil
Ta IP, co píšeš, platí v lokální síti. Směrem ke zbytku internetu má ten router IP jinou, přidělenou providerem. Ta je buď neměnná (pokud má uživatel důvod a zaplatí si za to), nebo proměnlivá (mnohem častěji). Jestli má smysl s ní pracovat, to záleží na účelu. Někdy ne, někdy ano.
richard
Profil *
Ale ne všichni poskytovatelé dávají veřejnou ip? Čili, je možné vůbec pomocí $_SERVER['REMOTE_ADDR'] určit polohu země, abych mohl zvolit vhodný jazyk pro mutaci?
Alphard
Profil
Jak nástřel to je možné. Lepší je vyjít z toho, co vám v requestu pošle prohlížeč. A určitě nechat uživatelům možnost to změnit.
Joker
Profil
richard:
je možné vůbec pomocí $_SERVER['REMOTE_ADDR'] určit polohu země, abych mohl zvolit vhodný jazyk pro mutaci?
Teoreticky s nějakou nepřesností ano, ale lepší bude použít hlavičku Accept-Language, ta přímo říká, jaký jazyk(y) by prohlížeč chtěl.
richard
Profil *
Prohlížeš si sám řekne jaký jazyk? Co když jsem z ČR a mám stáhnutou operu z anglického serveru? Můžeš mi to prosím tě ukázat v kódu, to zpracování Accept-Language. Ještě jsem o tom neslyšel a nikde jsem nic konkretního nevyčetl.
Jan Tvrdík
Profil
richard:
Můžeš mi to prosím tě ukázat v kódu, to zpracování Accept-Language
Viz např. metoda detectLanguage v Nette.
Joker
Profil
richard:
Co když jsem z ČR a mám stáhnutou operu z anglického serveru?
Přece nezáleží odkud je stažený prohlížeč, ale jaký je v něm nastavený preferovaný jazyk (v Opeře: Nastavení, na záložce Obecné dole se nastavuje jazyk prohlížeče a po kliknutí na tlačítko Podrobnosti se dají nastavit upřednostňované jazyky webových stránek).
richard
Profil *
Jo, máš pravdu. Takže stačí jen použít v php funkci detectLanguage, tá si sama zpracuje accept-language vyhodí jazyk, který bych měl nastavit.
Můžeš mi ukázat jak má vypadat ta hlavička s accept-language?


nějak takhle

Accept-Language = "Accept-Language" ":"
1#( language-range [ ";" "q" "=" qvalue ] )
language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )
juriad
Profil
Podle specifikace takto:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4
O tu hlavičku se stará prohlížeč, ty si jen někde v nastavení naklikáš preferované jazyky.
richard
Profil *
No dobře, o hlavičku se postará prohlížeč, uživatel si zvolí jazyky, ale pak to musím nějak zpracovat v kódu, aby se přepsal jazyk z anglického, třeba na španělský, není to tak?
juriad
Profil
Ano, třeba ta odkázaná funkce v [#8] ti vrátí nejvhodnější jazyk. Pak je na tobě jak s touto informací naložíš.
Překlad můžeš řešit bambilionem způsobů. Záleží na tom, jak je web navržený a jaké technologie používá.
richard
Profil *
ok, dík.
A co vložím do parametru detectLanguage(array $langs) $langs ?
juriad
Profil
Seznam jazyků, které tvá stránka podporuje. Spíš se tvou funkcí inspiruj, řádek 321 budeš muset změnit.
richard
Profil *
Změnit na co? Já měl za to, že to je ten stěžejní řádek celé funkce.
aDAm
Profil
Jen tak na okraj pokud nepoužíváš nette tak ti samozřejmě ta metoda detectLanguage zavolat nepůjde neb ji tvoje appka nebude zřejmě znát ;) Tohle máš brát pouze a jen jako ukázku jak by se to dalo řešit.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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