web服务器如何知道在提交表单时使用哪些参数?

how does web server know which parameters to use on submitting a form

本文关键字:参数 表单 服务器 何知道 提交 web      更新时间:2023-09-26

当浏览器客户端调用forms.submit()时,它向服务器发送一个http post请求。

现在,表单中可能有多个键=>值对,所以我的问题是:服务器如何知道从请求字符串中使用哪对?

谢谢!

post请求不是以一般方式发送到服务器,而是专门发送到服务器上的一个.php(或.asp,或其他)文件。该文件应该包含以下代码:

  1. 验证所需密钥是否已收到

  2. 对每个键->值对执行基本验证

  3. 将任何用户提交的数据提交给各种安全功能,以防止SQL注入攻击等

  4. 继续使用已提交的键->值对。例如,它可能从一个名为username的键中获取值,从另一个名为password的键中获取值,并使用它们来查询数据库,以查看是否应该向该用户显示下一页。

回答你的最后一个问题,服务器知道从请求字符串中使用哪对,因为程序员编写了系统的两边。因此,程序员必须小心匹配Username输入字段(在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';
}