2011-02-25 193 views
0

我有以下代码...奇怪的PHP问题

<?php 
    session_start(); 
    require_once('myDB.php'); 
    if (isset($_POST)) 
    { 
    foreach($GLOBALS['myDB']->getShops()as $i) 
    { 
     $tempLat = $i['latitude']; 
     $templong = $i['longitude']; 
     $distance = distance($_POST['latitude'],$_POST['longitude'],$tempLat,$templong); 
     if($distance <= 300) 
     { 
      echo "".$i['id']."|".$i['shopName']."|".$i['longitude']."|".$i['latitude']."|".$i['advert']."|"; 
     }  
    } 
    } 
    function distance($lat1, $lon1, $lat2, $lon2) { 
    $theta = $lon1 - $lon2; 
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
    $dist = acos($dist); 
    $dist = rad2deg($dist); 
    $miles = $dist * 60 * 1.1515; 
    return (($miles * 1.609344)*1000); 
} 
?> 

现在,当我能看到该网页它给了我错误324(净值:: ERR_EMPTY_RESPONSE)和它说,该网站可能暂时关闭...如果我尝试打开使用Firefox的页面,它会打开一个对话框,下载PHP文件...

我想要做的是让它打印回声(如果距离是在事实上大于300米)或者什么也没有,但它应该仍然是一个空的HTML页面...

任何人都可以看到最新的错吗?

注:该代码工作正常,在本地却没有关于我server..however按预期工作所有其他页面,以便服务器和运行...

+1

'错误324'是Chrome的错误代码,(可能)不具有任何与你的PHP。你可以发布你的浏览器在你尝试加载页面时得到的'headers'吗? – drudge

+0

@jnpcl我试过不同的浏览器,甚至不同的电脑,并仍然是相同的...在标题中说,该页面不可用... – mixkat

+0

得到提示下载.php文件,而不是得到它的输出意味着什么东西吹了过去甚至PHP的内部处理程序都可以捕获它。检查服务器的错误日志中是否有任何看起来相关的内容。 –

回答

0

好一个注释掉,并取消注释每行一个后,我发现那里的问题是...

foreach($GLOBALS['myDB']->getShops()as $i) 

在数据库中的查询是因为设置为LONGTEXT一个字段的类型的失败.. 。

毫无意义可言,但改变这种为VARCHAR解决了这一问题...

+0

这应该是在你原来的问题作为更新而不是答案。 – Serge

+0

@Serge如何回合?起初我以为我解决它并把它作为一个答案,但后来证明我错了......这绝对是现在的答案,但... – mixkat

0

如果我看了你的代码的权利,你只打算如果$ distance> 300则得到回应。需要考虑的事情。

+0

这是正确的,但Im传入的值肯定会返回<300 – mixkat

0

答案是在您的IF之后放置一个ELSE语句。你会看到它只是打印一个HTML框架。

显然,你会想要一个doctype声明,也许一个不错的消息,说“无结果”,但你的想法...

<?php 
    session_start(); 
    require_once('myDB.php'); 
    if (isset($_POST)) 
    { 
    foreach($GLOBALS['myDB']->getShops()as $i) 
    { 
     $tempLat = $i['latitude']; 
     $templong = $i['longitude']; 
     $distance = distance($_POST['latitude'],$_POST['longitude'],$tempLat,$templong); 
     if($distance <= 300) 
     { 
      echo "".$i['id']."|".$i['shopName']."|".$i['longitude']."|".$i['latitude']."|".$i['advert']."|"; 
     }  
    } 
    } 
else{ 
    print '<html><Head><title></title></Head><body></body></html>'; 
} 
    function distance($lat1, $lon1, $lat2, $lon2) { 
    $theta = $lon1 - $lon2; 
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
    $dist = acos($dist); 
    $dist = rad2deg($dist); 
    $miles = $dist * 60 * 1.1515; 
    return (($miles * 1.609344)*1000); 
} 
?> 

如果你仍然得到一个错误,是东西包含错误(您需要发布),或者IF中的某个内容抛出异常。

你有错误报告吗?你有没有检查你的网络服务器日志?你是否试过在try/catch中包装可疑操作?

+0

@cinqoTimo这不是真的,即使在php中没有任何东西,它仍然呈现为空白页面......至少在我的情况下......无论如何感谢回复...... – mixkat

+0

@mixkat:你在服务器上有其他PHP页面吗? – drudge

+0

@cinqoTimo Yup刚刚编辑帖子以及...所有工作正常,甚至在本地,即使这个工作正常,但由于某种原因在服务器上没有... – mixkat