Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将html地理位置数据传递给php_Php_Html - Fatal编程技术网

将html地理位置数据传递给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> <

我不熟悉html和php(2小时)。 我想在日志文件中保存访问者地理位置数据和ip地址。 这是我的代码,我无法将位置数据传递到php中。 我怎么做? 我不知道我现在在做什么

<!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执行,而不是在加载页面时执行,因为此时它没有任何信息。所有代码都存在与上面相同的问题。