PDA

View Full Version : سوال: خواندن xml



tehro0n
پنج شنبه 14 مرداد 1389, 19:11 عصر
من یک سری اطلاعات xml دارم و می خوام این اطلاعات رو در متغیرهای php بریزم.


92.42.52.10 115 Iran IR IR IRN 364 IR 2215 Mazandaran MN IR35 41873 Sari 36.5680 53.0590 +03:50 90 IRMNSARI 92.42.52.10اول و آخر این داده ها ip می باشد و سایر اطلاعات با فاصله از هم نوشته شده.

xml

https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=92.42.52.10
هدف من گرفتن 36.5680 و 53.0590 که به ترتیب می خوام در lat$ و lon$ ذخیره کنم.
ممنون می شم اگه با این روش بگید چیکار باید بکنم؟ البته اینم بگم که این داده ها تغییر می کنند ولی محل قرار گیریشون همون (با فاصله) از داده قبلیه!

rapidpich
جمعه 15 مرداد 1389, 10:21 صبح
یه کلاس هست اسمش simplexml هست

البته اینم بگم که این داده ها تغییر می کنند ولی محل قرار گیریشون همون (با فاصله) از داده قبلیه!

سورس صفحه رو نیگا کن

yasgig
جمعه 15 مرداد 1389, 11:05 صبح
<?php
$ip = $_GET['ip'];
$url ="http://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=$ip";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
ob_start();
$html=curl_exec($ch);
ob_end_clean();
curl_close ($ch);
if(preg_match( '/<latitude>(.*?)<\/latitude>/si' , $html , $Match ))
{
$lat = $Match[1];
}
if(preg_match( '/<longitude>(.*?)<\/longitude>/si' , $html , $Match ))
{
$lon = $Match[1];
}
echo $lat;
echo "<br>";
echo $lon;
?>کد بالا رو به صورت زیر اجرا کن:
http://example.com/filename.php?ip=92.42.52.10
ولی اطلاعات رو کلا واسه من غلط نشون داد.فکر کنم سایت معتبری نیست.حداقل اگه می گفت آی پی من ایرانیه شکی نمی کردم.من کجا و چین کجا.

tehro0n
جمعه 15 مرداد 1389, 12:42 عصر
یه کلاس هست اسمش simplexml هست


سورس صفحه رو نیگا کن

آره من سورس صفحه رو نگاه کردم و بر اساس اون متغیرهارو دراوردم، ولی بعد از چند بار فایل لود نمی شد در صورتی که این صفحه درست کار میکرد!

tehro0n
جمعه 15 مرداد 1389, 13:21 عصر
<?php
$ip = $_GET['ip'];
$url ="http://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=$ip";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
ob_start();
$html=curl_exec($ch);
ob_end_clean();
curl_close ($ch);
if(preg_match( '/<latitude>(.*?)<\/latitude>/si' , $html , $Match ))
{
$lat = $Match[1];
}
if(preg_match( '/<longitude>(.*?)<\/longitude>/si' , $html , $Match ))
{
$lon = $Match[1];
}
echo $lat;
echo "<br>";
echo $lon;
?>کد بالا رو به صورت زیر اجرا کن:
http://example.com/filename.php?ip=92.42.52.10
ولی اطلاعات رو کلا واسه من غلط نشون داد.فکر کنم سایت معتبری نیست.حداقل اگه می گفت آی پی من ایرانیه شکی نمی کردم.من کجا و چین کجا.

درسته اینم کار می کنه :چشمک:
اما یک مسئله مهم اینه که اگه تو یه کانتر بره و زیاد لود بشه ممکنه بن شم، پس یک onclick با ورودی ip در نظر می گیرم..
حالا سئوال اینجاس که اگه چنین شکلی بشه آیا میشه این سورس php رو وارد اسکریپت گوگل مپ کرد؟


<script type='text/javascript'>
//<![CDATA[
googleMap = function load(ip) {
document.getElementById('map').style.display='bloc k';
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById('googlemap'));
map.addControl(new GLargeMapControl());
map.addControl(new GOverviewMapControl(new GSize(169.2, 130.9)));
map.setCenter(new GLatLng($lat,$lon), 7);
}
}

function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}
//]]>
</script>
<a href=\"#\" onclick=\"googleMap($ip);\"></a>این آی پی وارد اسکریپت بالا بشه و داخل این اسکریپت این کدی را که معرفی کردید اجرا بشه
یک مشکل دیگه که خواندن سورس شما داشت این بود که تنها یک مختصات رو در کانتری که دارای آی پی های متفاوت بود نمایش می داد!

tehro0n
چهارشنبه 20 مرداد 1389, 15:45 عصر
<?php
$ip = $_GET['ip'];
$url ="http://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=$ip";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
ob_start();
$html=curl_exec($ch);
ob_end_clean();
curl_close ($ch);
if(preg_match( '/<latitude>(.*?)<\/latitude>/si' , $html , $Match ))
{
$lat = $Match[1];
}
if(preg_match( '/<longitude>(.*?)<\/longitude>/si' , $html , $Match ))
{
$lon = $Match[1];
}
echo $lat;
echo "<br>";
echo $lon;
?>کد بالا رو به صورت زیر اجرا کن:
http://example.com/filename.php?ip=92.42.52.10
ولی اطلاعات رو کلا واسه من غلط نشون داد.فکر کنم سایت معتبری نیست.حداقل اگه می گفت آی پی من ایرانیه شکی نمی کردم.من کجا و چین کجا.

اینجا که درسته.. فقط ایرادش اینه که وقتی تو کانتر می افته و می خواد مختصات چند تا ip رو پیدا کنه تنها اولین ip رو بررسی می کنه و سایر مختصات دیگه همون اولی میشن!
این لینک رو مشاهده کنید.. روی هر پرچمی کلیک کنید همه یک مختصات رو نشان می دن!

http://counter.toolsir.com/results.php?id=6