我使用简单的HTML / AJAX / PHP脚本。
<form id="new_user" action="" method="post">
<div class="col-md-3 form-group">
<label for="username">Username</label>
<input type="text" class="form-control" name="username" id="username" required>
</div>
<div class="col-md-3 form-group">
<label for="city">City</label>
<input type="text" class="form-control" name="city" id="city" required>
</div>
<input type="button" name="button1" value="Done" class="btn btn-success" onClick="aa();"></button>
</form>
<div id="d1"></div>
单击按钮时:
<script type="text/javascript">
function aa()
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","ins.php?username="+document.getElementById("username").value+"&city="+document.getElementById("city").value,false);
xmlhttp.send(null);
document.getElementById("d1").innerHTML=xmlhttp.responseText;;
}
</script>
我的ins.php文件:
<?php
$username_safe = htmlspecialchars($_GET['username']);
$city_safe = htmlspecialchars($_GET['city']);
echo $username_safe . " " . $city_safe;
?>
如何保护ins.php文件(甚至整个表单),以便客户端无法从URL字段发布变量,例如:http://www.example.com/ins.php?username=aaa&city=bbb
答案 0 :(得分:0)
直接引用您的问题:
如何保护ins.php文件(甚至整个表单),以便客户端无法从URL字段发布变量,例如:http://www.example.com/ins.php?username=aaa&city=bbb
这已经完成,因为URL中的传递参数是GET请求,您已将表单设置为行中的POST提交表单:
<form id="new_user" action="" method="post">
所以只是不要看$_GET
超全局数组。请改为$_POST
。 Better yet use the filter_input()
function correctly例如:$username_safe = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
答案 1 :(得分:0)
生成一个只在一定时间内有效的ID(例如15分钟)。使用php构建表单,并在<input type="hidden" value="<?=$id?>">
将此ID发回服务器,并检查PHP是否允许此ID提交此表单。
答案 2 :(得分:0)
好像你是通过POST版GET发送你的vars,所以这真的不应该是一个问题。除非使用这些方法中的任何一种,您还可以将变量作为会话数据发送,但设置/取消设置会话变量会变得很麻烦。