2016-03-31 2 views
0

Ich habe eine kleine Website (mit HTML, PHP und MySQL), und möchte ein bestimmtes Bannerbild entsprechend dem Land des Besuchers anzeigen. Jedes Land hat ein anderes Bannerbild.Ändern Sie das Web-Banner-Bild basierend auf dem Land des Besuchers

Ich habe Google nach Lösungen gesucht und fand einige APIs (wie HostIP), die das Land basierend auf der IP-Adresse zurückgeben können. Das ist nett, aber ich konnte nicht finden, wie man es für meinen Zweck einstellt, um das Bild entsprechend dem Land zu schalten ...

Ich habe kein Entwicklerwissen. Kann mir jemand helfen?

+0

Nun, wir können, aber wir werden nicht. Wir sind hier, um zu helfen, keinen kostenlosen Code zu vergeben. Vielleicht solltest du versuchen, einen Entwickler einzustellen? – Daan

+0

_ "Ich habe kein Entwicklerwissen" _ - dann geh jemanden einstellen. – CBroe

+0

Sie sollten keine großen Wortblöcke machen, es bringt Leute davon ab, Ihre Frage zu beantworten. Beachten Sie, dass Sie zum Erstellen eines neuen Absatzes zweimal die Eingabetaste drücken müssen. Einmal wird eine neue Zeile im Editor erstellt, aber nicht auf der eigentlichen Seite, auf der jeder Ihren Beitrag sehen wird. StackOverflow ist kein kostenloser Codierdienst, und ohne Entwicklerwissen werden Sie nichts erreichen. Diese Frage wird wahrscheinlich markiert und gelöscht/geschlossen, also gehen Sie und mieten Sie einen Entwickler, um den Code für Sie zu schreiben. – Druzion

Antwort

0

Erhalten Geo-IP Information

Anfragen ein Geo-IP-Server (netip.de) zu überprüfen, gibt, wo eine IP befindet (Host, Staat, Land, Stadt).

<?php 
$ip='94.219.40.96'; 
print_r(geoCheckIP($ip)); 
//Array ([domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen) 

//Get an array with geoip-infodata 
function geoCheckIP($ip) 
{ 
     //check, if the provided ip is valid 
     if(!filter_var($ip, FILTER_VALIDATE_IP)) 
     { 
       throw new InvalidArgumentException("IP is not valid"); 
     } 

     //contact ip-server 
     [email protected]_get_contents('http://www.netip.de/search?query='.$ip); 
     if (empty($response)) 
     { 
       throw new InvalidArgumentException("Error contacting Geo-IP-Server"); 
     } 

     //Array containing all regex-patterns necessary to extract ip-geoinfo from page 
     $patterns=array(); 
     $patterns["domain"] = '#Domain: (.*?)&nbsp;#i'; 
     $patterns["country"] = '#Country: (.*?)&nbsp;#i'; 
     $patterns["state"] = '#State/Region: (.*?)<br#i'; 
     $patterns["town"] = '#City: (.*?)<br#i'; 

     //Array where results will be stored 
     $ipInfo=array(); 

     //check response from ipserver for above patterns 
     foreach ($patterns as $key => $pattern) 
     { 
       //store the result in array 
       $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found'; 
     } 

     return $ipInfo; 
} 

?> 
+0

Danke Avinash. Sieht interessant aus. Aber ich suche nach dem Weg, um das richtige Bild basierend auf diesen Informationen anzuzeigen. Ich habe netip.de besucht, und tatsächlich gibt es das richtige Land zurück. Aber wie wählt man das richtige Bild, das auf diesem Land basiert ...? – user3981693

+0

Wenn Sie von dieser Funktion den richtigen Ländernamen erhalten, können Sie das Bild auf der Grundlage des Ländernamens anzeigen. Beispiel: Erstellen Sie eine Tabelle für länderbasierte Bilder. Und wenn ein Benutzer unsere Seite besucht, dann finden Sie das Land dieses Benutzers, holen Sie dann Daten aus der landesspezifischen Bildtabelle und zeigen Sie dieses Bild an. hoffe du verstehst .... –

+0

Ich verstehe das Konzept. Ich habe gerade angefangen, Coding zu lernen, also ist es für mich an diesem Punkt etwas schwierig. Finde den Weg, um das Land (Name oder ISO-Code) zu erfassen, übergebe es an eine Abfrage, lade das Bild aus der landesspezifischen Bildtabelle und zeige das Bild an. – user3981693

0

die anwer von Avinash zu vervollständigen, ist dies die richtige Lösung Bild zu wechseln, basierend auf Land?

function switchImage($var) { 
    switch ($var) 
    { 
    case "United states": 
     $source = '/images/US.png'; 
     $class = 'myClass'; 
     $alt = 'myAlt'; 
     break; 
    case "United Kingdom": 
     $source = '/images/UK.png'; 
     $class = 'myClass'; 
     $alt = 'myAlt'; 
     break; 
    . 
    . 
    . 
    default: 
     return "Default"; //default case 
    } 
} 
Verwandte Themen