hackerbob 发表于 2022-4-22 12:06

php进阶教程之表单处理

本帖最后由 hackerbob 于 2022-4-22 17:34 编辑

前言
--
上一篇教程:https://www.52pojie.cn/thread-1625631-1-1.html

这是我总结的php进阶内容,完全由我一字一句写出来的,绝非复制粘贴网上的教程
其中参杂了一些我的个人见解,如果有不严谨或者不正确的地方请指出,我会更正
以后,我会逐渐完善本篇教程

#什么是表单?
表单其实就是数据,我们访问网站时想从网站中获取信息,就要先提交数据,告诉网站你要干啥,不然,网站怎么给你返回?
表单的提交不需要我们这些访问者来操心,网站通过前端代码,在页面中显示出一些按钮,输入框让用户输入,输入后,会把数据即表单发到网站后台,网站后台再根据表单返回相应的信息
当我们访问某一个网站时,输入完用户名和密码后,点击提交按钮,我们的用户名和密码就会以表单的形式发到网站后台
网站后台接到数据后,对用户名和密码进行判断,如果正确,就返回登陆成功,否则失败

#请求方式
网站的请求方式分为两种
1.get方式
get方式是把表单放到url中
如 http:\\www.hackerbobhahahaha.com\?user=admin&pass=123456
?号后面的就是参数,用户名为admin,密码为123456
优点:快速,资源占用少
缺点:有长度限制,保密性不好
2,post方式
post方式是把表单通过两个tcp数据包发到网站后台


缺点:比get方式慢
优点:对长度没有限制,保密性好

#1.处理get表单
php通过$_GET["参数名"]来获取参数值
例子:
我们首先用html写一个提交表单的页面
如果你不会html,不用担心,我会对html代码做出解释
html注释和php不一样:<!-- 中间是注释 -->
```
<html>
<head>
<meta charset="utf-8">
<!-- 定义网站编码为utf-8,防止出现乱码 -->
<title>get</title><!-- 标签页名为get -->
</head>
<body>
<form action="bob.php" method="get">
<!-- 定义一个get表单,action是要把表单发送到哪个文件,method是请求方式,这里是get -->
用户名: <input type="text" name="user"><!--输入框-->
密码: <input type="text" name="pass"><!--输入框-->
<input type="submit" value="提交"><!--定义按钮-->
</form>
</body>
</html>
```
我们再来写一个php后端来接收get表单数据
```
<?php
header("content-type:text/html;charset=utf-8");
//定义编码,防止出现乱码
echo "您的用户名是".$_GET["user"];
echo "您的密码是".$_GET["pass"];
?>
```
结果:




#2.处理post表单
php通过$_POST["参数名"]来获取参数值
先用html写一个提交post表单的页面
```
<html>
<head>
<meta charset="utf-8">
<!-- 定义网站编码为utf-8,防止出现乱码 -->
<title>post</title><!-- 标签页名为post -->
</head>
<body>
<form action="bob.php" method="post">
<!-- 定义一个post表单,action是要把表单发送到哪个文件,method是请求方式,这里是post -->
用户名: <input type="text" name="user"><!--输入框-->
密码: <input type="text" name="pass"><!--输入框-->
<input type="submit" value="提交"><!--定义按钮-->
</form>
</body>
</html>
```
我们再写一个php后端来接收post表单数据
```
<?php
header("content-type:text/html;charset=utf-8");
//定义编码,防止出现乱码
echo "您的用户名是".$_POST["user"];
echo "您的密码是".$_POST["pass"];
?>
```
结果:





#3.表单验证
isset(变量名)//用来判断某个变量是否存在
empty(变量名)//用来判断某个变量的值是否为空
isset 相当于 !empty
两个函数意义相反
我们来实现一个简单的登陆系统
html前端代码
```
<html>
<head>
<meta charset="utf-8">
<title>表单验证</title>
</head>
<body>
<form action="bob.php" method="post">
用户名: <input type="text" name="user">
密码: <input type="text" name="pass">
<input type="submit" value="提交">
</form>
</body>
</html>
```
php后端代码
```
<?php
header("content-type:text/html;charset=utf-8");
if (empty($_POST["user"]) or empty($_POST["pass"]))//判断user或者pass的值是否为空
{
      echo "请输入用户名和密码";//如果是空,让访问者输入
}
else
{
      
      if ($_POST["user"]=="bob" and $_POST["pass"]=="123456")//判断user和pass的值是否都正确
      {
                echo "登陆成功,欢迎bob";
      }
      else
      {
                echo "用户名或密码错误";
      }      
}
?>
```
结果:
没输入用户名密码时

输入错误的用户名和密码时

输入正确的用户名和密码时

点绛唇 发表于 2022-11-12 15:11

PHP的单双引号的区别是,双引号可以解析变量,单引号不会,所以单引号解析比双引号快,非必要情况下都用单引号

<?php
$num = 1;
echo "得到的数:$num";
// 得到的数:1
echo '得到的数:$nums';
// 得到的数:$nums

huanxiong 发表于 2022-4-22 16:23

hackerbob 发表于 2022-4-22 15:32
get只能用双引号,post只能用单引号

有可能是PHP版本的问题,我测试是没问题


其次是刚刚你那个截图里面没传入user这个参数,肯定会报错没有这个索引

huanxiong 发表于 2022-4-22 14:15

那个$_GET['']里面的引号是单引号还是双引号应该都不影响吧

hackerbob 发表于 2022-4-22 15:25

本帖最后由 hackerbob 于 2022-4-22 16:35 编辑

huanxiong 发表于 2022-4-22 14:15
那个$_GET['']里面的引号是单引号还是双引号应该都不影响吧是的,已更正

hackerbob 发表于 2022-4-22 15:32

本帖最后由 hackerbob 于 2022-4-22 16:35 编辑

huanxiong 发表于 2022-4-22 14:15
那个$_GET['']里面的引号是单引号还是双引号应该都不影响吧
都可以用,是我搞错了

hackerbob 发表于 2022-4-22 16:35

huanxiong 发表于 2022-4-22 16:23
有可能是PHP版本的问题,我测试是没问题



是的,确实没问题,我搞错了

我是一个外星人 发表于 2022-4-23 13:46

支持分享。

qqdns 发表于 2022-7-24 09:59

支持学习了,get,那么post

海澜之家 发表于 2022-7-24 21:47

支持分享

ycsm 发表于 2022-7-28 14:53

刚准备喷用户名和密码用get请求, 猛然想起这是教表单提交的{:1_909:}
页: [1] 2
查看完整版本: php进阶教程之表单处理