PHP处理表单数据

重温表单

表单是使用<form></form>标签来创建表单,分别表示表单开始和结束的位置。

表单结构:

<form
name = "form_name" method ="method" action="url" enctype="value" target="target_win" id="id">
.......
</form>

常用属性解释:

  • name :表单名称
  • id: 表单id号
  • method:提交方法,取值有两种GET和POST.区别是GET方法通过url传输,因为很多浏览器限制url长度,因此GET传输数据有大小限制,不得超过8192个字符,而且内容会显示在url中。POST方法适合传输大量数据,而且不通过url更安全。
  • action:指定数据提交到那个位置,可以是绝对的url也可以是相对的url.如果为空,提交到当前文件。
  • enctype:设置表单资料的编码格式,详细内容见后面处理部分
  • target:制定目标窗口和目标帧(没用到不太懂)

表单元素

输入标记域

<form>
<input name="field_name" type="type_name">
</form>

参数name指的是输入域的名字,type指的是输入域的类型
输入域类型如下:

  • text: 文本框
    <input name="user" type="text" value="this is a text" size="20" maxlength="100"
    name为文本框名称,value为文本框默认值,size指文本框的宽度,maxlength指文本框最大输入字符数

  • password:密码域
    <input name="password" type="password" value="123456" size="20" maxlength="20"
    特殊的文本框吧,输入字符显示出来是*号,起到保密作用

  • file:文件域
    <input name="file" type="file" enctype="multipart/form-data" size="20" maxlength="200">
    文件域用来上传文件,打开一个模式窗口选择文件。将文件通过表单上传到服务器,注意表单属性enctype要选择"multipart/form-data"才能实现上传,具体类型再补充

  • radio:单选按钮
    <input name="sex" type="radio" value="1" checked>男<input name="sex" type="radio" value="0">女
    用于设置一组选项,用户只能选择一项cheked属性来设置单选按钮的默认值

  • checkbox:复选框

<input name="checkbox" type="checkbox" value="1" checked>封面
<input name="checkbox" type="checkbox" value="1" checked>正文内容
<input name="checkbox" type="checkbox" value="0">价格

复选框,允许用户选择多个选项,checked属性用来设置该复选框默认值

  • Submit:提交
    <input type="submit" name="Submit" value="提交">
    将表单的内容提交到服务器端

  • button:按钮
    <input type="button" name="Submit" value="button"按钮
    可以激发提交表单的操作,可以在用户需要修改表单的时候恢复表单初始状态。普通按钮一般是配合JavaScript进行表单处理

选择域标记

选择域标记<select>和<option>可以建立一个列表或者菜单.如果数量过多还会自动出现滚动条

<select name="spec" id="spec">
<option value="0" selected>aaa</option>
<option value="0" selected>bbb</option>
<option value="0" selected>bbb</option>
<option value="0" selected>bbb</option>

就是平时看到的菜单栏选项

文本域标记

其中参数name表示文本域的名称;row表示文本域的行数;cols表示文本域的列数;value表示文本域的默认值;wrap用于设定显示和送出时的换行的方式,值为off表示不自动换行;值为hard表示自动按回车键换行;换行标记一同被送到服务器,输出时也会换行;值为soft表示自动按回车键换行,换行标记不会被送到服务器,输出时仍然为一列。

<textarea name="name" rows=a cols=b value="value" wrap="value">
.......
.......
.......
</textarea>

PHP接收数据

表单的action指定了接收POST方法或者GET方法的php脚本,PHP脚本读取接受的数据的方法是用超全局变量$_GET和$_POST。接收数据之后,是展示,还是存进数据库,或者进行别的处理,就随意写了。

看一个示例就知道怎么处理了,表单假如是这个样子的

<form action="process.php" methond="POST">
<input name="username" value="ycd">
<input name="psd" type="password" value="123456">
<button>OK</button>
</form>
<?php
$username=$_POST['username'];
$password=$_POST['psd'];

echo 'USER:'.$username." PASSWORD:".$password;

特殊情况:发送文件

如果要发送文件,这在HTML表单中是个特殊的情况,因为文件一般被认为是二进制数据,而且HTTP是个文本协议,所以对于处理二进制数据有特别要求。

enctype属性

enctype属性可以改变HTTP请求头中的Content-Type字段,详细内容可以参考HTTP协议的内容。这个字段的作用是告诉服务器发送的数据类型。Content-Type的默认值是application/x-www-form-urlencoded,意思是”这份数据已经被编码为URL格式“.

如果想发送文件,得做两件事情

  • 因为文件内容不能放到url里,所以得把method改成POST
  • 将enctype属性的值改成multipart/form-data,这样数据被分割成多个部分,成功发送。

示例代码

<form method="POST" enctype="multipart/form-data">
<input type="file" name="FILE">
<button>Send</button>
</form>

PS:要注意安全性问题,主要是这几种类,XSS、CSRF、SQL注入、HTTP头部注入和邮件注入。后续填坑吧

posted @ 2018-01-04 01:59  ustc_rjgc2017  阅读(1311)  评论(0编辑  收藏  举报