吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2561|回复: 13
收起左侧

[其他转载] php进阶教程之表单处理

[复制链接]
hackerbob 发表于 2022-4-22 12:06
本帖最后由 hackerbob 于 2022-4-22 17:34 编辑


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

什么是表单?

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

请求方式

网站的请求方式分为两种
1.get方式
get方式是把表单放到url中
如 http:\www.hackerbobhahahaha.com\?user=admin&pass=123456
?号后面的就是参数,用户名为admin,密码为123456
优点:快速,资源占用少
缺点:有长度限制,保密性不好
2,post方式
post方式是把表单通过两个tcp数据包发到网站后台
Snipaste_2022-04-22_10-25-56.png
Snipaste_2022-04-22_10-26-25.png
缺点:比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"];
?>

结果:
Snipaste_2022-04-22_10-51-36.png
Snipaste_2022-04-22_10-55-23.png

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"];
?>

结果:
Snipaste_2022-04-22_11-20-49.png
Snipaste_2022-04-22_11-30-04.png
Snipaste_2022-04-22_11-30-18.png

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 "用户名或密码错误";
        }        
}
?>

结果:
没输入用户名密码时
Snipaste_2022-04-22_12-01-41.png
输入错误的用户名和密码时
Snipaste_2022-04-22_12-01-54.png
输入正确的用户名和密码时


Snipaste_2022-04-22_12-02-10.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
星期日 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

点绛唇 发表于 2022-11-12 15:11
PHP的单双引号的区别是,双引号可以解析变量,单引号不会,所以单引号解析比双引号快,非必要情况下都用单引号

[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版本的问题,我测试是没问题
QQ截图20220422162055.png

其次是刚刚你那个截图里面没传入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请求, 猛然想起这是教表单提交的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 21:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表