yahoo hizmet için php ve xml ile yardımcı

2 Cevap php

I am working on a PHP code for my social network, what I am planning to do is on user signup or profile update I will take there zipcode that they enter and use yahoo to lookup there lattitude and logitude from there zipcode I will then save these value to there user mysql table, this will be used later on to find users located within X amount of miles from them.

İşte benim kod DB içine saklamadan önce bu bilgi almak için şimdiye kadar

<?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>';
?>

Bu uzun eğer dışında harika çalışıyor. ve lat. Bu tarayıcıda bir hata döndürür bulunamadı

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

Not; Ben posta kodu yalnızca sayısal olduğundan emin olabilir ama ben daha ziyade değil yahoo gibi benim de diğer alanları ile arama izin kalacak, böylece kullanıcının bir posta kodu girin yoksa ben kötü bir şehri veya ülkeyi hatta ülkeyi kullanma yapacak dava böylece her kullanıcı boylam ve enlem çeşit olmalıdır. kaydedilmiş

Hata gösteren önlemek için iyi bir yolu var mı ya da orada daha iyi bir hatadır ve bir hata oluşursa ben o kullanıcı için bir varsayılan değer eklemek olabilir id algılamak için bir yolu var mı?

2 Cevap

Tam olarak emin değil ne soru, ama error control operator @ arıyorsanız düşünüyorum

xml = @simplexml_load_file($q);

Your function will then return false as normal. You need to check that later though (and add some quotes):

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

@ operatörü ile:

  • Eğer her şey bunu kullanmak zorunda bunu gerekir
  • ayıklamak istediğiniz zaman, her yerde çıkarın (- her zaman kuramazsınız, barındırma hizmetine bağlı olarak veya scream uzantısı kullanmak gerekiyor)
  • Bir hata varsa bir yere @, yine kullanıcıya gösterilecektir koymadı.

Başka bir çözüm üretim sunucu üzerinde zaman, senaryonun başlangıcında böyle bir şey kullanmak olacaktır:

ini_set('display_errors', 'Off');

Bu şekilde, herhangi bir hata hiç bile düşünmek vermedi durumlarda, son kullanıcı (they don't need to see those, and probably wouldn't understand) görüntülenir; ve geliştirme makine üzerinde görüntülenen tüm hataları almak kolay: Sadece on line yorum yapmak ;-)

Not: İstediğiniz gibi yapılandırmasını ayarlayabilirsiniz eğer üretim, bir dosyaya hataları oturum imkanı vardır; bu şekilde, bu kontrol ve onları görüntülenen olamaz.