当浏览器客户端调用 forms.submit() 时,它会向服务器发送一个 http post 请求。
现在,表单中可能有多个 key => value 对,所以我的问题是:服务器如何知道要从请求字符串中使用哪个对?
谢谢!
当浏览器客户端调用 forms.submit() 时,它会向服务器发送一个 http post 请求。
现在,表单中可能有多个 key => value 对,所以我的问题是:服务器如何知道要从请求字符串中使用哪个对?
谢谢!
发布请求不是以一般方式发送到服务器,而是专门发送到服务器上的一个 .php(或 .asp 等)文件。该文件应包含以下代码:
验证是否已收到所需的密钥
对每个键->值对执行基本验证
将任何用户提交的数据提交给各种安全功能,以防止 SQL 注入攻击等
继续并使用已提交的键-> 值对。例如,它可能会从一个被调用的键中获取值,username
并从另一个被调用的键中获取值,password
并使用它们来查询数据库以查看该用户是否应该看到下一页。
为了回答您的最后一个问题,服务器知道要从请求字符串中使用哪些对,因为程序员编写了系统的两端。因此,程序员必须小心匹配用户名输入字段(在 HTML 中)的 NAME 元素,并在查找提交的用户名时从该特定键名中获取值。
也许一个例子会有所帮助。
即开即用,未经测试的示例:
主页:index.php
<form id="myForm" action="dologin.php" method="POST">
Username: <br>
<input type="text" name="dausername"><br>
<br>
Password:<br>
<input type="text" name="yerpass">
<br>
<input type="submit" name="do_submit">
</form>
dologin.php 页面:
$uname = $_POST['dausername'];
$pword = $_POST['yerpass'];
$uname = security_check($uname);
$pword = security_check($pword);
$q = "SELECT * FROM `users` WHERE `username` = '$uname'";
$result = mysql_query($q) or die(mysql_error());
$r = mysql_result($result, 0);
if (!empty($r)) {
//Now, check that the password matches
if ($pword == $r['password']) {
//The user has passed the security check (i.e. has "logged in") and can now see the secret stuff
echo 'Welcome to our Private Server<br />';
echo 'The pass code for our door is 4321';
}
}else{
echo 'Sorry, you must login first';
}