【发布时间】:2013-03-05 02:27:01
【问题描述】:
由于没有更好的术语,我有一个“链接”到 onClick 事件的 switch 语句。当开关中有一个案例时,它可以工作。当所有四个案例都处于活动状态时,它们都不起作用。感谢您提供任何帮助/建议,非常感谢您真正。
代码如下:
PHP 文件(mapcontroller.php):
function playerMove($direction)
{
Global $mysqli;
$sqlMoveNorth = "UPDATE ss_character SET coord_y = coord_y + 1 WHERE username = '".$_SESSION['usr']."'";
$sqlMoveSouth = "UPDATE ss_character SET coord_y = coord_y - 1 WHERE username = '".$_SESSION['usr']."'";
$sqlMoveEast = "UPDATE ss_character SET coord_x = coord_X + 1 WHERE username = '".$_SESSION['usr']."'";
$sqlMoveWest = "UPDATE ss_character SET coord_x = coord_X - 1 WHERE username = '".$_SESSION['usr']."'";
switch ($direction)
{
case "north":
mysqli_query($mysqli, $sqlMoveNorth);
break;
case "south":
mysqli_query($mysqli, $sqlMoveSouth);
break;
case "east":
mysqli_query($mysqli, $sqlMoveEast);
break;
case "west":
mysqli_query($mysqli, $sqlMoveWest);
break;
default:
echo "Pick something!";
break;
}
}
HTML 文件 (travel.inc.php):
<div class="map-wrapper">
<?php $currentPage = $_SERVER['REQUEST_URI']; ?>
<div class="map-move-container">
<div class="map-move-north"><a onclick="<?php playerMove(north); ?>" href="<?php $currentPage ?>"> Move North</a></div>
<div class="map-move-west"><a onclick="<?php playerMove(west); ?>" href="<?php $currentPage ?>"> Move West</a></div>
<div class="map-move-east"><a onclick="<?php playerMove(east); ?>" href="<?php $currentPage ?>"> Move East</a></div>
<div class="map-move-south"><a onclick="<?php playerMove(south); ?>" href="<?php $currentPage ?>"> Move South</a></div>
</div>
</div>
【问题讨论】:
-
你不能把 PHP 函数放到 onclick 中,它是用于 javascript 的。
-
@kennypu 如果是这种情况,我不确定如何在不通过 JavaScript 连接到数据库的情况下继续执行此操作,我知道这是一个很大的安全问题。有关如何前进的任何建议?
-
这不是一个真正的“大安全问题”,它应该做的是1.onclick,向php脚本发送一个ajax请求,更新玩家的位置2.(假设这是一个游戏)更新页面显示更改。
-
所以JS不一定连接到数据库,你只是向PHP脚本发送一个ajax请求,它将处理数据库连接和更新等。
-
@kennypu 太棒了,我一定会这样做的。你介意打开一个聊天室吗?我有几个问题可以在聊天中得到更好的回答。如果你不介意,那就是。
标签: php html switch-statement