使用HTML表单将数据传递给PHP

介绍

在某些时候,所有Web开发人员都需要从用户那里收集数据。 在动态网页中,一切都围绕用户的输入,因此了解如何请求和收集此数据对于任何开发人员都是至关重要的。

本文是有关如何使用HTML表单(最常用的数据收集方法)的基础教程。

假设条件

-基本的HTML知识。

-基本的PHP知识。

HTML表格

收集数据的常见且简单的方法是通过HTML表单。 表单是用于用户输入的容器,并且可以包含任意数量的不同输入类型。

HTML表单元素需要一些参数才能正常工作:

  • 行动 :这应该指向用于处理收集的数据的页面。 提交表单后,浏览器将与所有数据一起重定向到此位置。
  • 方法 :这是运输方法。 这里有两个选择:“ GET”和“ POST”。 我将在下一章中介绍它们。
一个典型的表单元素可能看起来像这样:

<form id="Form1" action="submit.php" method="post">
<!-- Input elements will be put here -->
</form> 
数据传递方法GET和POST。

正如您可能从两种协议的名称中猜到的那样,GET和POST请求被设计用于不同的目的。

GET协议的目的是获取数据并将其显示给用户。 可以通过查询字符串传递简单的键/值对,但理想情况下,应将它们用于指定应在页面上显示的内容,而不是将用户数据推送到服务器上。

这就是POST协议的目的。 它旨在允许客户端以几乎任何格式将几乎任何数量的数据发送到服务器。 这是大多数表单应使用的格式,并且对于文件上传和上传大量文本而言,这是必需的。

本质上,GET应该用于导航和类似性质的事情,但是POST应该用于发送实际数据。 现在,让我们分别更详细地检查它们。

GET协议

使用GET时,来自表单的数据被编码到请求的URL中。 例如,如果您要提交以下表格:

<form action="action.php" method="get">
    <input type="text" name="Username" value="John"><br>
    <input type="password" name="Password" value="thePassword"><br>
    <input type="submit">
</form>
当您点击“提交”按钮时,浏览器会将您重定向到以下URL:

--

action.php?Username = John&Passsword = thePassword

GET协议的一个非常有用的方面是,我们不必使用表格来提交GET数据。 该URL也可以手动构建,服务器不会看到任何区别。 这意味着也可以使用以下HTML链接提交上述数据:

<a href="action.php?Username=John&Passsword=thePassword">Submit</a>
在显示动态创建的内容的网站(例如论坛或博客)中,这可能是非常有用的燃料,在这些网站中,您经常需要创建动态导航链接。 实际上,此方法已在大多数动态Web 2.0应用程序中使用。 POST协议

通过POST协议提交的数据在URL中不可见。 数据本身被放入请求的主体中,该主体允许POST请求比GET请求上载更多数据和更复杂的数据。

例如,要发送用户名和图像,可以使用如下形式:

<form action="action.php" method="post" enctype="multipart/form-data">
    <input type="text" name="Username"><br>
    <input type="file" name="UserImage">
    <input type="submit">
</form>
您将在此处看到一个附加属性已添加到表单。 发送文件时需要“ enctype”属性。 如果丢失,将不会发送文件。 -此属性仅告诉客户端如何格式化请求的正文。 默认情况下,它是一种相当简单的格式,但是要发送二进制对象,则需要更复杂的格式。 <input>元素

与所有表单一样,HTML表单也需要用户填写字段。 这就是

<input>元素用于。

输入元素位于内部

<form>元素,可以用作许多不同类型的字段。 通过将字段的“类型”属性更改为以下值之一来设置类型
  • text :这是一个简单的文本框。 允许用户输入任何文本。
  • password :这类似于“文本”输入,只是用于密码。 文本被混淆,因此您键入的实际文本不可见。 (通常通过用星号替换每个字符。)
  • button :这将创建一个按钮。 它没有特殊目的。 它主要用于执行JavaScript代码。
  • 提交 :这将形成一个按钮,单击该按钮即可提交表单。 如果指定名称和值,它们将包含在数据中。 否则不行。
  • reset :这形成一个按钮,用于重置表单中的所有字段。 请谨慎使用!
  • 复选框 :这将创建一个复选框。 仅选中的复选框将与数据一起发送。 未选中的框将被忽略。
  • radio :这将创建一个单选按钮。 如果使用相同的名称创建多个这些名称,则在任何给定时间只能选择其中一个,并且数据中将仅包含所选的一个。 所选框的“值”属性将被发送。
  • 隐藏 :不显示此字段。 它是隐藏的,但其值将被发送。 当您需要从PHP或JavaScript代码中包含一个值,但又不想让用户看到它时,这些功能非常有用。
  • file :此类型允许选择文件并将其上传到服务器。
一个使用输入元素填充的表单的简单示例:
<form id="Form1" action="submit.php" method="post">
  Username: <input type="text" name="Username"><br>
  Password: <input type="password" name="Password"><br>
  Remember me: <input type="checkbox" name="Remember" checked="checked">
  <input type="hidden" name="SubmitCheck" value="sent">
  <input type="Submit" name="Form1_Submit" value="Login">
</form>
读取表格数据

要使用PHP读取表单提交的数据,我们使用三个特殊数组之一。 那些是:

$ _GET$ _POST$ _REQUEST 。 前两个包含通过各自协议提交的数据。 第三个$ _REQUEST包含两个数据。

数组的index(key)是输入元素的name属性。 因此,如果要发送先前创建的表单,则可以打印您传递的用户名,如下所示:

echo $_POST['Username'];
如果您很懒,可以直接调用“ $ _REQUEST ['Username']”,但这需要付出一定的代价。 根据您的PHP配置,$ _GET或$ _POST数组将替代另一个,覆盖重复的值。 这意味着,如果POST和GET协议都发送一个具有相同名称的值,则其中一个将不可用,并且您可能会在代码中使用不正确的值。 -更糟的是,Cookie和环境变量也被混入其中,进一步增加了风险。

这个故事的寓意是:使用

$ _GET$ _POST数组,而不是$ _REQUEST数组。 这样最安全。 使用收集的数据

在结束之前,我们使用以前的登录表单来做一个简单的例子。

此表单测试用户名“ John”和密码“ Doe”,并相应地进行响应。 -请注意,我已经更改了表单的'action'属性以使其指向自身,这将导致页面与数据一起重新加载。


<?php
/**
 * WARNING!
 * This EXAMPLE code contains severe SECURITY ISSUES
 * which should be addressed before real-life usage!!
 *
 * These issues have been ignored intentionally to
 * simplify the code so we can focus on the topic
 * in discussion.
 */ 
// Lets test if the form has been submitted
if(isset($_POST['SubmitCheck'])) {
    // The form has been submited
    // Check the values!
    if($_POST['Username'] == "John" and $_POST['Password'] == "Doe") {
        // User validated!
        echo "Thats right! You have been logged in!"; 
        // Check if the checkbox was checked
        if(isset($_POST['Remember'])) {
            echo "<br>You will be remembered!";
        }
        else {
            echo "<br>John who?!";
        }
    }
    else {
        // User info invalid!
        echo "Sorry mate, try again!";
    }
}
else {
    // The form has not been posted
    // Show the form
?>
<form id="Form1" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Username: <input type="text" name="Username"><br>
    Password: <input type="password" name="Password"><br>
    Remember me: <input type="checkbox" name="Remember" checked="chekced">
    <input type="hidden" name="SubmitCheck" value="sent">
    <input type="Submit" name="Form1_Submit" value="Login">
</form>
<?php
}
?> 
终点线

因此,这就是我有关HTML表单的基本文章。

最后警告!

谨慎使用通过HTML表单发布的数据。

始终假设您收到的数据以某种方式破坏了您的网络并进行了相应的验证!

请记住,您的网络仅与显示的信息一样好,因此请确保数据正确无误。

祝一切顺利,

-AtliÞór

From: https://bytes.com/topic/php/insights/664241-using-html-forms-pass-data-php

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值