Afficher le contenu selon ip du pays
Marc
-
Snoopip Messages postés 253 Statut Membre -
Snoopip Messages postés 253 Statut Membre -
Bonjour,
Je cherche a mettre en place un système grâce a laquelle un contenu spécifique s'affiche en fonction du pays du visiteur. j'ai cherché et j'ai trouvé ça:
$ip_autorisee = 1.2.3.4;
if($_SERVER['REMOTE_ADDR'] == $ip_autorisee){
Affichage 111
}
else {
//Message d'erreur ex :
echo "Affichage 222";
}
Mais quoi mettre ici: $ip_autorisee = 1.2.3.4; ? Comment savoir si l'adresse ip est d'origine francaise?
Si vous avez une autre méthode s'il vous plait dites le moi.
Merci d'avance
ps: si je ne suis pas asses clair dites le moi :)
Je cherche a mettre en place un système grâce a laquelle un contenu spécifique s'affiche en fonction du pays du visiteur. j'ai cherché et j'ai trouvé ça:
$ip_autorisee = 1.2.3.4;
if($_SERVER['REMOTE_ADDR'] == $ip_autorisee){
Affichage 111
}
else {
//Message d'erreur ex :
echo "Affichage 222";
}
Mais quoi mettre ici: $ip_autorisee = 1.2.3.4; ? Comment savoir si l'adresse ip est d'origine francaise?
Si vous avez une autre méthode s'il vous plait dites le moi.
Merci d'avance
ps: si je ne suis pas asses clair dites le moi :)
A voir également:
- Afficher le contenu selon ip du pays
- Ethernet n'a pas de configuration ip valide - Guide
- Comment connaître son adresse ip - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Ip local - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
12 réponses
Re,
essaye de remplacer ça:
$fp = fsockopen ("www.ip-to-country.com", 80, &$errno, &$errstr, 30);
par ça
$fp = fsockopen ("www.ip-to-country.com", 80, $errno, $errstr, 30);
Ici, l'erreur se fait au niveau des variable par référence, en les mettant par valeur, peut-être que ça marchera u_u' lol
A+
Gaerebut
essaye de remplacer ça:
$fp = fsockopen ("www.ip-to-country.com", 80, &$errno, &$errstr, 30);
par ça
$fp = fsockopen ("www.ip-to-country.com", 80, $errno, $errstr, 30);
Ici, l'erreur se fait au niveau des variable par référence, en les mettant par valeur, peut-être que ça marchera u_u' lol
A+
Gaerebut
Alors effectivement il n'y a plus d'erreur, mais maintenant plus rien s'affiche (page blanche). voici tout le code de ma page:
<?php
/* extraction adresse IP du visiteur */
$ip = $_SERVER['REMOTE_ADDR'];
/* transformation IP */
$dotted = preg_split( "/[.]+/", $ip);
$ip2 = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
/* URL du serveur et paramètres à lui passer */
$url = "/get-country/?ip=".$ip2."&user=guest&pass=guest";
/* ouverture de la socket */
$fp = fsockopen ("www.ip-to-country.com", 80, $errno, $errstr, 30);
/* test si erreur à l'ouverture */
if (!$fp) {
/* affichage de l'erreur */
echo "$errstr ($errno)<br>\n";
} else {
/* envoi de la requête HTTP */
fputs ($fp, "GET $url HTTP/1.0\r\nHost: ip-to-country.com\r\n\r\n");
/* réception des données en retour */
while (!feof($fp)) {
/* extraction réponse */
$response .= fgets ($fp,128);
}
/* fermeture socket */
fclose ($fp);
}
function IPAddress2IPNumber($dotted) {
$dotted = preg_split( "/[.]+/", $dotted);
$ip = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
return $ip;
}
function IPNumber2IPAddress($number) {
$a = ($number/16777216)%256;
$b = ($number/65536)%256;
$c = ($number/256)%256;
$d = ($number)%256;
$dotted = $a.".".$b.".".$c.".".$d;
return $dotted;
}
$lignes = explode("\n",$response);
$pays = $lignes[sizeof($lignes)-1];
?>
S'il vous plait aidez moi c'est vraiment très important. Merci gaerebut pour ton soutien.
<?php
/* extraction adresse IP du visiteur */
$ip = $_SERVER['REMOTE_ADDR'];
/* transformation IP */
$dotted = preg_split( "/[.]+/", $ip);
$ip2 = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
/* URL du serveur et paramètres à lui passer */
$url = "/get-country/?ip=".$ip2."&user=guest&pass=guest";
/* ouverture de la socket */
$fp = fsockopen ("www.ip-to-country.com", 80, $errno, $errstr, 30);
/* test si erreur à l'ouverture */
if (!$fp) {
/* affichage de l'erreur */
echo "$errstr ($errno)<br>\n";
} else {
/* envoi de la requête HTTP */
fputs ($fp, "GET $url HTTP/1.0\r\nHost: ip-to-country.com\r\n\r\n");
/* réception des données en retour */
while (!feof($fp)) {
/* extraction réponse */
$response .= fgets ($fp,128);
}
/* fermeture socket */
fclose ($fp);
}
function IPAddress2IPNumber($dotted) {
$dotted = preg_split( "/[.]+/", $dotted);
$ip = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
return $ip;
}
function IPNumber2IPAddress($number) {
$a = ($number/16777216)%256;
$b = ($number/65536)%256;
$c = ($number/256)%256;
$d = ($number)%256;
$dotted = $a.".".$b.".".$c.".".$d;
return $dotted;
}
$lignes = explode("\n",$response);
$pays = $lignes[sizeof($lignes)-1];
?>
S'il vous plait aidez moi c'est vraiment très important. Merci gaerebut pour ton soutien.
Salut,
pourquoi ne pas directement afficher la langue du visiteur ?!
Pour ça c'est facile, on utilise un petit script PHP qui détecte la langue par défaut du navigateur client:
<?php
$lang= explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang= strtolower(substr(chop($lang[0]),0,2));
echo $lang;
?>
Après, tu peux utiliser un tableau PHP contenant uniquement les pays autorisé (ou uniquement les pays interdit).
Puis, via la fonction in_array(); on detecte si la langue appartient au tableau:
Exemple:
A+
Gaerebut
pourquoi ne pas directement afficher la langue du visiteur ?!
Pour ça c'est facile, on utilise un petit script PHP qui détecte la langue par défaut du navigateur client:
<?php
$lang= explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang= strtolower(substr(chop($lang[0]),0,2));
echo $lang;
?>
Après, tu peux utiliser un tableau PHP contenant uniquement les pays autorisé (ou uniquement les pays interdit).
Puis, via la fonction in_array(); on detecte si la langue appartient au tableau:
Exemple:
<?php
$lang= strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2));
$arrAcceptLanguage = array('fr', 'en', 'de', 'it') //Langue AUTORISEES
if(in_array($lang, $arrAcceptLanguage))
echo 'Bienvenu !'; // Autorisé
else
header('location: error.php') // Non autorisé => Redirigé sur la page error.php
?>
A+
Gaerebut
Bonjour gaerebut,
dans ta technique est ce que c'est possible qu'un américain avec un son navigateur français voit le contenu?
Pour ma part c'est de la publicité que je vais afficher, ma régie publicitaire est française et me demande que ce soit que des visiteurs français cliquent sur les pub.
J'attends ta réponse, et merci encore.
dans ta technique est ce que c'est possible qu'un américain avec un son navigateur français voit le contenu?
Pour ma part c'est de la publicité que je vais afficher, ma régie publicitaire est française et me demande que ce soit que des visiteurs français cliquent sur les pub.
J'attends ta réponse, et merci encore.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je viens de vérifier et c'est effectivement ce que je pensai. Je cherche plus un système qui affiche seulement quand c'est du territoire français qu'on accède.
Si vous avez des idées?
Merci :)
Si vous avez des idées?
Merci :)
RE,
oui dans le cas ou ton américain configuré en Francais, il pourra y accéder ...
Faut alors détecter le pays en fonction de l'ip
Va faire un tour ici : https://cyberzoide.developpez.com/php4/ip-to-country/
A+
Gaerebut
oui dans le cas ou ton américain configuré en Francais, il pourra y accéder ...
Faut alors détecter le pays en fonction de l'ip
Va faire un tour ici : https://cyberzoide.developpez.com/php4/ip-to-country/
A+
Gaerebut
gaerebut merci encore une fois, mais j'ai pas trop compris comment cela fonctionne vraiment. J'ai essayer de differentes facons. je fait copier coller l'exemple puis j'exécute mais une erreur s'affiche.
<?php
/* extraction adresse IP du visiteur */
$ip = $_SERVER['REMOTE_ADDR'];
/* transformation IP */
$dotted = preg_split( "/[.]+/", $ip);
$ip2 = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
/* URL du serveur et paramètres à lui passer */
$url = "/get-country/?ip=".$ip2."&user=guest&pass=guest";
/* ouverture de la socket */
$fp = fsockopen ("www.ip-to-country.com", 80, &$errno, &$errstr, 30);
/* test si erreur à l'ouverture */
if (!$fp) {
/* affichage de l'erreur */
echo "$errstr ($errno)<br>\n";
} else {
/* envoi de la requête HTTP */
fputs ($fp, "GET $url HTTP/1.0\r\nHost: ip-to-country.com\r\n\r\n");
/* réception des données en retour */
while (!feof($fp)) {
/* extraction réponse */
$response .= fgets ($fp,128);
}
/* fermeture socket */
fclose ($fp);
}
?>
Voici l'erreur:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /home/www/e61a8680e8b575431a3048f0c67a7f81/web/pub.php on line 10
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /home/www/e61a8680e8b575431a3048f0c67a7f81/web/pub.php on line 10
que faire s'il vous plait.
<?php
/* extraction adresse IP du visiteur */
$ip = $_SERVER['REMOTE_ADDR'];
/* transformation IP */
$dotted = preg_split( "/[.]+/", $ip);
$ip2 = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
/* URL du serveur et paramètres à lui passer */
$url = "/get-country/?ip=".$ip2."&user=guest&pass=guest";
/* ouverture de la socket */
$fp = fsockopen ("www.ip-to-country.com", 80, &$errno, &$errstr, 30);
/* test si erreur à l'ouverture */
if (!$fp) {
/* affichage de l'erreur */
echo "$errstr ($errno)<br>\n";
} else {
/* envoi de la requête HTTP */
fputs ($fp, "GET $url HTTP/1.0\r\nHost: ip-to-country.com\r\n\r\n");
/* réception des données en retour */
while (!feof($fp)) {
/* extraction réponse */
$response .= fgets ($fp,128);
}
/* fermeture socket */
fclose ($fp);
}
?>
Voici l'erreur:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /home/www/e61a8680e8b575431a3048f0c67a7f81/web/pub.php on line 10
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /home/www/e61a8680e8b575431a3048f0c67a7f81/web/pub.php on line 10
que faire s'il vous plait.
Rien ne s'affiche car tu n'a peut-être pas appelé les fonctions ?! lol
On sait jamais :p
A+
Gaerebut
On sait jamais :p
A+
Gaerebut
Gaerebut merci et merci :))
le seul petit (et grand) soucis c'est que je suis très mauvais en php, tu l'a remarqué. Comment dois-je faire pour l'appeler?
Je doit faire echo $variable;
mais quelle variable? S'il te plait.
le seul petit (et grand) soucis c'est que je suis très mauvais en php, tu l'a remarqué. Comment dois-je faire pour l'appeler?
Je doit faire echo $variable;
mais quelle variable? S'il te plait.