php - 如何修复基于地理位置的回显输出的php代码
问题描述
如果该城市位于德克萨斯州,我正在尝试使用 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>
如果访客的位置在德克萨斯州,我希望在“服务”之前显示城市(例如:“达拉斯服务”)。如果访客的位置不在德克萨斯州,我希望显示“德克萨斯州”(例如:“德克萨斯州服务”)。
在添加 if...else 语句并仅echo "". $cityfromip ."";
使用页面之前将显示城市(无论是什么州)。使用 if...else 语句,不显示城市。我的代码哪里出错了?
解决方案
杰克的回答有所帮助,我能够使用以下方法提出一个可行的解决方案:
<?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 ." ";
}
else {
echo 'North Carolina ';
}
?>
推荐阅读
- iis - IIS 没有为 .NET Core 使用正确的版本 - 如何管理?
- mongodb - 如何使用 Spring Boot 框架使用 Elasticsearch 搜索功能并通过 MongoDB 进行插入?
- c++ - 在 MinGW 中使用 DLL 包装 Windows PackageManager
- tcl - 在 TCL/Tk tablelist 单元格中格式化字符串的一部分
- c# - 为多用户 windows 应用程序设置服务器 IP
- java - 带有特殊字符(“\N”、“\S”和“\T”)的 JDBC 查询插入
- java - 如何检查列表列表中的对象是否为空或空?
- angular - Angular 6 - 从表单外部验证和提交表单
- jquery - 为什么 React 的性能优于使用 JQuery 的直接 DOM 操作?
- c# - 从管理员程序以用户身份启动程序