Διαφορετικό περιεχόμενο ανάλογα την χώρα

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
selemeles
Δημοσιεύσεις: 464
Εγγραφή: 23 Νοέμ 2006 12:42
Τοποθεσία: Άνω Λιόσια
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από selemeles » 23 Δεκ 2012 12:41

Καλησπέρα,

Άκουσα από κάποιον ότι μπορεί να έχει μια σελιδα στην οποία θα εμφανίζεται διαφορετικό περιχόμενο, αν είναι πχ στη Βουλγαρία και διαφορετικό αν είναι στην Ελλάδα

Ισχύει κάτι τέτειο και πως μπορεί να γίνει? Ειναι επισφαλές και σίγουρο? Το έχει δοκιμάσει κανείς?
:: Blue Webeyes :: www.bwe.gr
-----------------------------------------------------
έπιπλα κουζίνας

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από alou » 23 Δεκ 2012 18:49

Από όσο ξέρω υπάρχουν δύο τρόποι να κάνεις κάτι τέτοιο. Ο ένας είναι με ένα ip geolocation web service, π.χ.
http://freegeoip.net/static/index.html
όπου στέλνεις query με το ip του visitor και παίρνεις geo data.
υπάρχουν περιορισμοί στα queries για το δωρεάν service βέβαια αλλά αν ξεπεράσεις το όριο υπάρχουν εναλλακτικές επί πληρωμή. Δεν ξεπερνάς όμως το latency καθώς στέλνεις και παραλαμβάνεις πληροφορία πριν απεικονίσεις περιεχόμενο.

Η άλλη περίπτωση είναι να πάρεις το default browser language και να κατευθύνεις από εκεί. Πιο γρήγορο και δεν εξαρτάσαι από άλλο service αλλά π.χ. πολλοί στην Ελλάδα μπορεί να έχουν για οποιοδήποτε λόγο default γλώσσα τα αγγλικά.

Εξαρτάται από την υλοποίησή σου τι είναι προτιμότερο και πως θα το κάνεις πιο λειτουργικό.

Άβαταρ μέλους
selemeles
Δημοσιεύσεις: 464
Εγγραφή: 23 Νοέμ 2006 12:42
Τοποθεσία: Άνω Λιόσια
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από selemeles » 23 Δεκ 2012 19:35

alou έγραψε:Από όσο ξέρω υπάρχουν δύο τρόποι να κάνεις κάτι τέτοιο. Ο ένας είναι με ένα ip geolocation web service, π.χ.
http://freegeoip.net/static/index.html
όπου στέλνεις query με το ip του visitor και παίρνεις geo data.
υπάρχουν περιορισμοί στα queries για το δωρεάν service βέβαια αλλά αν ξεπεράσεις το όριο υπάρχουν εναλλακτικές επί πληρωμή. Δεν ξεπερνάς όμως το latency καθώς στέλνεις και παραλαμβάνεις πληροφορία πριν απεικονίσεις περιεχόμενο.

Η άλλη περίπτωση είναι να πάρεις το default browser language και να κατευθύνεις από εκεί. Πιο γρήγορο και δεν εξαρτάσαι από άλλο service αλλά π.χ. πολλοί στην Ελλάδα μπορεί να έχουν για οποιοδήποτε λόγο default γλώσσα τα αγγλικά.

Εξαρτάται από την υλοποίησή σου τι είναι προτιμότερο και πως θα το κάνεις πιο λειτουργικό.
Πόσο ασφαλές είναι οι 2 αυτές λύσεις? Γιατί εμένα στην πρώτη ενώ είμαι τώρα Χαλκιδική με βγάζει θεσσαλία...

Ευχαριστώ πάντως πολύ για την άμεση απάντηση, και συνεχίζω την αναζήτηση. Ευπρόσδεκτες οι προτάσεις :)
:: Blue Webeyes :: www.bwe.gr
-----------------------------------------------------
έπιπλα κουζίνας

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από alou » 23 Δεκ 2012 21:32

Για IP χώρας μια χαρά είναι, αν θες ακριβή περιοχή εντός Ελλάδας μάλλον αποκλείεται.

Αν έλεγες και τι ακριβώς θες να κάνεις ίσως υπήρχε κάποια πρόταση.

Άβαταρ μέλους
alexisitsios
Δημοσιεύσεις: 447
Εγγραφή: 02 Ιαν 2012 21:37

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από alexisitsios » 23 Δεκ 2012 21:35

Συμφωνώ με τον alou. Εάν θέλεις για συγκεκριμένη περιοχή κάποιας χώρας είναι εξαιρετικά δύσκολο (μάλλον ανέφικτο). Παρόλα αυτά αν απευθύνεσαι σε χώρα, πιθανότατα θα έχεις ελάχιστες απώλειες.

Άβαταρ μέλους
selemeles
Δημοσιεύσεις: 464
Εγγραφή: 23 Νοέμ 2006 12:42
Τοποθεσία: Άνω Λιόσια
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από selemeles » 24 Δεκ 2012 00:59

Θέλω ουσιαστικά όταν κάποιος μπαίνει από την Βουλγαρία να εμφανίζεται το Βουλγάρικο κείμενο και όταν μπαίνει από την Ελλάδα να εμφανίζεται το Ελληνικό κείμενο...
Το έχει δοκιμάσει κανείς?
:: Blue Webeyes :: www.bwe.gr
-----------------------------------------------------
έπιπλα κουζίνας

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από jpk » 24 Δεκ 2012 01:09

Έτσι είναι όπως τα έγραψε ο alou και ο alexisitsios , απλά να προσθέσω μια εναλλακτική στην πρώτη λύση που χρησιμοποιώ κάποια χρόνια τώρα για διαδικτυακές εφαρμογές που απαιτούν ανίχνευση χώρας προέλευσης χρήστη. Έχω εγκαταστήσει στον server μου το GeoIP που έχει και δωρεάν έκδοση.
http://dev.maxmind.com/geoip/geolite#Downloads-0
http://dev.maxmind.com/geoip/downloadab ... atabases-1

Η μία λύση είναι να εγκαταστήσεις στον server σου την binary database , τα σχετικά modules και να προσέξεις στο /etc/httpd/etc/httpd.conf να έχεις Off το module κανονικά και On μόνο στον κατάλογο – λογαριασμό που σε ενδιαφέρει να χρησιμοποιείται. Με αυτό τον τρόπο βελτιστοποιήσεις την απόδοση γιατί φορτώνεται το module μόνο εκεί που το χρειάζεσαι και όχι παντού… Αν θέλεις παραπάνω πληροφορίες για αυτό πες μου. Από εκεί και πέρα για την εγκατάσταση στον server σου υπάρχουν αρκετά tutorials ανάλογα το λογισμικό σου … απλά google it.

Αν χρησιμοποιήσεις αυτή την επιλογή η πρόσβαση από την PHP εκεί που έχεις ενεργοποιημένο το module είναι τρομερά απλή , είναι μεταβλητές που είναι προσβάσιμες ανά request στο $_SERVER global array (π.χ. $_SERVER["GEOIP_COUNTRY_NAME"] είναι το όνομα της χώρας από την οποία προήρθε το request)

Η δεύτερη λύση (που δεν την έχω κάνει άρα δεν μπορώ να πω και περισσότερα) είναι να κατεβάσεις την βάση σε μορφή CSV που την έχει και να την φορτώσεις σε π.χ. MySQL και να δεις από εκεί πως θα την χρησιμοποιείς.

Όσο το έχω χρησιμοποιήσει είναι αρκετά καλό και ακριβές στο επίπεδο χώρας (όσο αφορά την πόλη , σε πολλές χώρες δεν γίνεται για αντικειμενικούς λόγους π.χ. γιατί η πραγματική τοποθεσία που βρίσκεται ο server που βγάζει μια IP είναι σε άλλη πόλη – Στην Ελλάδα δεν το συζητάμε καθόλου , όχι μόνο αυτή η βάση αλλά και η πραγματικότητα είναι αλλού για αλλού).

Με αυτόν τον τρόπο φυσικά μπορείς να κάνεις επιλογή περιεχομένου ανάλογα με την χώρα , αλλά χρειάζεται μια σχετική προσοχή στην μη κατάχρησή του για λόγους SEO. Οπότε ίσως είναι καλλίτερο να κάνεις απλά ανακατεύθυνση αναλόγως την χώρα σε υποκατάλογο που είναι το περιεχόμενο της γλώσσας και να έχεις μια επιλογή ότι αν σου δηλώνει ότι είναι robotaki στο request να μην κάνεις ανακατεύθυνση καθόλου

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από alou » 24 Δεκ 2012 01:27

jpk δεν το είχα υπόψιν και φαίνεται καλό :D

Από ότι βλέπω, στη βάση GeoLite City έχει πολύ συγκεκριμένα στοιχεία για κάλυψη πόλεων ανά χώρα:

Greece 62% (incorrectly resolved:)32% (unknown:) 6%
http://www.maxmind.com/en/geolite_city_accuracy

Ακτή ελεφαντοστού έχει το μεγαλύτερο ποσοστό... wtf

Άβαταρ μέλους
selemeles
Δημοσιεύσεις: 464
Εγγραφή: 23 Νοέμ 2006 12:42
Τοποθεσία: Άνω Λιόσια
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από selemeles » 26 Δεκ 2012 10:37

To δοκίμασα εδώ

http://www.costas-petrou.com/1/1.php

Μπορείτε να το δείτε και να μου πείτε τι βέπετε? Ειδικά αν είναι κάποιος στο Εξωτερικό?

Ευχαριστώ :)
:: Blue Webeyes :: www.bwe.gr
-----------------------------------------------------
έπιπλα κουζίνας

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από jpk » 26 Δεκ 2012 11:48

Ποιο δοκίμασες;

Ρωτάω γιατί στο τεστ που έδωσες μου βγάζει (Country: Cyprus) ενώ σε έναν λογαριασμό που έχω εγκαταστήσει την binary database του GeoLite μου βγάζει (Country: Greece) που είναι και το σωστό.

Άβαταρ μέλους
selemeles
Δημοσιεύσεις: 464
Εγγραφή: 23 Νοέμ 2006 12:42
Τοποθεσία: Άνω Λιόσια
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από selemeles » 27 Δεκ 2012 01:51

Δεν εκανα κατι εγκατασταση. Ειναι webservice.
Εμενα μου βγαζει Greece απο Χαλκιδικη που ειμαι...

Κανεις αλλος;
:: Blue Webeyes :: www.bwe.gr
-----------------------------------------------------
έπιπλα κουζίνας

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από burnmind » 27 Δεκ 2012 14:06

Κι εγώ χρησιμοποιώ εδώ και καιρό το GeoLite Country (downloadable) και είμαι ευχαριστημένος. Έχω κάνει πολλά πολλά tests από αρκετές χώρες κατά καιρούς και δουλεύουν όλα ρολόι.

Μία εναλλακτική που έχω χρησιμοποιήσει εδώ είναι το IPInfoDB.

Το δικό σου test βγάζει τα εξής (από Ελληνική IP):

Κώδικας: Επιλογή όλων

Country: Australia
Other Country

Άβαταρ μέλους
selemeles
Δημοσιεύσεις: 464
Εγγραφή: 23 Νοέμ 2006 12:42
Τοποθεσία: Άνω Λιόσια
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από selemeles » 27 Δεκ 2012 16:03

Βασικά έχω κανει το εξής :

function freegeoip_locate($ip) {
$url = "http://freegeoip.net/json/".$ip;
$geo = json_decode(file_get_contents($url), true);
return $geo;
}
$geo = freegeoip_locate($_SERVER['REMOTE_ADDR']);
echo "Country: " . $geo['country_name']. "<br>";


Δεν βγάζει σωστά??? Δε θα ήθελα να κάνω κάτι εγκατάσταση στον server

Λογικά όμως δε θα έπρεπε να παίζει κανονικα εφόσον χρησιμοποιεί απευθυείας στοιχεία από freegeoip ???
:: Blue Webeyes :: www.bwe.gr
-----------------------------------------------------
έπιπλα κουζίνας

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από burnmind » 27 Δεκ 2012 20:51

Απ'ότι φαίνεται, τα στοιχεία που έχει η freegeoip δεν είναι ανανεωμένα.

Οι 2 λύσεις που ανέφερα πριν παρέχουν web services που μπορείς να χρησιμοποιήσεις, αλλά επί πληρωμή. Η IPInfoDB δίνει και free web service, που όπως αναφέρουν είναι λιγότερο ακριβές από το επί πληρωμή της (αν θες παράδειγμα του πώς χρησιμοποιείται, μπορείς να δεις τον κώδικα του wordpress plugin που ανέφερα πριν).

Όσο για τη free db που δίνει η maxmind, δεν είναι απαραίτητο να κάνεις κάποια πολύπλοκη εγκατάσταση. Μπορείς να κάνεις το εξής:

Κατεβάζεις το php-1.11.tar.gz (μέρος του php api τους). Στο παράδειγμα θα χρησιμοποιήσω το αρχείο geoip.inc.

Κατεβάζεις χειροκίνητα την db (ανανεώνεται κάθε μήνα) από εδώ. Στο παράδειγμα θα χρησιμοποιήσω το binary αρχείο της GeoLite Country (GeoIP.dat).

Χρησιμοποιείς τον εξής κώδικα για να πάρεις τη χώρα του χρήστη:

Κώδικας: Επιλογή όλων

$ip = $_SERVER&#91;'REMOTE_ADDR'&#93;;
require_once&#40;"geoip.inc"&#41;;
$gi = geoip_open&#40;"GeoIP.dat",GEOIP_STANDARD&#41;;
$country = geoip_country_name_by_addr&#40;$gi, $ip&#41;;
Live demo εδώ.

Άβαταρ μέλους
charavge
Δημοσιεύσεις: 378
Εγγραφή: 14 Σεπ 2006 15:47

Διαφορετικό περιεχόμενο ανάλογα την χώρα

Δημοσίευση από charavge » 28 Δεκ 2012 11:59

Χρόνια πολλά.
Εμένα μου έβγαλε Ελλάδα.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες