这个问题我已经问了很多次了,所以我试着把它弄清楚。
我有一个 HTML 页面,页面上有一个攻击和重启链接,重启链接会在您获胜后出现。
这些链接是 JavaScript:
<script type="text/javascript">
<!--
function attack() {
window.location = "attack.php?attack=1";
}
function restart() {
window.location = "battle.php?id=1&status=start";
}
-->
</script>
我想做到这一点,一旦用户点击其中一个链接(使用 javascript),它就会获取点击链接位置的 X/Y 坐标,并使用以下值将其插入数据库:
id
ip
username
x
y
restart
对于 id、ip、用户名和重启,我可以轻松地使用 MYSQL 和 PHP,但我不知道如何将 Javascript 信息插入数据库,这将是 X/Y 坐标。
最佳答案
使用 Insterstellar_coder 的 X/Y javascript 片段,您可以使用 javascript 对 php 脚本进行 ajax 调用。 ajax 调用将包含所有参数作为参数,服务器上的 php 脚本可以获得这些参数并进行数据库插入。
版本 (20111016211256-0400):添加文件以显示解决方案(据我正确理解问题):
我只研究了攻击部分。重启部分类似。
不需要 AJAX 部分,因为我利用了您的攻击并重新启动了 php 文件。
index.html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>index</title>
<script type="text/javascript" charset="utf-8">
// get continous mouse move events and keep the coordinates in tempX and tempY
// stolen from http://javascript.internet.com/page-details/mouse-coordinates.html
var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var tempX = 0;
var tempY = 0;
function getMouseXY(e) {
if (IE) { // grab the x-y pos.s if browser is IE
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
}
else { // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
}
if (tempX < 0){tempX = 0;}
if (tempY < 0){tempY = 0;}
return true;
}
var ip = "10.0.0.1";
var username = "me";
var id = "1";
function Coordinates(x,y) {
this.x = x;
this.y = y;
}
function attack(e) {
window.location = "attack.php?attack=1&x="+tempX+"&y="+tempY+"&ip="+ip+"&username="+username+"&id="+id;
}
function restart() {
window.location = "battle.php?id=1&status=start";
}
</script>
</head>
<body id="index" onload="">
<input type="button" name="attack" value="attack" id="attack" onClick="attack();">
<input type="button" name="restart" value="restart" id="restart" onClick="restart();">
</body>
</html>
攻击.php
<?php
$METHOD = '_' . $_SERVER['REQUEST_METHOD'];
foreach ($$METHOD as $key => $value) {
$$key = $value;
}
$log = array("attack" => $attack, "x" => $x, "y" => $y, "ip" => $ip, "username" => $username, "id" => $id);
//print_r($log);
try {
// assuming you use mongodb locally
$m = new Mongo();
$db = $m->mydb;
$logs = $db->logs;
$logs->insert($log, true);
} catch (Exception $e) {
echo $e;
}
?>
关于php - Javascript X/Y 坐标到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779181/