2017-04-11 142 views
0

警报响应我想OT找出客场取得本网站的响应: https://www.primarycare.nhs.uk/publicfn/catchment.aspx?oc=P91012&h=600&w=800&if=0获得来自外部网站

OC = P91012 - 这是惯例标识。

然后我们有一个邮政编码场,其中用户检查,如果他们是在集水区

该网站发出JavaScript警告如果他们/或不在集水区通知用户。

是否可以发送PHP Curl请求,向本网站发送邮政编码并检查邮政编码是否位于集水区,并将回复发送回我的网站?

<?php 
$POSTurl = 'https://www.primarycare.nhs.uk/publicfn/geocode.ashx'; 
$fields = array(
'postcode' => urlencode('M41 0UX'), 
); 

foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
rtrim($fields_string, '&'); 

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, $POSTurl); 
curl_setopt($ch,CURLOPT_POST, count($fields)); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); 
$result = curl_exec($ch); 



$url = 'https://www.primarycare.nhs.uk/publicfn/catchment.aspx?oc=P91012&h=600&w=800&if=0'; 
$ch = curl_init(); 
$result = curl_exec($ch); 


curl_close($ch); 

?> 
+0

,有你的尝试? – hassan

+0

我有,我可以发送一个curl post请求到不同的oc代码和邮政编码的网站,但那是它结束了我,我不知道如何收到JavaScript警报。 – memaxt

+0

您的代码返回''53.4519424438477; -2.3516891002655''。但是你想在alert中显示相同的回报? – Tauras

回答

0

所以,在这里,它是:

的问题,为什么你不是不能挑适当的反应是因为所有有效坐标是NHS的源代码。我删除了不需要的代码,并通过邮编和列表中的现有坐标检查坐标。请记住,如果原始数据源中的任何内容都将在列表中进行更改,则还需要进行更新。

此外,此代码,技术上是不是100%正确并且可能你会花更多的时间使它更正确地满足您的需求。正如我在评论中所说的那样,这将起到一点作用。

只需复制/粘贴到您的PHP文件,并刷新页面。

代码: '?难道......'

<?php 
$postcode = 'M41 0UX'; 
$postcode = urlencode($postcode); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://www.primarycare.nhs.uk/publicfn/geocode.ashx"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "PostCode=".$postcode); 
curl_setopt($ch, CURLOPT_POST, 1); 
$result = curl_exec($ch); 
if (curl_errno($ch)) { 
echo 'Error:' . curl_error($ch); 
} 
else { 
echo $result; 
echo '<input id="checker" type="hidden" value="'.$result.'" />'; 
?> 
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
<script src="https://www.primarycare.nhs.uk/Private/js/gpos.js" type="text/javascript"></script> 
<script type="text/javascript" src="https://maps-api-ssl.google.com/maps/api/js?v=3.7&sensor=false"></script> 
<script type="text/javascript"> 
var point; 
var poly1=[{x:53.45801,y: -2.33768},{x:53.46046,y: -2.32996},{x:53.45882,y: -2.32447},{x:53.45637,y: -2.3188},{x:53.45351,y: -2.31709},{x:53.44932,y: -2.31468},{x:53.44523,y: -2.31365},{x:53.44216,y: -2.31279},{x:53.43961,y: -2.31417},{x:53.43858,y: -2.31657},{x:53.4394,y: -2.32155},{x:53.44001,y: -2.32893},{x:53.44145,y: -2.33408},{x:53.44329,y: -2.33751},{x:53.44053,y: -2.33648},{x:53.4395,y: -2.34095},{x:53.43838,y: -2.34352},{x:53.44083,y: -2.34627},{x:53.44022,y: -2.35107},{x:53.43899,y: -2.35193},{x:53.43787,y: -2.35107},{x:53.43797,y: -2.35399},{x:53.43715,y: -2.35622},{x:53.43562,y: -2.3576},{x:53.43592,y: -2.35949},{x:53.43449,y: -2.36103},{x:53.43275,y: -2.36017},{x:53.43153,y: -2.36137},{x:53.43275,y: -2.36343},{x:53.43183,y: -2.36515},{x:53.43347,y: -2.36738},{x:53.4349,y: -2.36704},{x:53.43664,y: -2.36738},{x:53.43736,y: -2.3679},{x:53.43705,y: -2.37167},{x:53.43725,y: -2.37459},{x:53.43592,y: -2.37511},{x:53.43664,y: -2.377},{x:53.43623,y: -2.37974},{x:53.43787,y: -2.38077},{x:53.43858,y: -2.37888},{x:53.4395,y: -2.3782},{x:53.43981,y: -2.38197},{x:53.4392,y: -2.38403},{x:53.43797,y: -2.38352},{x:53.43848,y: -2.38609},{x:53.4395,y: -2.38592},{x:53.44073,y: -2.3842},{x:53.44063,y: -2.38747},{x:53.44001,y: -2.3909},{x:53.43776,y: -2.39193},{x:53.43603,y: -2.39141},{x:53.4348,y: -2.38884},{x:53.43255,y: -2.39038},{x:53.43388,y: -2.39553},{x:53.43459,y: -2.39914},{x:53.43684,y: -2.40051},{x:53.43766,y: -2.40223},{x:53.4394,y: -2.4012},{x:53.44012,y: -2.40429},{x:53.4394,y: -2.40824},{x:53.43868,y: -2.41219},{x:53.44533,y: -2.40807},{x:53.4485,y: -2.40669},{x:53.4529,y: -2.40309},{x:53.45545,y: -2.39965},{x:53.45995,y: -2.39313},{x:53.46363,y: -2.38438},{x:53.46608,y: -2.37614},{x:53.46894,y: -2.3703},{x:53.46588,y: -2.36532},{x:53.46455,y: -2.35931},{x:53.46281,y: -2.35296},{x:53.46158,y: -2.3461},{x:53.45995,y: -2.34198},{x:53.4577,y: -2.33974}]; 

function isPointInPoly(poly, pt){ 
for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) 
((poly[i].y <= pt.y && pt.y < poly[j].y) || (poly[j].y <= pt.y && pt.y < poly[i].y)) 
&& (pt.x < (poly[j].x - poly[i].x) * (pt.y - poly[i].y)/(poly[j].y - poly[i].y) + poly[i].x) 
&& (c = !c); 
return c; 
}; 

function ispostcodein(postcode) { 
var ok = 1; 
if (ok == 1) { 
var responseText = $('#checker').val(); 
point = responseText.split(';'); 
} 
var incatch = 0; 
if (isPointInPoly(poly1, {x: point[0],y: point[1]})) { incatch = 1 }; 
if (incatch==0) { 
alert("We're sorry, but your postcode is outside the catchment area for PRIMROSE AVENUE SURGERY."); 
} 
else { 
alert("Your postcode is in the catchment area for PRIMROSE AVENUE SURGERY. You are able to register with this practice."); 
}       
} 

ispostcodein('<?= $result; ?>'); 
</script> 
<?php 
} 
curl_close($ch); 
?> 
+0

你是上帝!这工作正如我想要的一样!我稍微修改了它,因为一些源代码根据oc改变了...但是我不能够感谢你了......再次感谢你花时间来帮助这个! – memaxt

+0

你也可以upvote:D祝你好运与你的代码:) – Tauras