PDA

View Full Version : سوال: چطور می تونم داخل script کد php بنویسم؟



tehro0n
شنبه 16 مرداد 1389, 12:30 عصر
این اسکریپت منه که ip می گیره.. حالا می خوام این ip به مختصات تبدیل بشه که باید این مختصات رو توسط php انجام بدم.
به اسکریپت گوگل زیاد توجه نکنید که این چیه نوشته! فقط اگه می تونید کمک کنید که داخل این اسکریپت چطور میشه کدهای 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)));
<?php
$url =\"https://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];
} ?>
map.setCenter(new GLatLng($_lat,$_lon), 7);
}
}

function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}
//]]>
</script>

اینم بگم که این اسکریپت پایین که کاراییش شبیه بالاییه درست کار میکنه..
یعنی با این که جاوا توسط ویندوز کار می کنه اما میشه php توش به کار برد!


<script language="javascript">
function ehsan()
{
alert("<?php echo ("hello world!");?>");
}
</script>
<a href="#" onclick="ehsan();">a</a>

binyaft
شنبه 16 مرداد 1389, 12:55 عصر
اگر میخواهید کد های پی اچ پی در تگ <script> به جای <?php ?> استفاده کنید با ویرایش php.ini میشه
اما اگه بخواهید که مثلا یک نوشته رو با استفاده از پی اچ پی بریزید داخل یک متغیر جاوا اسکریپت به صورت زیر عمل کنید


<script>
var barname='<?php echo("Value"); ?>';
</script>

tehro0n
سه شنبه 19 مرداد 1389, 21:30 عصر
اگر میخواهید کد های پی اچ پی در تگ <script> به جای <?php ?> استفاده کنید با ویرایش php.ini میشه
اما اگه بخواهید که مثلا یک نوشته رو با استفاده از پی اچ پی بریزید داخل یک متغیر جاوا اسکریپت به صورت زیر عمل کنید


<script>
var barname='<?php echo("Value"); ?>';
</script>

خوب من هم همین کار دومی که فرمودید را انجام می دم ولی نمیشه..!
کد اولی که دادم رو شما می تونید به همین صورت بنویسید؟

binyaft
سه شنبه 19 مرداد 1389, 22:36 عصر
یعنی چی نمیشه؟؟
بیشتر توضیح بدید

tehro0n
چهارشنبه 20 مرداد 1389, 14:16 عصر
یعنی چی نمیشه؟؟
بیشتر توضیح بدید

این چیزی که شما توضیح دادید و مثال دوم من کار میکنه اما این اسکریپت که در پایینه به این صورت که می گید کار نمی کنه
می تونید الان بفرمایید این پایین رو چی کار کنم درست کار کنه؟
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)));
<?php
$url =\"https://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];
} ?>
map.setCenter(new GLatLng($_lat,$_lon), 7);
}
}

function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}
//]]>
</script>

binyaft
چهارشنبه 20 مرداد 1389, 16:44 عصر
من تست کردم
خطا برای



$url =\"https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=$ip\";

باید اینجوری بنویسی



$url ="https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=$ip";


اگه کتابخانه Curl توی پی اچ پی شما فعال باشه دیگه مشکلی نیست

tehro0n
چهارشنبه 20 مرداد 1389, 22:54 عصر
من تست کردم
خطا برای



$url =\"https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=$ip\";

باید اینجوری بنویسی



$url ="https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=$ip";
اگه کتابخانه Curl توی پی اچ پی شما فعال باشه دیگه مشکلی نیست

دوست من این مدل نوشتن برای این بوده که خطای سینتکس نده!
من کل اسکریپت رو براتون می ذارم متوجه بشید من چی می گم چون هر کاری می کنم نهایت اشتباهه!


<?php

echo "<head>
<script src='http://maps.google.com/maps?file=api&amp;v=2&key=ABQIAAAAPShWoMuiOLJ7pDHVAnPelBTosH8ouua0Huv328 8tF274NFIPVhSFfIfpIHcSTerAkB9Q9xP8tYreUg' type='text/javascript'></script>

<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)));
<?php
$url = 'https://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];
} ?>
map.setCenter(new GLatLng($_lat,$_lon), 7);
}
}

function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}
//]]>
</script>
</head>

<body onload=\"load();\" onunload=\"GUnload()\">";

$ip = '69.175.6.214';

echo "<a href=\"#\" onclick=\"googleMap($ip);\">MAP</a>

<div id=map style=\"padding-top: 5px; padding-bottom: 5px; display: none\">
<table border=\"1\" width=\"87%\" dir=\"rtl\" style=\"width:87%; border-collapse: collapse; font-family: tahoma; font-size: 9pt\" cellpadding=\"2\" bordercolor=\"#ebdbfe\">
<div style=\"CLEAR: both; width:600px; height:27px; background: #f6efff url('pic/mnu-stats-large.gif') no-repeat top; font-family:tahoma; font-weight:600; color:#444; font-size:11px; line-height:22px; text-align:right; margin-bottom:10px;\"><div style=\"PADDING-RIGHT:40px; padding-top:2px;\">موقعیت جغرافيايی بازديدکنندگان</div></div>
<div id=\"googlemap\" style=\"width:600px; height:360px; margin:0px auto; padding:0px;\"></div>
</table></div></div></body>";

?>

زمانی که این سورس را بسازید هنگام نمایش در اوپن سورس تمامی کدهای php را هم مشاهده خواهید کرد که این اشتباه است!

binyaft
پنج شنبه 21 مرداد 1389, 08:40 صبح
اینجوری دیگه نمیشه



<head>
<script src='http://maps.google.com/maps?file=api&amp;v=2&key=ABQIAAAAPShWoMuiOLJ7pDHVAnPelBTosH8ouua0Huv328 8tF274NFIPVhSFfIfpIHcSTerAkB9Q9xP8tYreUg' type='text/javascript'></script>

<script type='text/javascript'>
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)));
<?php
$url = 'https://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];
} ?>
map.setCenter(new GLatLng($_lat,$_lon), 7);
}
}

function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}
</script>
</head>

<body onload=\"load();\" onunload=\"GUnload()\">";
<?php
$ip = '69.175.6.214';

echo "<a href=\"#\" onclick=\"googleMap($ip);\">MAP</a>";
?>
<div id=map style=\"padding-top: 5px; padding-bottom: 5px; display: none\">
<table border=\"1\" width=\"87%\" dir=\"rtl\" style=\"width:87%; border-collapse: collapse; font-family: tahoma; font-size: 9pt\" cellpadding=\"2\" bordercolor=\"#ebdbfe\">
<div style=\"CLEAR: both; width:600px; height:27px; background: #f6efff url('pic/mnu-stats-large.gif') no-repeat top; font-family:tahoma; font-weight:600; color:#444; font-size:11px; line-height:22px; text-align:right; margin-bottom:10px;\"><div style=\"PADDING-RIGHT:40px; padding-top:2px;\">موقعیت جغرافيايی بازديدکنندگان</div></div>
<div id=\"googlemap\" style=\"width:600px; height:360px; margin:0px auto; padding:0px;\"></div>
</table></div></div></body>";

binyaft
پنج شنبه 21 مرداد 1389, 08:45 صبح
فکر کنم توی این خط هم مشکل داری
چون ارگومان ها داریای متغیر پی اچ پی هستند

map.setCenter(new GLatLng($_lat,$_lon), 7);

به صورت زیر بنویس

map.setCenter(new GLatLng(<?php echo $_lat; ?>,<?php echo $_lon; ?>), 7);

tehro0n
پنج شنبه 21 مرداد 1389, 16:11 عصر
اینجوری دیگه نمیشه



<head>
<script src='http://maps.google.com/maps?file=api&amp;v=2&key=ABQIAAAAPShWoMuiOLJ7pDHVAnPelBTosH8ouua0Huv328 8tF274NFIPVhSFfIfpIHcSTerAkB9Q9xP8tYreUg' type='text/javascript'></script>

<script type='text/javascript'>
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)));
<?php
$url = 'https://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];
} ?>
map.setCenter(new GLatLng($_lat,$_lon), 7);
}
}

function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}
</script>
</head>

<body onload=\"load();\" onunload=\"GUnload()\">";
<?php
$ip = '69.175.6.214';

echo "<a href=\"#\" onclick=\"googleMap($ip);\">MAP</a>";
?>
<div id=map style=\"padding-top: 5px; padding-bottom: 5px; display: none\">
<table border=\"1\" width=\"87%\" dir=\"rtl\" style=\"width:87%; border-collapse: collapse; font-family: tahoma; font-size: 9pt\" cellpadding=\"2\" bordercolor=\"#ebdbfe\">
<div style=\"CLEAR: both; width:600px; height:27px; background: #f6efff url('pic/mnu-stats-large.gif') no-repeat top; font-family:tahoma; font-weight:600; color:#444; font-size:11px; line-height:22px; text-align:right; margin-bottom:10px;\"><div style=\"PADDING-RIGHT:40px; padding-top:2px;\">موقعیت جغرافيايی بازديدکنندگان</div></div>
<div id=\"googlemap\" style=\"width:600px; height:360px; margin:0px auto; padding:0px;\"></div>
</table></div></div></body>";



ما یک ورودی به نام ip داریم و به این شکل که می نویسیم ip رو شناسایی نمی کنه

function load(ip) {
$url = 'https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=ip';اگه این ip ها در کانتری بیافته که مشکلی پیش نمیاد؟
مثلا در آن قسمت که خودمان متغیر ip$ رو مقدار دهی کردیم در کانتری بیافته که ip های متفاوتی رو جایگزین کنه..!

binyaft
پنج شنبه 21 مرداد 1389, 16:24 عصر
منوظرتون اینه که داخل دستور While یا For بذارید؟؟؟
اگه اینجوریه فکر نکنم مشکلی پیش بیاد ، برنامه کار خودش رو انجام میده

tehro0n
پنج شنبه 21 مرداد 1389, 16:46 عصر
منوظرتون اینه که داخل دستور While یا For بذارید؟؟؟
اگه اینجوریه فکر نکنم مشکلی پیش بیاد ، برنامه کار خودش رو انجام میده

قسمت اول سئوال هم میشه توضیح بدی؟
ورودی ip فکر کنم داخل 'ip$' باید قرار بگیره که وقتی وارد اسکریپت میشه به این صورت نمایش داده میشه که اشتباهه..!


$url = 'https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress='69.175.6.214'';

اگه هم داخل 'ip$' هنگام ورود قرار نگیره چون نقطه داره باز اشتباه میشه و اجرا نمیشه

tehro0n
جمعه 22 مرداد 1389, 12:22 عصر
در این سورس پایین یک مشکل وجود داره..
وقتی ip$ توسط جاوا ارسال میشه باید داخل '-' قرار داشته باشه ولی هنگام فراخوانی در اسکریپت اگر داخل '-' قرار داشته باشه آدرس اشتباه داده میشه.
پس در اینجا:

$url = 'https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=ip';
باید به صورتی دیگه ip رو فراخوانی کرد که از '-' خارج بشه!


<head>
<script src='http://maps.google.com/maps?file=api&amp;v=2&key=ABQIAAAAPShWoMuiOLJ7pDHVAnPelBTosH8ouua0Huv328 8tF274NFIPVhSFfIfpIHcSTerAkB9Q9xP8tYreUg' type='text/javascript'></script>

<script type='text/javascript'>
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)));
<?php
$url = 'https://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];
} ?>
map.setCenter(new GLatLng(<?php echo $_lat; ?>,<?php echo $_lon; ?>), 11 );
}
}

function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}
</script>
</head>

<body onload=\"load();\" onunload=\"GUnload()\">";
<?php
$ip = '69.175.6.214';

echo "<a href=\"#\" onclick=\"googleMap($ip);\">MAP</a>";
?>
<div id=map style=\"padding-top: 5px; padding-bottom: 5px; display: none\">
<table border=\"1\" width=\"87%\" dir=\"rtl\" style=\"width:87%; border-collapse: collapse; font-family: tahoma; font-size: 9pt\" cellpadding=\"2\" bordercolor=\"#ebdbfe\">
<div style=\"CLEAR: both; width:600px; height:27px; background: #f6efff url('pic/mnu-stats-large.gif') no-repeat top; font-family:tahoma; font-weight:600; color:#444; font-size:11px; line-height:22px; text-align:right; margin-bottom:10px;\"><div style=\"PADDING-RIGHT:40px; padding-top:2px;\">موقعیت جغرافيايی بازديدکنندگان</div></div>
<div id=\"googlemap\" style=\"width:600px; height:360px; margin:0px auto; padding:0px;\"></div>
</table></div></div></body>";

binyaft
جمعه 22 مرداد 1389, 13:13 عصر
میشه بیشتر توضیح بدی
یعنی چی باید داخل - قرار داشته باشه؟؟؟

tehro0n
جمعه 22 مرداد 1389, 16:09 عصر
میشه بیشتر توضیح بدی
یعنی چی باید داخل - قرار داشته باشه؟؟؟

اگه داخل تک کوتیشن نباشه ip ارسال نمیشه..

echo "<a href=\"#\" onclick=\"googleMap('$ip');\">MAP</a>";

از آن طرف هم اگه موقع فراخوانی xml داخل تک کوتیشن باشه مختصات اشتباه داده میشه

$url = 'https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=ip';

binyaft
جمعه 22 مرداد 1389, 19:17 عصر
خوب اگه متغیر داخل تک کویتشن باشه باید به صورت زیر بنویسیش

'.$var_name.'
همین :قلب:

tehro0n
جمعه 22 مرداد 1389, 22:02 عصر
خوب اگه متغیر داخل تک کویتشن باشه باید به صورت زیر بنویسیش

'.$var_name.'همین :قلب:

من این کار رو هم انجام دادم، الان شما با localhost این کد را امتحان کنید، کار نمی کنه و ip وارد اسکریپت نمیشه!


<script src='http://maps.google.com/maps?file=api&amp;v=2&key=ABQIAAAAPShWoMuiOLJ7pDHVAnPelBTosH8ouua0Huv328 8tF274NFIPVhSFfIfpIHcSTerAkB9Q9xP8tYreUg' type='text/javascript'></script>

<script type="text/javascript">
//<![CDATA[
googleMap = function load(ip) {
<?php
$ip = ip;
$url = "https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=" . ip;
$urlContent = file_get_contents($url);
if(preg_match( '/<latitude>(.*?)<\/latitude>/si' , $urlContent , $Match ))
{
$_lat = $Match[1];
}
if(preg_match( '/<latitude>(.*?)<\/latitude>/si' , $urlContent , $Match ))
{
$_lat = $Match[1];
}
if(preg_match( '/<longitude>(.*?)<\/longitude>/si' , $urlContent , $Match ))
{
$_lon = $Match[1];
}
if(preg_match( '/<country>(.*?)<\/country>/si' , $urlContent , $Match ))
{
$_country = $Match[1];
}
if(preg_match( '/<city>(.*?)<\/city>/si' , $urlContent , $Match ))
{
$_city = $Match[1];
}
?>
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("googlemap"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl(true));
map.addControl(new GOverviewMapControl(new GSize(169.2, 130.9)));
map.setCenter(new GLatLng(<?php echo $_lat; ?>,<?php echo $_lon; ?>), 11 );
map.setMapType(G_NORMAL_MAP);
map.openInfoWindow(map.getCenter(),"<br /><strong><?php echo $ip ?>, <?php echo $_city ?></strong>");
}
}

function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}
//]]>
</script>

<?php

$_ip = '95.38.43.131';
echo "<body onload=\"load();\" onunload=\"GUnload();\">

<a href=\"#\" onclick=\"googleMap('.$_ip.')\">MAP</a>
<!-- ################################################## ################################ -->
<div id=\"googlemap\" style=\"width:600px; height:360px; margin:0px; padding:0px;\"></div>
<!-- ################################################## ################################ -->

</body>";

?>

البته key گوگل اختصاص به سایت من داره ولی در localhost اجرا میشه.
ممنون از اینکه هنوز جواب میدی :دی

امیـرحسین
جمعه 22 مرداد 1389, 23:06 عصر
کدهای PHP قبل از JS پردازش میشه. یعنی وقتی اون کد PHP داره اجرا میشه، کدهای JS صرفا متن هستند.
زمانی که PHP اجرا میشه، ip وجود نداره. اون ip که شما گذاشتی به عنوان ثابت یا constant در نظر گرفته میشه.

سورس صفحه رو ببینید. به این تابع JS در سورس صفحه دقت کنید. وقتی کلیک انجام میشه، کدهایی که در سورس هستند اجرا میشه و اونجا دیگه خبری از PHP نیست.
برای اینکه کدهای PHP رو اجرا کنید باید ip رو توسط AJAX به فایل php بفرستید، پردازشهای php رو اونجا انجام بدید و مقدار مورد نیاز رو برگردونید.

tehro0n
شنبه 23 مرداد 1389, 17:17 عصر
کدهای PHP قبل از JS پردازش میشه. یعنی وقتی اون کد PHP داره اجرا میشه، کدهای JS صرفا متن هستند.
زمانی که PHP اجرا میشه، ip وجود نداره. اون ip که شما گذاشتی به عنوان ثابت یا constant در نظر گرفته میشه.

سورس صفحه رو ببینید. به این تابع JS در سورس صفحه دقت کنید. وقتی کلیک انجام میشه، کدهایی که در سورس هستند اجرا میشه و اونجا دیگه خبری از PHP نیست.
برای اینکه کدهای PHP رو اجرا کنید باید ip رو توسط AJAX به فایل php بفرستید، پردازشهای php رو اونجا انجام بدید و مقدار مورد نیاز رو برگردونید.

خوب من با ای جکس طراحی کردم ولی متاسفانه کار نمی کنه..
در واقع id شخص به فایلی به نام AjaxMap.php فرستاده میشه و در آن جا ip آن شخص توسط id پیدا و در همین لینک قدیمی قرار داده میشه.. در نهایت به صورت xml برمی گرده!

$url = "https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=" . $_ip;
$urlContent = file_get_contents($url);

این بازگشت دقیقا مانند همان صفحه geolocation می باشد، و اگه درست متوجه شده باشم با توجه به responseXML باید به صورت xml برگرده که بشه اونارو خوند..


<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src='http://maps.google.com/maps?file=api&amp;v=2&key=ABQIAAAAPShWoMuiOLJ7pDHVAnPelBTosH8ouua0Huv328 8tF274NFIPVhSFfIfpIHcSTerAkB9Q9xP8tYreUg' type='text/javascript'></script>

<script type="text/javascript" src="ajaxRequest.js"></script>

<script type="text/javascript">
//<![CDATA[
googleMap = function load(id) {
var response = document.getElementById("googlemap");
var xmlHttp = AjaxRequest();
xmlHttp.open("GET" , "AjaxMap.php?id=" + id, true);
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState == 1)
response.innerHTML = ":در حال جستجو <img src="pic/loading.gif" alt="loading" />";

if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
response.innerHTML = xmlHttp.responseXML;
}
xmlHttp.send(null);

<?php
if(preg_match( '/<latitude>(.*?)<\/latitude>/si' , response.innerHTML , $Match ))
{
$_lat = $Match[1];
}
if(preg_match( '/<latitude>(.*?)<\/latitude>/si' , response.innerHTML , $Match ))
{
$_lat = $Match[1];
}
if(preg_match( '/<longitude>(.*?)<\/longitude>/si' , response.innerHTML , $Match ))
{
$_lon = $Match[1];
}
if(preg_match( '/<country>(.*?)<\/country>/si' , response.innerHTML , $Match ))
{
$_country = $Match[1];
}
if(preg_match( '/<city>(.*?)<\/city>/si' , response.innerHTML , $Match ))
{
$_city = $Match[1];
}
?>
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("googlemap"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl(true));
map.addControl(new GOverviewMapControl(new GSize(169.2, 130.9)));
map.setCenter(new GLatLng(<?php echo $_lat; ?>,<?php echo $_lon; ?>), 11 );
map.setMapType(G_NORMAL_MAP);
map.openInfoWindow(map.getCenter(),"<br /><strong><?php echo $ip ?>, <?php echo $_city ?></strong>");
}
}

function GUnload()
{
if (window.GUnloadApi)
{
GUnloadApi();
}
}
//]]>
</script>
</head>

<?php

$_id = 90;
echo "<body onload=\"load();\" onunload=\"GUnload();\">

<a href=\"#\" onclick=\"javascript:googleMap($_id)\">MAP</a>
<!-- ################################################## ################################ -->
<div id=\"googlemap\" style=\"width:600px; height:360px; margin:0px; padding:0px;\"></div>
<!-- ################################################## ################################ -->

</body>";

?>

امیـرحسین
یک شنبه 24 مرداد 1389, 09:33 صبح
این کد رو ببینید:
<html>
<head>
<script type="text/javascript">
<?php
$func = 'alert';
$value = 'hello';
echo $func.'("'.$value.'");'
?>
</script>
</head>
</html>

کد PHP اجرا میشه و کد زیر به صفحه فرستاده میشه:
<html>
<head>
<script type="text/javascript">


alert("hello");

</script>
</head>
</html>
هر مدل دیگه ای از ادغام این دو زبان غلطه!
توی کد شما، اون PHP ها زمانی اجرا میشه که بقیه محتویات صفحه یک مشت متن هستند. PHP در سرور اجرا میشه و JS در مرورگر. زمانیکه PHP داره در سرور پردازش میشه، مرورگری وجود نداره که بخواد JS رو اجرا کنه. PHP کارش تموم میشه و محتویات رو به مرورگر میفرسته. زمانی که محتویات به مرورگر رسید، JS ها شروع به اجرا می کنند و دیگه خبری از کدهای PHP نیست چون قبلا کاملا پردازش شده.

شما که دارید XML برمی گردونید، این responseXML رو باید توسط JS پردازش کنید. درضمن برای responseXML، در PHP باید هدر XML رو هم ارسال کنید. یعنی فایل باید شبیه این باشه:
<?php
/*
* AjaxMap.php
*/

$id = isset($_GET['id']) ? intval($_GET['id']) : null;
//
// get IP from database
//
$url = "https://secure.geobytes.com/IpLocator.htm?GetLocation&template=xml.txt&IpAddress=" . $_ip;
$urlContent = file_get_contents($url);

header("Content-Type: text/xml");
echo $urlContent;
?>


این مقاله ها رو ببینید:

XML Message (http://ajaxpatterns.org/XML_Message)
AJAX XML Example (http://www.w3schools.com/ajax/ajax_xmlfile.asp)
AJAX/Javascript XML Processing Example/Tutorial (http://www.captain.at/howto-ajax-process-xml.php)

tehro0n
یک شنبه 24 مرداد 1389, 12:17 عصر
این کد رو ببینید:

این مقاله ها رو ببینید:

XML Message (http://ajaxpatterns.org/XML_Message)
AJAX XML Example (http://www.w3schools.com/ajax/ajax_xmlfile.asp)
AJAX/Javascript XML Processing Example/Tutorial (http://www.captain.at/howto-ajax-process-xml.php)



من به صورت text هم بر می گردونم نمیشه
مشکل از نحوه ارساله..

من که قرار نیست با input بفرستم..!

<a href=\"#\" onclick=\"javascript:googleMap($_id)\">MAP</a>
<script type="text/javascript">
//<![CDATA[
googleMap = function load(id) {
var response = document.getElementById("googlemap");
var xmlHttp = AjaxRequest();
xmlHttp.open("GET" , "AjaxMap.php?id=" + id, true);
.
.
.