将html地理位置数据传递给php
我不熟悉html和php(2小时)。 我想在日志文件中保存访问者地理位置数据和ip地址。 这是我的代码,我无法将位置数据传递到php中。 我怎么做? 我不知道我现在在做什么将html地理位置数据传递给php,php,html,Php,Html,我不熟悉html和php(2小时)。 我想在日志文件中保存访问者地理位置数据和ip地址。 这是我的代码,我无法将位置数据传递到php中。 我怎么做? 我不知道我现在在做什么 <!DOCTYPE html> <html> <body> <p id="demo">Dont click it</p> <button onclick="getLocation()">Try It Anyway</button> <
<!DOCTYPE html>
<html>
<body>
<p id="demo">Dont click it</p>
<button onclick="getLocation()">Try It Anyway</button>
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.watchPosition(showPosition);
{enableHighAccuracy:true}
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
localStorage.loc= "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
x.innerHTML=localStorage.getItem("loc");
locOfSluts=localStorage.getItem("loc");
}
</script>
<?php
$$locofsluts = $_POST["locOfSluts"];
$contfile = fopen("NumOfSluts.log", "r");
$cont = fread($contfile,filesize("NumOfSluts.log"));
fclose($contfile );
$cont = $cont+1;
$contfile = fopen("NumOfSluts.log", "w");
fwrite($contfile , $cont);
fclose($contfile );
$log = fopen("log.log", "a") or die("Unable to open file!");
$ipOfSluts = $_SERVER["REMOTE_ADDR"]."\n";
fwrite($log, date("Y-m-d-h:i:s")."\n");
fwrite($log, $ipOfSluts);
fwrite($log, $locofsluts);
fclose($log);
?>
</body>
</html>
不要单击它
无论如何,试试看
var x=document.getElementById(“演示”);
函数getLocation()
{
if(导航器.地理位置)
{
导航器、地理位置、监视位置(showPosition);
{enableHighAccurance:true}
}
else{x.innerHTML=“此浏览器不支持地理位置。”;}
}
功能显示位置(位置)
{
localStorage.loc=“Latitude:+position.coords.Latitude+
“
经度:”+position.coords.Longitude;
x、 innerHTML=localStorage.getItem(“loc”);
locOfSluts=localStorage.getItem(“loc”);
}
由于PHP是在服务器上执行的,而JavaScript是在浏览器的客户端执行的,因此不能简单地将信息从JavaScript传递给PHP
归档的唯一方法是创建一个额外的PHP脚本,保存一些参数给出的信息,并使用AJAX打开对该PHP文件的新请求
问题的详细信息:
您可以在JavaScript中声明$loc
,并在PHP中使用它。通常不可能跨多种编程语言使用变量
在这种情况下,请确保您了解PHP和JavaScript之间的区别:
如果您在web服务器上请求一个文件,PHP脚本将开始运行并生成HTML响应(因此,将计算这两个脚本之间的所有内容),所有这些内容的输出将发送到客户端。通常,与服务器的连接会在之后关闭
因此,脚本中的PHP部分已经在服务器上运行,并且没有提供给客户机(客户机无论如何都无法运行PHP,因为它无法在服务器上写入文件)。现在,浏览器开始解析HTML结果并为您构建网页。文档准备好后,浏览器的web引擎将执行JavaScript并收集地理信息
因此,当考虑到这一点时,您将看到您的代码由于许多不同的原因无法工作
解决方案的详细信息:
您需要为此制定一个异步解决方案。因此,您的服务器上应该有一个没有特定输出的.php文件。它所做的唯一事情就是将通过GET参数提供的信息保存到日志文件中
现在,在您的网站上,您需要一个获取地理位置数据的JavaScript代码,当它成功时,它应该打开到您的.php文件的新连接,并将要保存为参数的信息传递给.php脚本。使用jQuery时,情况如下所示:
$.ajax({
url: 'save.php?lang='+lang+'&lat='+lat,
}).done(function() {
alert('Information saved');
})
首先,将变量($ipOfSluts)推送到未声明的文件中。它应该是$ipOfvisI dont undersandm,我应该把$.ajax代码放在哪里,它做什么?是否将html地理数据保存到url?那么服务器将如何对此作出响应?$.ajax应该在客户端运行吗?如何为每个客户端部署iquery?$.ajax()是jQuery(JavaScript),因此它应该在浏览器上运行。它在后台打开(页面和所有内容加载后)对新文件的新请求并加载其结果。但在本例中,我们对输出不感兴趣,而是对向该脚本传递数据感兴趣。检查文档:-您应该在成功加载地理位置数据时使用它。PHP部分应该在一个单独的文件中,由AJAX执行,而不是在加载页面时执行,因为此时它没有任何信息。所有代码都存在与上面相同的问题。