我想问一下,如何让PHP会话变量等于Javascript值?
我想要实现的目标是:
$_SESSION['lat'] = Javascript geolocation latitude value;
$_SESSION['lng'] = Javascript geolocation longitude value;
我目前拥有的JS地理位置功能是:
<script>
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
document.getElementById('inputfield3').value = position.coords.latitude;
document.getElementById('inputfield4').value = position.coords.longitude;
}
</script>
如何使用getLocation()使$ _SESSION ['lat']和$ _SESSION ['lng']等于纬度和经度?
因为我需要$ _SESSION ['lat']和$ _SESSION ['lng']来在我的数据库中进行SELECT。谢谢。
答案 0 :(得分:1)
正如我们从对这两种语言的基本理解中所知道的那样;
我们也知道我们可以通过AJAX调用调用从客户端到服务器的请求。我建议调查一下来解决你的问题。
答案 1 :(得分:1)
您可以使用Ajax:
var httpRequest = null;
function getHttpObject()
{
if (httpRequest != null)
return;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
document.getElementById('inputfield3').value = position.coords.latitude;
document.getElementById('inputfield4').value = position.coords.longitude;
getHttpObject();
// I don't know how to get the positions for showPosition, so you may have to change this part.
httpRequest.open("GET", "set_position.php?lat=" + position.coords.latitude + "&lon=" + position.coords.longitude, true);
httpRequest.onreadystatechange = function()
{
if (httpRequest.readyState == 4 && httpRequest.status == 200)
{
// Handle the response here. Show error or success message or whatever...
}
};
httpRequest.send(null);
}
然后在您的PHP脚本上,您可以将值设置为会话,验证它并验证值(当然)。
注意:这是一个世纪,我不在纯JS中编写ajax。请警告我错误。
<强>更新强>
根据this和this文档,我已修复了使用getCurrentPosition
回调的方式。
更新2:
您可以使用常用方法使用form
将数据发送到数据库。忘记上面的一切,试试这个:
假设您有这样的表格:
<form method="post" action="set_positions.php" id="form1">
<input type="text" id="inputField3" />
<input type="text" id="inputField4" />
</form>
试试这个JS代码:
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
document.getElementById('inputfield3').value = position.coords.latitude;
document.getElementById('inputfield4').value = position.coords.longitude;
document.getElementById('form1').submit();
}
因此,您将在PHP脚本中收到这些字段。请注意,如果您不希望用户更改其值,那么这些字段也可以是hidden
字段。
答案 2 :(得分:1)
可能会对你有帮助,
你可以使用COOKIE和JAVASCRIPT ......
见下面的功能......
function setCookie(cname, cvalue, exhour)
{
var d = new Date();
d.setTime(d.getTime()+(exhour*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + "path=/" + "; " + expires;
}
function getCookie(cname)
{
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++)
{
var c = ca[i].trim();
if (c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return "";
}
您可以使用$_COOKIE
在PHP(服务器端)中获取COOKIE信息...