整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

快速学会html表单提交(php)

快速学会html表单提交(php)

天小编给大家带来的是html表单提交教程,非常简单!

话不多说直接进入教程

首先要注意的事项:

第一:因为这节课涉及到了php所以本地要安装php

在这里小编用的是phpStudyphpStudy(特点简单很适合本地开发测试)

phpStudy界面

第二:在php编码里一定要注意不要编写错误

<?php //为开头 //为结尾?>

<?php 这里写php代码 ?>

要切记php代码要以分号未结束 “;”

首页我们到我们刚刚安装的软件根目录下,找到www这个文件夹

双击打开建立一个新文件夹(在这我命名为了表单的拼音你们可以自己命名为你们想命名的名字,切记不能用中文)

在打开刚刚建立好的文件夹创建两个文件分别命名为orderform.html和processorder.php(当然你也可以自己取名)

我们用编程软件打开这两个新建文件(这里我用的是Sublime Text 3)

我们首先给orderform.html写下如下代码

然后我们开始写建立表单

我们访问本地连接看一下效果

我们在给php写入代码

以下为注意事项

<!--<?php //为php代码 eoch为输出代码 $_POST为接收html提交过来的数据 $tireqty=$_POST['tireqty']

//$sj=$_POST['sj']

//$dz=$_POST['dz'] 为给建立的变量赋值? echo "$tireqty";为输出这个变量-->

首先我们写入和html一下的html代码

在写入php接收函数

完成效果

以下是html里的代码

<!DOCTYPE html>

<html>

<head>

<!--这里编码为utf-8国际编码-->

<meta charset="utf-8">

<!--这里为网站标题-->

<title>表单</title>

</head>

<body>

<!--action为提交的页面 method为提交类型 分为两种一种为post还一种为get -->

<form action="processorder.php" method="post">

<!--border="0"为边框粗细-->

<table border="0">

<!-- bgcolor="#cccccc"为表格背景颜色这里为灰色 -->

<tr bgcolor="#cccccc">

<td>参数</td>

<!-- aligan="center"为表格居中 -->

<td align="center">数据</td>

</tr>

<tr>

<td>姓名</td>

<!-- <input type="text" name="tireqty" size //这里为type为提交类型

text为文本类型 name为名称和class一样 size为字体大小-->

<td align="center"><input type="text" name="tireqty" size="3"/></td>

</tr>

<tr>

<td>手机</td>

<td align="center"><input type="text" name="sj" size="3"/></td>

</tr>

<tr>

<td>地址</td>

<td align="center"><input type="text" name="dz" size="3"/></td>

</tr>

<tr>

<!-- <input type="text" value="提交" value为input 元素的值 colspan为合并-->

<td colspan="0" align="center"><input type="submit" value="提交"/></td>

</tr>

</table>

</form>

</body>

</html>

以下是php中代码

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>接收</title>

</head>

<body>

<form>

<?php

$tireqty=$_POST['tireqty'];

$sj=$_POST['sj'];

$dz=$_POST['dz'];

?>

<table border="0">

<tr>

<td>参数</td>

<td align="center">数据</td>

</tr>

<tr>

<td>姓名</td>

<td align="center"><?php echo "$tireqty"; ?></td>

</tr>

<tr>

<td>手机</td>

<td align="center"><?php echo "$sj"; ?></td>

</tr>

<tr>

<td>地址</td>

<td align="center"><?php echo "$dz"; ?></td>

</tr>

</table>

</form>

</body>

</html>

谢谢观看,喜欢的就收藏加关注吧!

用户在 HTML 表单中填写并提交数据时,可以使用 PHP 来接收并处理这些数据。要实现这一点,需要创建一个 PHP 脚本来处理提交的数据,然后将 HTML 表单的 "action" 属性设置为该脚本的文件路径。表单提交的数据需要进行验证和过滤,以确保数据的完整性和安全性。可以使用条件语句、正则表达式、过滤器函数等方法来验证和过滤数据,并使用 htmlspecialchars() 函数转义 HTML 标记,以防止 XSS 攻击。

以下是一个简单的示例:

HTML 表单代码:

<form action="submit.php" method="post">

<label for="name">Name:</label>

<input type="text" id="name" name="name">

<label for="email">Email:</label>

<input type="email" id="email" name="email">

<button type="submit">Submit</button>

</form>

PHP 代码(submit.php):

<?php

// 获取表单提交的数据

$name=$_POST['name'];

$email=$_POST['email'];

// 在这里进行处理,例如将数据存储到数据库中

// ...

// 返回一个响应,告诉用户数据已经被成功提交

echo "Thank you for submitting the form, $name!";

?>

在上面的示例中,表单的 "action" 属性设置为 "submit.php",这意味着提交表单时,数据将被发送到 submit.php 文件中的 PHP 代码中进行处理。PHP 代码使用 $_POST 数组来获取表单提交的数据,然后进行处理,例如将数据存储到数据库中。最后,PHP 代码返回一个响应,告诉用户数据已经被成功提交。在处理表单数据时,一定要对用户输入进行验证和过滤,以防止安全漏洞。

需要对表单提交的数据进行验证和过滤,以确保数据的完整性和安全性。以下是一些常见的方法:

1、验证表单字段:在 PHP 代码中使用条件语句和正则表达式等方法来验证表单字段的有效性,例如验证电子邮件地址的格式是否正确。

$email=$_POST['email'];

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

// 如果邮件地址格式不正确,则显示错误消息

echo "Invalid email address";

}

2、过滤输入数据:使用 PHP 中的过滤器函数来过滤表单输入数据,以防止 XSS 攻击和 SQL 注入等安全漏洞。

$name=$_POST['name'];

$name=filter_var($name, FILTER_SANITIZE_STRING); // 过滤特殊字符和标签

3、防止跨站脚本攻击(XSS):在 PHP 代码中使用 htmlspecialchars() 函数来转义 HTML 标记,防止恶意脚本注入到页面中。

$name=$_POST['name'];

$name=htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); // 转义 HTML 标记

4、防止 SQL 注入攻击:在 PHP 代码中使用参数化查询或准备语句来执行数据库操作,以防止恶意 SQL 语句注入到数据库中。

$stmt=$pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");

$stmt->bindParam(':name', $name);

$stmt->bindParam(':email', $email);

$stmt->execute();

通过这些方法,可以确保表单提交的数据是安全和有效的,并且能够正常地处理和存储到数据库中。

组:定义,数组做什么的

PHP中数组的特点:数组没有类型,没有长度限制,可以有文本下标

数据遍历:foreach遍历,for(数组是从0开始,顺序增长的索引数组,count),each+list,一些列数组函数(current,key,next,prev,end,reset)

数组相关的函数

字符串-数组:explode,implode

验证码:range,array_rand(获取元素下标,顺序排序),shuffle

数据结构的模拟:栈和队列,array_push(入栈),array_pop(出栈),array_unshift,array_shift

SQL注入:addslashes,stripslashes(将添加的转义符号去掉)

浏览器传值

用户在浏览器里输入相关数据,数据需要提交到服务器。

浏览器到底是如何将数据传递给服务器的?

url传递数据

表单提交数据(form)

PHP获取浏览器提交数据的方式:

$_GET:获取用户get方式提交的数据,url地址栏里面的数据

$_POST:获取用于post方式提交的数据,表单提交的数据

$_REQUEST:获取以上两种方式提交的数据(进行合并)

严格的讲,浏览器只有两种提交数据的方式:get提交和post提交

Get提交:url里本身的数据,表单get方式提交的数据

Post提交:表单以post形式提交的数据

$_REQUEST会对post和get方式提交的数据进行合并:array_merge()

Array_merge($_GET,$_POST):如果post方式提交的数据,如果与get方式提交的数据,有同名下标,则会用post覆盖get。

是什么绝对了是post覆盖get而不是get覆盖post?

是配置文件决定了顺序:php.ini中一个叫做request_order的配置,决定了覆盖的顺序

这个顺序决定了数据数组在array_merge()里面出现的顺序

如果在低版本里,可能没有request_order这个配置,是用variables_order配置的。

注意:

1.通常session不会放到$_REQUEST里去,$_REQUEST里通常会保存get,post和cookie数据。

2.$_REQUEST要慎用,因为$_REQUEST不安全。

Get与post的区别

1.安全性:post提交的数据看不见(一般用户看不到),get都是在地址栏里,用户一眼就可以看到;用户可以直接修改地址栏的信息

2.Get方式能提交的数据是有限的(比较少),比post小很多。

3.Get和post都只能提交字符流数据,如果要进行文件的传输(二进制流),必须使用post方式提交(配合其他)

如何选择使用get方式还是post方式提交数据?

1.如果数据安全性要求不高,且数据量比较少,可以使用get方式(因为简单,不需要使用表单)

2.如果数据量大,或者安全性要求较高(秘密等),应该使用post提交

3.如果要上传完文件,非post莫属

在PHP5.3以前,可以修改PHP的配置文件,register_globals,能够将用户提交的表单,直接生成表单名字对应的变量

<form method=”post” action=”post.php”>

用户名:<input type=”text” name=”username”/>

密码:<Input type=”password” name=”password” />

<input type=”submit” value=”提交”/>

</form>

当用户提交到对应的PHP界面post.php中,默认的只能使用$_POST获得用户的数据

$_POST[‘username’],$_POST[‘password’];

Php.ini:register_globals=on

$username,$password

从PHP5.3开始,这个功能被废弃,5.4之后直接删除了。

1.不安全,用户提交的数据不是很方便验证

2.PHP不相信任何外来数据

如果用户表单提交界面,使用js对用户提交的所有表单数据进行验证。那么PHP还有没有必要对表单提交的数据进行验证?(数据合法性)

答案的肯定有必要!

对于PHP来讲,js验证过的数据依然是外部数据。Js可以被用户禁用,所以PHP还必须对数据进行验证。

如果在一个PHP脚本中,既有PHP代码,又有html表单,同时该表单还是提交到当前页。就需要对用户操作进行判断,用户究竟是直接请求还是提交

复选框的使用

Checkbox

复选框语法

篮球<input type=”checkbox” name=”名字” value=”值”/>

表现形式

技术实现

1.如何提交复选框的内容

表单

提交接收

选择了多个复选框,却只得到一个复选框的值

1)什么样的复选框能够被提交

复选框必须要有name属性

只有被选中的复选框才会被提交

2)多个复选框选中之后,只有一个被提交?

因为复选框的名字重复,浏览器只提交一个该名字的表单元素。最后一个被选中的复选框元素。

解决方式:给不同的复选框不同的名字,可以解决选中提交被覆盖的问题

3)无法区分复选框是否属于一类的问题?

采用数组的形式:给定name属性的值增加一个中括号[]

加上中括号之后,浏览器就不会把这个看似一样的名字当做相同的名字

提交之后

复选框加上中括号不会覆盖名字的原理

将表单复选框选中的元素添加到数据库

使用PHP1405数据库

创建hobby表

插入数据库代码

将数据从数据库拿出来并显示

之前所选择的爱好信息,在显示的时候,能够自动勾选上。

1.取出数据

2.把数据从字符串转化成数组

3.遍历数组,匹配选择

1)如何让复选框默认被选中?

在表单里添加一个checked=”checked”属性

2)如何判断一个元素是否在数组中存在?

In_array,判断一个元素字符在数组中存在,如果存在返回true,否则返回false

作业:将复选框显示采用数组遍历,构造checkbox表单的形式。

文件上传

将用户浏览器端的文件上传到服务器端的过程就是文件上传。

1) 哪里会用到文件上传?

头像管理,相册管理,共享文件,文件下载。。。

2)文件上传浏览器端,要做什么呢?

1. 选中文件

2. 点击上传

3)文件上传服务端,要做什么呢?

1. 接收用户上传的文件

2. 判断文件的类型和内容

3. 将文件保存到服务器上

如果要实现文件上传,必须保证两点:

1.浏览器要有文件表单域

保证表单的提交方式是post

<input type=”file” name=”名字” />

2.保证PHP允许文件上传功能

配置文件开启文件上传功能

修改临时文件上传的路径

如果不做修改,那么该目录指的是操作系统的临时目录,win7对应的是C:/Windows/Temp

文件上传

1.准备文件上传表单

2.准备接收文件的PHP文件

3.提交测试

文件没有上传成功,只是上传了一个文件名。原因?

Get或者post都只能提交字符流的字符串,不能够提交二进制流数据,而文件本身是二进制流

4.修改文件上传表单域,增加一个二进制流配置enctype=”multipart/form-data”

经测试,怪异的事情发生了,原来保存着$_POST里面的文件名不见了。原因?

文件上传成功了!

但是因为脚本立即结束,临时文件马上被删除了。如果想要看临时文件是否存在

5.PHP真正接收上传的文件

$_FILES预定义全局变量,保存用户上传的文件信息。

6.将临时文件给放到指定的文件上传目录

PHP提供了两个函数

Copy:将一个文件复制一份,将复制的这份放到指定的目录(会保留源文件)

Move_uploaded_file:将上传的文件移动到指定的目录(不会保留源文件)

文件上传流程

文件上传会因为编码的原因导致上传的中文名字会变成乱码。所以解决该问题的方式,就是对上传的文件进行重命名。

文件重命名

改变的是文件的名字,不改变文件后缀名

1.修改文件名字(系统生成)

2.保证原来文件的后缀名

文件上传函数封装(简单)

1.判断用户是否上传文件

2.正常情况下应该判断文件上传错误信息

只要当文件上传错误信息为0的时候才上传成功的,其他都是上传失败

3.文件重命名

4.移动文件

5.调用文件上传函数

算法

PHP中没有算法,在底层的语言当中算法应用的比较多。

基本排序算法:冒泡算法,选择排序,插入排序,快速排序。

都是对数组进行排序,数组里面都是数值元素

冒泡算法

假设升序排序,每次将最大的那个数值给冒到最后

原理

代码

查找

找出元素在数组中存在的位置。(下标)

查找就是遍历数组,拿元素与需要查找的值进行比对,比对成功则返回对应的下标,失败则继续直到数组末尾。

二分法

前提:要查找的数组是一个已经排序好的数组。

将数组进行折半,对中间元素进行比较,如果没有得到结果则从另外一半再进行折半,直到找到对应的元素

原理

代码


相关链接:重蔚php学习第二十八天——数组,二维数组,数组的遍历

重蔚php学习第二十八天——数组,数组相关函数,数据结构模拟