繁体   English   中英

雅虎服务的PHP和XML帮助

[英]help with php and xml for yahoo service

我正在为社交网络编写PHP代码,我打算做的是关于用户注册或个人资料更新,我将在那里输入他们输入的邮政编码,并使用yahoo从那里查找那里的纬度和经度,然后将其保存。用户mysql表的值,以后将用它来查找位于距用户X英里以内的用户。

到目前为止,这是我的代码,以便在存储到数据库之前获取此信息

<?PHP
function yahoo_geo($location) {
    $q = 'http://api.local.yahoo.com/MapsService/V1/geocode';
    q .= '?appid=rlerdorf&location='.rawurlencode($location);
    echo $q;
    libxml_use_internal_errors(true);
    $xml = simplexml_load_file($q); 
    if(!is_object($xml)) return false;
    $ret['precision'] = (string)$xml->Result['precision'];
    foreach($xml->Result->children() as $key=>$val) {
        if(strlen($val)){
            $ret[(string)$key] =  (string)$val;
        } 
    return $ret;
}

$_REQUEST['location'] = 32744; // my zip code
$a = yahoo_geo($_REQUEST['location']);

// set retunred data to some variables for storage into MySQL
$latitude = $a[Latitude];
$longitude = $a[Longitude];

    // MySQL code will go here

// Output for demo
echo 'Lattitude' .$latitude. '<BR><BR>';
echo 'Longitude' .$longitude. '<BR><BR>';
?>

这很有效,除非很长。 和拉特。 找不到,它向浏览器返回错误

Warning: simplexml_load_file(http://api.local.yahoo.com/MapsService/V1/geocode?appid=rlerdorf&location=some non zipcode) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in C:\webserver\htdocs\test\geolocation\index.php on line 16

注意; 我可以确保邮政编码仅是数字,但我宁愿不要这样做,因为yahoo也可以让我搜索其他字段,因此,如果用户未输入邮政编码,我会使其在更糟糕的情况下使用城市或州或国家/地区情况下,每个用户都应具有某种经度和纬度。 保存

有没有一种好的方法来避免显示错误,或者更好的是有一种方法来检测id是否存在错误,如果发生错误,我可以为该用户插入默认值?

不完全确定您的问题是什么,但是我认为您正在寻找错误控制运算符@

xml = @simplexml_load_file($q);

然后,您的函数将照常返回false。 不过,您需要稍后进行检查(并添加一些引号):

if (!$a)
{
    // Do something
}
else
{
    $latitude = $a['Latitude'];
    $longitude = $a['Longitude'];
}

使用@运算符:

  • 您每次需要时都必须使用它
  • 当您要调试时,必须将其从所有位置删除(或使用scream扩展名-根据主机服务的不同,您可能无法始终安装该扩展名)
  • 如果您没有在@处输入错误,它将仍然显示给用户。

另一个解决方案是在生产服务器上时,在脚本开头使用类似以下内容的方法:

ini_set('display_errors', 'Off');

这样,即使在您未曾想到的情况下,也不会向最终用户显示任何错误(他们不需要查看这些错误,并且可能不会理解) 而且很容易将所有错误显示在您的开发机器上:只需在线评论;-)

注意:在生产环境中,如果可以根据需要设置配置,则可以将错误记录到文件中。 这样,您可以检查这些内容,而不显示它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM