-2

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

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

谢谢!

4

1 回答 1

0

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

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

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

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

  4. 继续并使用已提交的键-> 值对。例如,它可能会从一个被调用的键中获取值,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';
}
于 2013-05-30T22:39:09.753 回答