如何根据地理位置修复用于回显输出的php代码

时间:2019-04-07 18:12:38

标签: php geolocation

如果该城市位于德克萨斯州,则我将使用php和地理付费服务在网页内容中显示城市。为什么我的if .... else语句不起作用?

通过ipstack提供的付费SSL地理位置服务。 使用cpanel托管GoDaddy

<html>
    <h1>
    <?php
    $ip = $_SERVER['REMOTE_ADDR']; 
    $api_key = "myipstackkeygoeshere";
    $freegeoipjson = file_get_contents("http://api.ipstack.com/".$ip."?access_key=".$api_key."");
    $jsondata = json_decode($freegeoipjson);
    $cityfromip = $jsondata->city;
    $region_namefromip = $jsondata->region_name;
    if ($region_namefromip = "Texas") {
    echo "". $cityfromip ."";
    } else {
    echo "Texas";
    }
    ?>
    Services</h1>  
 </body>
</html>

如果访问者的位置在德克萨斯州,我希望在“服务”之前显示城市(例如:“达拉斯服务”)。如果访客的位置不在德克萨斯州,我希望显示“ Texas”(例如:“ Texas Services”)。

在添加if ... else语句并仅使用echo "". $cityfromip ."";之前,该页面将显示城市(无论哪个州)。使用if ... else语句时,不会显示任何城市。我的代码哪里出问题了?

1 个答案:

答案 0 :(得分:-1)

杰克的答案很有帮助,我可以使用以下方法提出可行的解决方案:

<?php  
 $ip = $_SERVER['REMOTE_ADDR']; 
 $api_key = "AccessKeyGoesHere"; 
 $freegeoipjson = file_get_contents("https://api.ipstack.com/".$ip."?access_key=".$api_key.""); 
 $data = json_decode($freegeoipjson, TRUE); 
 $city = print_r($data['city'], true); 
 $state = print_r($data['region_code'], true); 
 $charlotte_cities_in_75_mile_radius = "City1 City2 City3 City4 City5 City6 City7 City8"; 

 if ((strpos($charlotte_cities_in_75_mile_radius,$city) !== false) AND ($state == "NC")) { 
     echo $city ."&nbsp;"; 
 }
 else { 
     echo 'North Carolina '; 
 } 
 ?>