form表单在PHP中的实现方式-php教程

资源魔 28 0
一、表单的根本应用

HTML 中有一个专门用于提交数据的标签: <form> ,经过这个标签能够很容易的搜集用户输出.

form 标签有两个须要属性:
  action:表单提交地点(填完了,交给谁)
  method:表单以甚么形式提交

例如,咱们需求正在登录界面上搜集用户输出的用户名以及明码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF‐8">
  <title>登录</title>
</head>
<body>
  <form action="login.php" method="post">
    <div>
      <label for="username">用户名</label>
      <input type="text" id="username" name="username">
    </div>
    <div>
      <label for="password">明码</label>
      <input type="password" id="password" name="password">
    </div>
    <button type="submit">登录</button>
  </form>
</body>
</html>

依照今朝的状况,用户第一次申请失去这个表单页面,填写完表单内容,点击登录,表单会主动发送到login.php ,剩下的成绩就是要思考若何正在 login.php 中猎取到用户提交过去的内容.

PHP 中有三个超全局变量专门用来猎取表单提交内容:
$_GET :用于猎取以 GET 形式提交的内容
$_POST :用于猎取以 POST 形式提交的内容
$_REQUEST :用于猎取 GET 或 POST 形式提交的内容

借助 $_POST 或许 $_REQUEST 就能够猎取到表单提交的内容:

<?php
// 猎取表单提交的用户名以及明码
echo '用户名:' . $_REQUEST['username'];
echo '明码:' . $_REQUEST['password'];

1.一、提交地点

action 提交地点指的是这个表单填写实现当时点击提交,发送申请的申请地点是甚么。
从便于保护的角度思考,普通咱们最多见的都是提交给以后文件,而后正在以后文件中判别能否是表单提交申请:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  // 表单提交申请
  }

另外,倡议应用 $_SERVER['PHP_SELF'] 静态猎取以后页面拜访门路,这样就不必由于文件重定名或许网站目次构造调整而修正代码了:

<!‐‐ 这样写死 action 地点,当文件重定名就需求修正代码 ‐‐>
<form action="/foo/login.php">
  <!‐‐ ... ‐‐>
</form>
<!‐‐ 经过 `$_SERVER['PHP_SELF']` 猎取门路,能够轻松防止这个成绩 ‐‐>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <!‐‐ ... ‐‐>
</form>

1.二、提交形式

method 能够用于设置表单提交的形式,今朝咱们所意识的就是最多见两种表单提交形式: GET 以及 POST 。
  从成果下去看,二者均可以将数据提交到效劳端,然而从完成提交的原理上二者有很年夜的没有同:
GET
  表复数据是经过 URL 中的 ? 参数通报到效劳真个
  能够正在地点栏中看到提交的内容
  数据长度无限制,由于 URL 地点长度无限(2000个字符)
POST
  表复数据是经过申请体通报到效劳真个,咱们正在界面上看没有到
  能够提交任何类型的数据,包罗文件
  因为界面上看没有见,阅读器也没有贮存,以是更平安
  至于甚么状况下应该选用哪一种形式,这个需求连系营业场景以及这两种形式各自的特性来决议,不相对的谜底,只能给出一些准则:
  毫不能应用 GET 来发送明码或其余敏感信息!!!
  应该想分明此次申请到底次要是去拿货色,仍是去送货色

二、常见表单位素解决

至于表单位素中的文本框文本域一类的元素,都是间接将元素的 name 属性值作为键,用户填写的信息作为值,发送到效劳端。然而表单位素中另有一些比拟非凡的表单位素需求独自思考:

2.1单选按钮

<!‐‐ 终极只会提交选中的那一项的 value ‐‐>
<input type="radio" name="gender" value="male">
<input type="radio" name="gender" value="female">

2.二、复选按钮

<!‐‐ 不设置 value 的 checkbox 选中提交的 value 是 on ‐‐>
<input type="checkbox" name="agree">
<!‐‐ 设置了 value 的 checkbox 选中提交的是 value 值 ‐‐>
<input type="checkbox" name="agree" value="true">

假如需求同时提交多个选中项,能够正在 name 属性前面 跟上 [] :

https://www.php.net/manual/zh/faq.html.php#faq.html.arrays

<input type="checkbox" name="funs[]" id="" value="football">
<input type="checkbox" name="funs[]" id="" value="basketball">
<input type="checkbox" name="funs[]" id="" value="world peace">

终极提交到效劳端,经过 $_POST 接纳到的是一个索引数组.

2.三、抉择框

<select name="subject"> 
<!‐‐ 设置 value 提交 value ‐‐>  
<option value="1">语文</option>  
<!‐‐ 不设置 value 提交 innerText ‐‐>  
<option>数学</option>
</select>

2.4文件上传

type 属性为 file 的 input 元素能够经过表单提交文件(上传文件),效劳端 PHP 能够经过 $_FILES 猎取上传的文件信息。

<?php
// 假如抉择了文件 $_FILES['file']['error'] => 0
// 具体的谬误码阐明:http://php.net/manual/zh/features.file‐upload.errors.php
if ($_FILES['file']['error'] === 0) {
  // PHP 正在会主动接纳客户端上传的文件到一个暂时的目次
  $temp_file = $_FILES['file']['tmp_name'];
  // 咱们只要要把文件保留到咱们指定上传目次
  $target_file = '../static/uploads/' . $_FILES['file']['name'];
  if (move_uploaded_file($temp_file, $target_file)) {
    $image_file = '/static/uploads/' . $_FILES['file']['name'];
  }
}

$_FILES 一样也是一个联系关系数组,键为表单的 name ,内容以下:

array(1) {
  ["avatar"]=>
  array(5) {
    ["name"]=>
    string(17) "demo.jpg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(27) "C:\Windows\Temp\php786C.tmp"
    ["error"]=>
    int(0)
    ["size"]=>
    int(29501)
  }
}

更多相干成绩请拜访PHP中文网:PHP视频教程

以上就是form表单正在PHP中的完成形式的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 form

抱歉,评论功能暂时关闭!