上回:後端開發技術教學(二) 條件指令、循環結構、定義函數 -CSDN博客

必要資源:

trae中文版下載網址: TRAE - The Real AI Engineer

phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 · 小皮出品


目錄

一、表單提交

        1.1  get & post

        1.2 提交流程

二、超全局變量

        2.1  $_GET

        2.2  $_POST

三、實際操作

        3.1  表單製作

        3.1.1  數據為文件

        3.2  數據處理

        3.2.1  空格刪除

        3.2.2  密碼加密

        3.2.3  臨時存儲至統一變量

        3.2.4  其他字符串處理函數

                3.2.4.1  輸出特殊字符

        3.3  數據儲存

四、小結


        上期我們講解了一些PHP的結構指令及定義函數,那麼這期我們就來說說服務器是怎麼接收用戶提交的數據的。

一、表單提交

        在學習表單提交之前首先需要理解甚麼是get、post和url。

        1.1  get & post

=> 兩個用於請求收集數據的語句。

特性GETPOST
數據位置URL 參數(可見)HTTP 請求正文(不可見)
安全性低(適合非敏感數據)高(適合密碼、個人信息)
使用場景搜索、分頁等簡單操作註冊、登錄、數據提交
PHP 獲取方式$_GET['參數名']$_POST['參數名']
  •  get: 即url(網址)中的"?",'?'後面的就是GET收集到的數據。

  • post: 隱藏在請求主體中(要抓包才能看到內容)。

        1.2 提交流程

=> 這邊用在csdn更改用戶資料作例子。

        i.) 用戶發送更改資料的請求給服務器。

        ii.) 服務器把上傳數據的頁面發送給用戶(包括get或post請求)

        iii.) 用戶把新數據發送給服務器

        iv.) 服務器收到儲存數據的臨時文件(臨時文件存在時間非常短)

        v.) 服務器馬上把數據存儲起來

        vi.) 服務器響應(資料更新成功)

二、超全局變量

        超全局變量是指已經預定義的變量,類似於系統已經定義的函數,分別在於這次是變量。

        2.1  $_GET

=> 專門用於儲存從GET請求中收集到的數據,收集到的數據會以數組的方式儲存 ( [標]=>[值] ),

若是不知道數組大家可以先稍微看一下上期的文章哈。

=> 比如我在表單(get請求)上的name欄填寫了111。password欄填寫了111111

=> 提交之後就會自動填寫到url中(?標=值 & 標=值),以數組的方式儲存。

//提交後,get請求收集到的數據會存到$_GET變量中
print_r($_GET);    //因為是數組所以要用print_r()::輸出:Array([username]=>111 [passsword]=>111111)//也可以單獨引出數據
echo $_GET["username"];    //因為是字符,所以用echo::輸出:111

        

        2.2  $_POST

跟$_GET大差不差,分別只在於:

  • post提交的數據,不會顯示在url上(不可見)。
  • post提交的數據會存於$_POST中。

        => post會用於傳輸個人資料等敏感訊息(數據不顯示,需抓包才能看到)

三、實際操作

        接收上傳數據主要有3個步驟: 表單製作、數據處理、存儲數據。

        3.1  表單製作

* 要是看不懂下面的代碼,可以稍微看一看前端篇1(文末鏈接)

<form action="" method="get">    //以get的方式接收數據name:<input type="text" name="username"><br>         //下標="username",值=輸入的數值password:<input type="password" name="password"><br>    //下標="password"<input type="submit" value="上傳">
</form>//POST也是同理可證
<form action="" method="post">    //只是數據接收方式不同而己

* input 中的name參數等於甚麼,下標就是甚麼

        3.1.1  數據為文件

        若要上傳文件類的數據,所用的代碼就與字符串的不一樣。首先就要滿足2個條件

  • method屬性=表單提交方式必須為POST

  • enctype屬性=form表單屬性,用以規範表單數據的編碼方式enctype="multipart/form-data"

        => 默認的編碼方式無法上傳2進制文件,會轉義特殊字符。

<form action="數據要提交到的網址" method="post" enctype="multipart/form-data"><input type="file">
</form>!!$_FILES是2維數組
::$_FILES變量默認接收上傳檔案
**$_FILES的下標是定死的,不像name和password一樣是自定義的::分別是[name], [type], [tmp_name], [error], [size][name]=文件原始名
[type]=MIME類型
[tmp_name]=臨時存儲路徑
[error]=文件是否上傳成功
[size]=文件大小(KB)

=> $_FILES是2維數組

//若要引用[name]數據
echo $_FILES['file']["name"]

        3.2  數據處理

=> 密碼需要通過加密儲存,用戶名可能有多餘的空格需要刪除,又或者會有中文亂碼的問題。還要將同一類數據賦值到統一變數中,方便存儲。

        3.2.1  空格刪除

        把名字旁多餘的空格刪除。

                => 會把"111"左邊的所有空格刪除

//get和post都是一樣的
trim($_POST["username"]);    //把值兩邊的空格刪掉
trim($_GET["username"]);     //從收集的數據中,找到標為"username"的值echo trim("    HI    ");
::輸出:HI

   

        3.2.2  密碼加密

        把密碼加密成32位密文,確保安全存儲。

//get和post都是一樣的
md5($_GET["password"]);    //從收集的數據中,找到標為"password"的值
md5($_POST["password"]);   //把值加密成32位密文

        3.2.3  臨時存儲至統一變量

        因為存儲命令中需要輸入具體的值,將其賦值到統一變量中就不用每次都重新手動輸入不同的值。

$username=trim($__POST['username']);    //把空格刪除後把值賦到$username變量中
$username=trim($__GET['username']);     //每次接收 用戶名 數據,都會存到$username變量中$password=md5($_POST["password"]);    //把數據加密後把值賦到$password變量中
$password=md5($_GET["password"]);     //每次接收 密碼 數據,都會存到$password變量中//get和post都是一樣的

        3.2.4  其他字符串處理函數

        這裡只跟大家講功能哈,怎麼個用法大家用的時侯查一下就好,不用特別記。

  • ltrim()

         刪除字符串左邊的空白字符,或指定字符

  • rtrim()

         刪除字符串右邊的空白字符,或指定字符

  • trim()

         刪除字符串兩邊的空白字符,或指定字符

  • strlen()

         獲取字符串的長度

  • substr()

         字符串截取

  • str_replace()

         字符串替代

  • strtolower()

         將字符串(英文)轉為小寫(a,b,c)

  • strtoupper()

         將字符串轉為大寫(A,B,C)

  • strip_tags()

         刪除字符串的<html>、<xml>、<php>、<js>標籤

  • htmlspecialchars()

         把一些預定義字符轉換為HTML實體字符

echo htmlspecialchars("<hr>");    //<hr>本來是具有換行功能的
::輸出:<hr>                       //<hr>失去換行了功能,會直接輸出::後面講數據庫的時侯會細說

                3.2.4.1  輸出特殊字符

                字符如空格符、大小於符是不能直接輸出的,不然在網頁上顯示不出來。

&nbsp; =  表示空格符
&amp;  =  表示 & 符號
&lt;   =  表示 < (小於符)
&gt;   =  表示 > (大於符)

        3.3  數據儲存

=> 收集到的數據會統一存儲到指定的文件中

$username=trim($__POST['username']);    //刪掉空格後,把數據存儲到$username變量中
$password=md5($_POST["password"]);      //把密碼加密儲存到$password變量中file_put_contents(<儲存到哪個文件>.<數據1>." ".<數據2>."\n");
//name和password一起保存到同一文件中
//帳號和密碼之間用空格隔開
//接一個換行符(換行以存儲另一組數據)::假設:
$username="xiaofong";
$password=(123456);
file_put_contents('1.txt',$username." ".$password."\n");
::輸出(在1.txt文件中):xiaofong 123456(換行)

四、小結

        大家只需要記住它們的功能和運作邏輯就可以了,實操可以讓AI幫忙寫代碼,具體的之前已經說過了,這裡就不多說了。接我們會開始研究後端python、數據庫mysql以及分析漏洞哈。大家敬請期待了。


post抓包:  如何使用burpsuite實現0元購? -CSDN博客

trae AI寫代碼:後端開發技術教學(一) [附2025最新可用 phpstudy2018下載鏈接] -CSDN博客

前端HTML:

前端開發技術教學(一) -CSDN博客

前端開發技術教學(二) -CSDN博客


後記:後端開發技術教學(四) 數據交互延伸-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92731.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92731.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92731.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python训练Day39

浙大疏锦行 图像数据的格式&#xff1a;灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 一、 图像数据的介绍 图像数据&#xff0c;相较于结构化数据&#xff08;表格数据&#xff09;他的特…

十八、MySQL-DML-数据操作-插入(增加)、更新(修改)、删除

DML数据操作添加数据更新(修改)数据删除数据总结代码&#xff1a; -- DML:数据操作语言-- -- DML:插入数据-insert -- 1.为tb_emp表的username,name&#xff0c;gender 字股插入值insert into tb_emp(username,name,gender,create_time,update_time) values (Toki,小时,2,now()…

Linux 安装 JDK 8u291 教程(jdk-8u291-linux-x64.tar.gz 解压配置详细步骤)​

一、准备工作 ​下载 JDK 安装包​ 去 Oracle 官网或者可信的镜像站下载&#xff1a; ​jdk-8u291-linux-x64.tar.gz​ &#xff08;这是一个压缩包&#xff0c;不是安装程序&#xff0c;解压就能用&#xff09; ​jdk-8u291-linux-x64.tar.gz​下载链接&#xff1a;https://pa…

蓝桥杯----锁存器、LED、蜂鸣器、继电器、Motor

(七)、锁存器1、原理蓝桥杯中数据传入口都是P0&#xff0c;也就是数码管段选、位选数据、LED亮灭的数据、蜂鸣器启动或禁用的数据&#xff0c;外设启动或者关闭都需要通过P0写入数据&#xff0c;那么如何这样共用一个端口会造成冲突嘛&#xff0c;答案是肯定的。所以蓝桥杯加入…

AI热点周报(8.3~8.9):OpenAI重返开源,Anthropic放大招,Claude4.1、GPT5相继发布

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录一、OpenAI的"开源回归"&#xff1a;时隔5年的战略大转弯1. GPT-OSS系列&a…

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;企业级K8s集群运维实战 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要针对不同的客户环境部署基于containerd容器版 K8S 1.33.3集群&a…

Linux抓包命令tcpdump详解笔记

文章目录一、tcpdump 是什么&#xff1f;二、基本语法三、常用参数说明四、抓包示例&#xff08;通俗易懂&#xff09;1. 抓所有数据包&#xff08;默认 eth0&#xff09;2. 指定接口抓包3. 抓取端口 80 的数据包&#xff08;即 HTTP 请求&#xff09;4. 抓取访问某个 IP 的数据…

抖音、快手、视频号等多平台视频解析下载 + 磁力嗅探下载、视频加工(提取音频 / 压缩等)

跟你们说个安卓上的下载工具&#xff0c;还挺厉害的。它能支持好多种下载方式&#xff0c;具体多少种我没细数&#xff0c;反正挺全乎的。​ 平时用得最多的就是视频解析&#xff0c;像抖音、快手、B 站上那些视频&#xff0c;想存下来直接用它就行&#xff0c;连海外视频的也能…

【iOS】JSONModel源码学习

JSONModel源码学习前言JSONModel的使用最基础的使用转换属性名称自定义错误模型嵌套JSONModel的继承源码实现initWithDictionaryinit__doesDictionaryimportDictionary优点前言 之前了解过JSONModel的一些使用方法等&#xff0c;但是对于底层实现并不清楚了解&#xff0c;今天…

SmartMediaKit 模块化音视频框架实战指南:场景链路 + 能力矩阵全解析

✳️ 引言&#xff1a;从“内核能力”到“模块体系”的演进 自 2015 年起&#xff0c;大牛直播SDK&#xff08;SmartMediaKit&#xff09;便致力于打造一个可深度嵌入、跨平台兼容、模块自由组合的实时音视频基础能力框架。经过多轮技术迭代与场景打磨&#xff0c;该 SDK 已覆…

【第5话:相机模型1】针孔相机、鱼眼相机模型的介绍及其在自动驾驶中的作用及使用方法

相机模型介绍及相机模型在自动驾驶中的作用及使用方法 相机模型是计算机视觉中的核心概念&#xff0c;用于描述真实世界中的点如何投影到图像平面上。在自动驾驶系统中&#xff0c;相机模型用于环境感知&#xff0c;如物体检测和场景理解。下面我将详细介绍针孔相机模型和鱼眼相…

推荐一款优质的开源博客与内容管理系统

Halo是一款由Java Spring Boot打造的开源博客与内容管理系统&#xff08;CMS&#xff09;&#xff0c;在 GitHub上拥有超过36K Start的活跃开发者社区。它使用GPL‑3.0授权开源&#xff0c;稳定性与可维护性极高。 Halo的设计简洁、注重性能&#xff0c;同时保持高度灵活性&a…

【GPT入门】第43课 使用LlamaFactory微调Llama3

【GPT入门】第43课 使用LlamaFactory微调Llama31.环境准备2. 下载基座模型3.LLaMA-Factory部署与启动4. 重新训练![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e7aa869f8e2c4951a0983f0918e1b638.png)1.环境准备 采购autodl服务器&#xff0c;24G,GPU,型号3090&am…

计算机网络:如何理解目的网络不再是一个完整的分类网络

这一理解主要源于无分类域间路由&#xff08;CIDR&#xff09;技术的广泛应用&#xff0c;它打破了传统的基于类的IP地址分配方式。具体可从以下方面理解&#xff1a; 传统分类网络的局限性&#xff1a;在早期互联网中&#xff0c;IP地址被分为A、B、C等固定类别&#xff0c;每…

小米开源大模型 MiDashengLM-7B:不仅是“听懂”,更能“理解”声音

目录 前言 一、一枚“重磅炸弹”&#xff1a;开源&#xff0c;意味着一扇大门的敞开 二、揭秘MiDashengLM-7B&#xff1a;它究竟“神”在哪里&#xff1f; 2.1 “超级耳朵” 与 “智慧大脑” 的协作 2.2 突破&#xff1a;从 “听见文字” 到 “理解世界” 2.3 创新训练&a…

mysql出现大量redolog、undolog排查以及解决方案

排查步骤 监控日志增长情况 -- 查看InnoDB状态 SHOW ENGINE INNODB STATUS;-- 查看redo log配置和使用情况 SHOW VARIABLES LIKE innodb_log_file%; SHOW VARIABLES LIKE innodb_log_buffer_size;-- 查看undo log信息 SHOW VARIABLES LIKE innodb_undo%;检查长时间运行的事务 -…

华为网路设备学习-28(BGP协议 三)路由策略

目录&#xff1a; 一、BGP路由汇总1、注&#xff1a;使用network命令注入的BGP不会被自动汇总2、主类网络号计算过程如下&#xff1a;3.示例 开启BGP路由自动汇总bgp100 开启BGP路由自动汇总import-route 直连路由 11.1.1.0 /24对端 为 10.1.12.2 AS 2004.手动配置BGP路…

微信小程序中实现表单数据实时验证的方法

一、实时验证的基本实现思路表单实时时验证通过监听表单元素的输入事件&#xff0c;在用户输入过程中即时对数据进行校验&#xff0c;并并即时反馈验证结果&#xff0c;主要实现步骤包括&#xff1a;为每个表单字段绑定输入事件在事件处理函数中获取当前输入值应用验证规则进行…

openpnp - 顶部相机如果超过6.5米影响通讯质量,可以加USB3.0信号放大器延长线

文章目录openpnp - 顶部相机如果超过6.5米影响通讯质量&#xff0c;可以加USB3.0信号放大器延长线概述备注ENDopenpnp - 顶部相机如果超过6.5米影响通讯质量&#xff0c;可以加USB3.0信号放大器延长线 概述 手头有1080x720x60FPS的摄像头模组备件&#xff0c;换上后&#xff…

【驱动】RK3576-Debian系统使用ping报错:socket operation not permitted

1、问题描述 在RK3576-Debian系统中,连接了Wifi后,测试网络通断时,报错: ping www.csdn.net ping: socktype: SOCK_RAW ping: socket: Operation not permitted ping: => missing cap_net_raw+p capability or setuid?2、原因分析 2.1 分析打印日志 socktype: SOCK…