目录

PHP 表单处理


PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据。


PHP - 一个简单的 HTML 表单

下面的示例显示了一个简单的 HTML 表单,其中包含两个输入字段和一个提交按钮:

示例

<html>
<body>

<form action="welcome.html" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>
运行示例 »

当用户填写上面的表单并单击提交按钮时,表单数据将发送到名为 "welcome.html".php 的 PHP 文件进行处理。表单数据通过 HTTP POST 方法发送。

要显示提交的数据,您只需回显所有变量即可。 "welcome.html" 看起来像这样:

<html>
<body>

Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html>

输出可能是这样的:

Welcome John
Your email address is john.doe@example.com

使用 HTTP GET 方法也可以获得相同的结果:

示例

<html>
<body>

<form action="welcome_get.html" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>
运行示例 »

和 "welcome_get.html" 看起来像这样:

<html>
<body>

Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>

</body>
</html>

上面的代码非常简单。然而,最重要的东西却不见了。您需要验证表单数据以保护您的脚本免受恶意代码的侵害。

处理 PHP 表单时要考虑安全!

此页面不包含任何表单验证,它仅显示如何发送和检索表单数据。

然而,接下来的页面将展示如何在考虑安全的情况下处理 PHP 表单!正确验证表单数据对于保护您的表单免受黑客和垃圾邮件发送者的侵害非常重要!



GET 与 POST

GET 和 POST 都会创建一个数组(例如 array( key1 => value1, key2 => value2, key3 => value3, ...))。该数组保存键/值对,其中键是表单控件的名称,值是来自用户的输入数据。

GET 和 POST 都被视为 $_GET 和 $_POST。这些是超全局变量,这意味着无论作用域如何,它们总是可以访问的 - 并且您可以从任何函数、类或文件访问它们,而无需执行任何特殊操作。

$_GET 是通过 URL 参数传递到当前脚本的变量数组。

$_POST 是通过 HTTP POST 方法传递到当前脚本的变量数组。


何时使用 GET?

使用 GET 方法从表单发送的信息是所有人都可以看到(所有变量名称和值都显示在 URL 中)。 GET 对发送的信息量也有限制。限制约为 2000 个字符。但是,由于变量显示在 URL 中,因此可以为页面添加书签。这在某些情况下很有用。

GET 可用于发送非敏感数据。

笔记:GET 绝不能用于发送密码或其他敏感信息!


什么时候使用POST?

使用 POST 方法从表单发送的信息是别人看不见的(所有名称/值都嵌入在 HTTP 请求的正文中)并且具有无限关于要发送的信息量。

此外,POST 支持高级功能,例如在将文件上传到服务器时支持多部分二进制输入。

但是,由于变量未显示在 URL 中,因此无法为该页面添加书签。

开发人员更喜欢使用 POST 来发送表单数据。

接下来,让我们看看如何安全地处理 PHP 表单!


PHP练习

通过练习测试一下

练习:

如果下面白色部分的表单被提交,那么如何在welcome.html中输出"first name"字段的值?


    
    
<form action="welcome.html" method="get"> First name: <input type="text" name="fname"> </form>
<html> <body> Welcome <?php echo ; ?> </body> </html>