Personalizace obsahu podle IP a porovnání s databází – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Personalizace obsahu podle IP a porovnání s databází – PHP – Fórum – Programujte.comPersonalizace obsahu podle IP a porovnání s databází – PHP – Fórum – Programujte.com

 

dvorak-a
~ Anonymní uživatel
7 příspěvků
6. 10. 2015   #1
-
0
-

Zdravím,

rád bych obsah webu personalizoval podle země ze které návštěvník je

databáze je takováto: začátek rozsahu, konec rozsahu, stát

jak co nejlépe (a nejrychleji) vyřešit zobrazování různých jazyků dle databáze (je pro toto vhodná mysql)?

děkuji

Nahlásit jako SPAM
IP: 195.113.167.–
Kit+15
Guru
7. 10. 2015   #2
-
0
-

#1 dvorak-a
Takže když bude z Kanady, tak to budeš chtít anglicky nebo francouzsky?

Lepší asi bude vybírat si podle preferovaného jazyka.

Co je to ten "začátek rozsahu" a "konec rozsahu"? Stát asi nemá smysl.

MySQL se na to docela hodí. Primárním klíčem bude dvojice (jazyk, slovo) a dalším atributem bude fráze. Třísloupcová tabulka to tedy řeší.

Profesionálové na to používají databázi i18n. Je na to stavěna a umí částečně i skloňovat a doplňovat hodnoty do vět. Hodí se, pokud překlady dělá tým.

Vlastně se na to hodí téměř kterákoli databáze.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
dvorak-a
~ Anonymní uživatel
7 příspěvků
7. 10. 2015   #3
-
0
-

děkuji za rychlou odpověď, nejde mi o lokalizaci ale pouze o odlišný obsah dle země - nikoli jazyka

rozsahem myslím rozsah hodnot adres, které nabývají adresy daného státu např. 10.1.0.0 až 10.255.255.255

mám odstranit z rozsahů tečky a potom klasicky <= a >=?

Nahlásit jako SPAM
IP: 195.113.167.–
peter
~ Anonymní uživatel
3981 příspěvků
7. 10. 2015   #4
-
0
-

U nas ma kazdy jazyk spesl slozku a vlastni stranky. V cestine mame vsechno. V jinem jazyku jsou informace pro cizince. Idealni by bylo prekladat online stranky, ale kdo to bude delat? Kazdy den jsou tam zmeny treba na 100 strankach.
Samozrejme, pro vyhledavani je pak treba to tridit pres slozky (nebo pres jazyky), abys uzivateli nedaval anglicke vysledky pro cesky jazyk.

id_slozka, id_nadrazena, text
1, 0, cz
2, 0, en
3, 1, O firme
4, 2, About us

id_stranka, slozka0, slozka, text
1, 1, 1, cesky text - prvni stranka ve slozce cz/
2, 2, 2, anglicky texty
3, 1, 1, cesky text - druha stranka ve slozce cz/

Nahlásit jako SPAM
IP: 2001:718:2601:258:5d6:1bc...–
dvorak-a
~ Anonymní uživatel
7 příspěvků
7. 10. 2015   #5
-
0
-

nejde mi o řešení jazykových mutací, ale o zobrazení obsahu na základě přibližné lokality dle IP, konkrétně se mi jedná o script, který ip návštěvníka porovná s rozsahy v db a vrátí zemi

Nahlásit jako SPAM
IP: 195.113.167.–
peter
~ Anonymní uživatel
3981 příspěvků
7. 10. 2015   #6
-
0
-

Aha. A zkousel jsi google?

Nahlásit jako SPAM
IP: 2001:718:2601:258:5d6:1bc...–
dvorak-a
~ Anonymní uživatel
7 příspěvků
7. 10. 2015   #7
-
0
-

ano, zkoušel, vždy se používá api třetích stran (často placené), řešení s využitím vlastní databáze jsem nenašel

Nahlásit jako SPAM
IP: 195.113.167.–
peter
~ Anonymní uživatel
3981 příspěvků
8. 10. 2015   #8
-
0
-

Co jsi nasel?
Co jsi hledal?
Dej to sem a popis, co to dela nebo nedela?
google = detect language by ip php
google = detect state by ip php

function getLanguage(){
$a=@explode(array(',',';'),$_SERVER['HTTP_ACCEPT_LANGUAGE']);
return $a[0];
}
    function getPreferredLanguage() {
    	$langs = array();
    	if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
    		// break up string into pieces (languages and q factors)
    		preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i',
    				$_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
    		if (count($lang_parse[1])) {
    			// create a list like "en" => 0.8
    			$langs = array_combine($lang_parse[1], $lang_parse[4]);
    			// set default to 1 for any without q factor
    			foreach ($langs as $lang => $val) {
    				if ($val === '') $langs[$lang] = 1;
    			}
    			// sort list based on value	
    			arsort($langs, SORT_NUMERIC);
    		}
    	}
    	//extract most important (first)
    	foreach ($langs as $lang => $val) { break; }
    	//if complex language simplify it
    	if (stristr($lang,"-")) {$tmp = explode("-",$lang); $lang = $tmp[0]; }
    	return $lang;
    }

http://php.net/manual/en/book.geoip.php

Pomoci tretich stran https://www.youtube.com/watch?…

//checks if the language exists, if not choose the default language
if (!$cookie->id_lang && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
$array = explode(',', Tools::strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']));
if (Tools::strlen($array[0]) > 2)
{
$tab = explode('-', $array[0]);
$string = $tab[0];
}
else
$string = $array[0];
if (Validate::isLanguageIsoCode($string))
{
$lang = new Language(Language::getIdByIso($string));
if (Validate::isLoadedObject($lang) && $lang->active)
$this->id_lang = (int)$lang->id;
}
}
//checks if the language exists, if not choose the default language
if (!Language::getLanguage((int)$this->id_lang))
$this->id_lang = Configuration::get('PS_LANG_DEFAULT');

}
public static function setCookieLanguage($cookie = null)
{
if (!$cookie)
$cookie = Context::getContext()->cookie;
/* If language does not exist or is disabled, erase it */
if ($cookie->id_lang)
{
$lang = new Language((int)$cookie->id_lang);
if (!Validate::isLoadedObject($lang) || !$lang->active || !$lang->isAssociatedToShop())
$cookie->id_lang = null;
}

/* Automatically detect language if not already defined, detect_language is set in Cookie::update */ 

if ((!$cookie->id_lang || isset($cookie->detect_language)) && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { 
$array = explode(',', Tools::strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'])
); 
...

5 min googlovani. Jestli neco z toho dela, co potrebujes, pak se styd :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:99e7:1c...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 20 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý