Autor | Zpráva | ||
---|---|---|---|
Axamith Profil |
#1 · Zasláno: 15. 1. 2011, 07:15:29 · Upravil/a: Axamith
Kdysi jsem si nechal napsat kód, který podle IP návštěvníka přesměrovával na dvě jazykové verze webu. Návštěvníci s CZ a SK IP byli filtrem ignorování a přesměroval jsem je pomocí meta tagu na cz verzi
url=czech/index.php a zbytek světa byl přesměrován filtrem na anglickou verzi. url=english//index.php Potřeboval bych to rozšířit o Polštinu, aby návštěvníci s polskou IP byli přesměrováni na polskou verzi. url=polish//index.php Tady je kompletní kód filtru pro cz/en verzi. <? session_start(); if($_GET['action']=="to_czech") { if(!session_is_registered("to_czech")) { sesion_register("to_czech"); } $_SESSION['to_czech']="true"; } $file=fopen("http://www.webyield.net/ip/index.php?ip=".$_SERVER['REMOTE_ADDR'],"r"); $data=fread($file,5000); fclose($file); if((!ereg("Czech Republic",$data) && !$_SESSION['to_czech'])and(!ereg("Slovakia",$data) && !$_SESSION['to_czech'])) { //false header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.designfoods.cz/english/"); header("Connection: close"); } ?> <!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <meta http-equiv="refresh" content="0;url=czech/index.php"> </body></html> Našel by se někdo, kdo by poradil s úpravou na Polštinu? Děkuji |
||
WertriK Profil |
#2 · Zasláno: 15. 1. 2011, 10:22:21
Já bych to tedy upravil trošku víc, nějak se mi to nelíbí.
session_start(); // podporovane jazyky, link, odkaz $langs["Poland"][] = "http://www.designfoods.cz/poland/"; $langs["Poland"][] = "to_polish"; $langs["Czech Republic"][] = "http://www.designfoods.cz/czech/"; $langs["Czech Republic"][] = "to_czech"; $langs["Slovakia"][] = "http://www.designfoods.cz/czech/"; $langs["Slovakia"][] = "to_slovakia"; if (!session_is_registered("lang")) { $file=fopen("http://www.webyield.net/ip/index.php?ip=".$_SERVER['REMOTE_ADDR'],"r"); $data=fread($file,5000); fclose($file); foreach($langs AS $lang=>$link) { if (ereg($lang,$data)) { $_SESSION["lang"] = true; header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$link[0]); exit(); } } } else { if (isSet($_GET["action"])) { foreach($langs AS $lang=>$value) { if ($_GET["action"] == $value[1]) { header("Location: ".$value[0]); exit(); } } } } Šlo by to ještě lépe (REQUEST_URI). |
||
Axamith Profil |
#3 · Zasláno: 15. 1. 2011, 10:54:15
No to je paráda. jestli jsem to dobře pochopil, tak script vyfiltruje polštinu, češtinu a slovenštinu a případně přesměruje na příslušnou URL. Pokud IP nebude odpovídat žádnému ze tří jazyků, tak pomocí meta tagu musím přesměrovat na angličtinu. Více bych to neprožíval, pokud dojde k nějakému zádrhelu, tak uživatel není hloupý, aby si ručně nepřepnul do jiné jazykové verze, odkazy tam jsou.
|
||
Alphard Profil |
#4 · Zasláno: 15. 1. 2011, 11:59:19
session_is_registered() je zavržená historie. Když už to upravujete, smažte i tohle.
|
||
AM_ Profil |
#5 · Zasláno: 15. 1. 2011, 16:29:55
to samé funkce ereg().
Jinak ještě efektivněji se to dá udělat pomocí $_SERVER["HTTP_ACCEPT_LANGUAGE"], který přímo říká, o jaké jazykové verze a s jakou prioritou daný návštěvník stojí, takže to bude fungovat česky, ikdyž si vezmeš svůj notebook s českým prostředím třeba do jižní afriky. |
||
Axamith Profil |
#6 · Zasláno: 16. 1. 2011, 20:06:17
Alphard, AM : Bohužel do PHP jsem nakoukl jen okrajově, tak jsem rád, když na mě někdo vysype hotový zdroják, který je ihned použitelný.
|
||
AM_ Profil |
#7 · Zasláno: 16. 1. 2011, 20:53:42
Axamith:
„který je ihned použitelný“ ale zítra už být nemusí. Používání zastaralých funkcí znamená problémy s kompatibilitou v (blízké) budoucnosti. Samozřejmě, nikdo tě nemůže nutit se učit PHP, ale je potřeba počítat s tím, že když chceš hotová řešení zdarma, jejich kvalita nebude valná. |
||
ninja Profil |
#8 · Zasláno: 16. 1. 2011, 22:51:02
Axamith: Pokud Vám mohu doporučit, co nejdříve skript přestaňte používat.
1. Pravděpodobně porušujete autorský zákon vzužíváním služby webyield.net. 2. Technické provedení získaní lokace návštevníka je velmi nespolehlivé a značně prodlužuje dobu načítání stránky. 3. Obecně filtrovat uživatele dle lokace a ne jejich preferovaného jazyka je většinou chyba. 5. Označení pomocí session je špatně. |
||
Časová prodleva: 3 dny
|
|||
Axamith Profil |
#9 · Zasláno: 19. 1. 2011, 11:01:20
Tak teď jsem v pasti. Na web jsem si nechal napsat script na filtrování jazykové verze. A zaplatil za něj. Teď se dovídám, že tím porušuji autorský zákon, že je to pomalé, nespolehlivé a celkově špatně.
Určitě by bylo vhodnější určovat jazykovou verzi podle preferovaného jazyka v OS, ale nejsem si jistý, jestli bude konečný zákazník ochoten platit znovu za něco, co už jednou platil. |
||
AM_ Profil |
#10 · Zasláno: 19. 1. 2011, 15:41:53
Axamith:
„A zaplatil za něj. Teď se dovídám, že tím porušuji autorský zákon“ pokud to řekneš autorovi scriptu, věřím, že jeho autor ti peníze rád vrátí. mnohem efektivnější skript pro filtrování podle accept_language ti klidně napíšu za pár korun (řekněme 500), je to mnohem efektivnější než podle IP, je to na pár řádek a nic to neporušuje. Pokud máš zájem ozvi se na r.ejem@seznam.cz, nebo můžeš zkusit dát nabídku zde na fóru do sekce "práce a zakázky". |
||
ninja Profil |
#11 · Zasláno: 19. 1. 2011, 16:04:37
Axamith: Využijte nabídky AM_ a po autorovi původního skriptu požadujte zpět peníze. Ješte bych ho při tom nakopal za takovou prasárnu, co stvořil...
|
||
Alphard Profil |
#12 · Zasláno: 19. 1. 2011, 16:18:49
AM:
„filtrování podle accept_language ti klidně napíšu za pár korun (řekněme 500)“ Omlouvám se za OT, ale běžně prodáváš řádek kódu za stovku? Axamith: Vypište si tu hodnotu v různých prohlížečích, podívejte se, jak je formátovaná a určitě vás něco napadne. |
||
AM_ Profil |
#13 · Zasláno: 19. 1. 2011, 16:29:03
Alphard:
„Omlouvám se za OT, ale běžně prodáváš řádek kódu za stovku?“ Hraje tu roli trochu to, že pod 500 nejdu, ať jde o sebemenší problém který zase není dost malý na to, abych ho vyřešil zdarma; levněji se mi to nevyplatí dělat, kdybych se živil řešením drobných problémů a bral za objem kódu stejně, měl bych se podstatně hůř. jestli to je někdo schopný udělat levněji nebo zdarma, poslužte si, nouzi o práci nemám, také proto nedávám nižší nabídky. 500 není málo, ale není to zas tak přemrštěné, musí se do toho počítat i pomoc s nasazením a odladěním do existujícího programu atd.. Vzhledem k tomu, že Axamith i tento skript objednával, předpokládám, že upřednostní hotové řešení před "popostrčeními". |
||
Časová prodleva: 13 let
|
0