web后端语言下篇

#作者:允砸儿

#日期:乙巳青蛇年  三月廿一

笔者今天将web后端语言PHP完结一下,后面还会写一个关于python的番外。

PHP函数

PHP函数它和笔者前面写的js函数有些许类似,都是封装的概念。将实现某一功能的代码块封装到一个结构中,实现代码复用。只要系统在内容中能够找到对应的函数,就可以执行。(函数的调用可以在函数定义之前)

1、有内置函数大约1000种

2、自定义的函数:声明+调用(形参和实参)

函数的定义

function函数名(参数){

#函数体

}

函数的使用

函数名(参数)

PHP函数准则:

函数的名称应该提示出它的功能。函数名称以字母或下划线开头(不能以数字开头)。

比如:

function abc(){
    echo 'nihao';
}
abc();

PHP表单操作

表单是一个包含表单元素的区域。表单的作用是搜集不同类型的用户输入,然后将用户信息提交给服务器。在结合前端和后端的一些东西,判断用户对不对。

#注意;#不是谁想用就想用的,需要后端来核实,验证你前端输入过来的东西对不对。

它以数组方式接收,以数组方式处理,数组里面有很多元素。

PHPweb操作

用户提交数据通常是使用表单进行提交,也可以使用网址中的参数传递数据,这些数据通过HTTP请求的方式发送,使web服务器获取。

PHP提供了预定义的超全局变量,用来获取HTTP请求信息,这些变量的数据类型均为数组。

笔者举实例演示一下:#在这里笔者告诉朋友们一个技巧在PHP表单中用英文的!可以快速形成HTML语言。

接下来笔者用form做表单,PHP用$_post去接收.

1、接收数据,处理数据,返回结果

笔者网页演示一下;

2、判断用户是否点击按钮

笔者是用的if语句来判断,这里不用拘泥于一种

在这里面isset用来检查变量是否被设置为非空,变量是否被初始化

if (isset($_POST['submit']))

3、用三元运算符来判断user、password是否被拿值

$user = isset($_POST['user']) ? $_POST['user'] : null; 

$password = isset($_POST['password']) ?$_POST['password'] : null;

4、 判断用户,密码是否正确

用函数function login把前几个组合在一起

网页演示:

PHP文件上传

PHP文件上传是web开发中常见的功能之一,它允许用户通过web表单将文件(如图片、文档、视频等)上传到服务器。

文件上传的基本路径

客户电脑                                                                           服务器电脑

文件夹保存本地图片      第一次请求:文件上传表单文件》

                                      《第一次响应:提供文件上传表单

浏览器内容:

1、浏览器显示表单       第二次请求携带文件            操作系统保留            1、储存在临时文件

2、用户选择本地文件                                                                                  2、php作为后端判断

3、用户点击上传           第二次响应告知结果                                            3、移动文件到指定目录

接下来笔者带大家了解一下文件上传需要的一些函数和数组的含义

1、在form表单标签里面我们需要一个新的属性enctype="multipart/form-data">

主要规范表单数据的编码方式。

2、在HTML语句中加入file

文件上传:<input type="file" name="upload"><br>

3、了解数组的含义

(1)Array ( [user] => [password] => [submit] => 提交 )这是一维数组

(2)Array ( [upload] => Array ( [name] => 颜色判断结果.png [type] => image/png [tmp_name] => C:\Users\17267\AppData\Local\Temp\php9778.tmp [error] => 0 [size] => 2831 ) )这是二维数组。

name:文件名字。type:文件类型。tmp_name:临时路径。error:错误代码,0代表成功。

size:文件大小

4、获取上传文件后缀名

$ext=substr(strrchr($name,'.'),1);
#通过函数结合拿到后缀名,函数可以结合,拿到字符串的一个属性。

5、生成一个随机文件名

echo rand().'.'.$ext;

用$file_name来封装rand

6、存储临时文件信息

用if语句创造一个文件夹,把权限提升到最高,在用一个函数去声明。我们将创造出的文件夹与随机文件名封装到一个函数中。最后趁着临时文件在的时候保存下来。

网页演示:

按照笔者思路来写,一套下来文件成功存储在tex1中。php文件上传很重要网安会在这里面寻找漏洞。

PHP面向对象

它是一种编程思维,面向对象是一种以对象(object)为中心的编程思想。面向对象编程更注重对问题的抽象和封装,通过将问题分解为一些列相互协作的对象来实现程序的功能。

php类和对象

类是抽象的概念,仅仅是模板。用来描述具有相同属性和方法的对象的集合。比如:人类。

对象是类的实例,是某一个具体的事物。比如:对象是实际的人张三李四王五。

用笔者老师教的一个实例向朋友们去解释这个事:

首先找一个温柔的女朋友

class类

1、找大学

2、浙江大学

3、浙江大学女性

4、浙江大学女性温柔的

对象、具体

5、new  类

6、浙江大学女性温柔的----英语老师

接下来笔者去创造一个对象:

他的名字是long简单的做一段自我介绍:

网页演示:

PHP魔术方法

定义:PHP魔术方法(Magic Methods)是一类特殊的方法,它们在PHP中具有特定的命名和功能,能够在特定情况下自动被调用。

命名规则:魔术方法通常以两个下划线( —_)开头,后跟方法名称,如_construct()、_destruct()等。

与普通方法的区别:与普通方法不同,魔术方法不需要显式调用,而是由PHP解释器在特定时机自动触发。

魔术方法有很多笔者在这里只介绍4种方法:

第一种魔术方法:

构造方法:

construct()是一个特殊的方法,当创建新对象时,该方法会自动被调用,用于初始化对象的状态或执行其他必要的操作。参数列表 construct()方法可以接受任意数量的参数,这些参数用于在创建对象时传递初始化数据。

使用示例:

在类中定义construct()方法,并在创建对象时传递参数来初始化对象的状态。#注意事项如果类中定义了construct()方法,则必须在创建对象时提供所需的参数,否则会导致错误。

第二种魔术方法:

析构方法:

定义与用途destruct()是另一个特殊的方法,当对象不再被引用或脚本执行结束时,该方法会自动被调用,用于执行清理操作,如释放资源、关闭数据库连接等。 参数列表 destruct()方法不接受任何参数。

使用实例:

在类中定义 destruct()方法,并在其中执行必要的清理操作。

在写后两种魔术方法的时候,笔者简单解释下什么是序列化,反序列化。反序列化就是将一个特别 大的高的东西切成小块运输。具体来说就是数组是大的东西,把它切成字符串小的东西。

第三种魔术方法:

__sleep()方法:

1,触发时机:当对象被序列化时自动调用。
2,功能描述:该方法可以清理对象,并返回一个包含所有应被序列化的属性名称的数组。如果该方法未返回任何内容,则 NULL 被序列化并产生一个 E WARNING级别的错误。
3,参数列表:此方法不接受任何参数。
4,返回值:返回一个包含所有需要被序列化的属性名称的数组。

使用实例:

  public function __sleep(){echo '你是不是在外面偷偷使用序列化函数';return array('name');

}

第四种魔术方法:

_wakeup方法:

1、触发时机:当反序列化一个对象时自动调用。
2、功能描述:该方法可以重新建立数据库连接,或执行其它初始化操作。它不需要任何参数,也没有任何返回值。
3、如果在反序列化过程中,__wakeup()方法的执行抛出了一个异常,那么反序列化操作会失败,并抛出该异常。

function __wakeup(){echo '你是不是在外面偷偷使用反序列化函数吗?unserialize';
}

php后端内容已经完成了,内容有点多。最后希望大家可以一起进步,把知识学给自己,让自己变的更强。

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

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

相关文章

LeetCode 259 题全解析:Swift 快速找出“满足条件”的三人组

文章目录 摘要描述示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a; 题解答案&#xff08;Swift&#xff09;题解代码分析示例测试及结果时间复杂度空间复杂度总结 摘要 本文围绕 LeetCode 259 题“较小的三数之和”&#xff0c;通过 Swift 给出两种解法&#xff0c;并…

第八节:React HooksReact 18+新特性-React Server Components (RSC) 工作原理

• 与SSR区别&#xff1a;零客户端JS、服务端数据直出 • 搭配Next.js 14使用场景 React Server Components (RSC) 工作原理及 Next.js 14 应用场景解析 一、RSC 核心工作原理 React Server Components (RSC) 是 React 18 引入的颠覆性特性&#xff0c;其设计目标是 服务端与…

万字解析TCP

通过学习视频加博客的组合形式&#xff0c;整理了一些关于TCP协议的知识。 *图源&#xff1a;临界~的csdn博客。 一、TCP建立连接 TCP的建立连接&#xff0c;大致可以分为面向连接、TCP报文结构、TCP的三次握手、TCP的建立状态、SYN泛洪攻击。 1.1、面向连接 面向连接 --- …

前端vue+typeScritp+elementPlus基础页面实现:

效果&#xff1a; 前端代码&#xff1a; index.vue: <template><el-container><el-main><el-card class"search-card" shadow"never"><transition :enter-active-class"proxy?.animate.searchAnimate.enter" :le…

微电网与分布式能源:智能配电技术的场景化落地

安科瑞顾强 随着数字化转型与能源革命的加速推进&#xff0c;电力系统正经历从传统模式向智能化、网络化方向的深刻变革。用户侧的智能配电与智能用电技术作为这一变革的核心驱动力&#xff0c;正在重塑电力行业的生态格局。本文将从技术架构、应用场景及未来趋势等维度&#…

绿幕抠图直播软件-蓝松抠图插件--使用相机直播,灯光需要怎么打?

使用SONY相机进行绿幕抠图直播时&#xff0c;灯光布置是关键&#xff0c;直接影响抠图效果和直播画质。以下是详细的灯光方案和注意事项&#xff1a; 一、绿幕灯光布置核心原则 均匀照明&#xff1a;绿幕表面光线需均匀&#xff0c;避免阴影和反光&#xff08;亮度差控制在0.5…

Linux Privilege Escalation: LD_PRELOAD

声明&#xff1a;本文所有操作需在授权环境下进行&#xff0c;严禁非法使用&#xff01; 0x01 什么是 LD_PRELOAD&#xff1f; LD_PRELOAD 是 Linux 系统中一个特殊的环境变量&#xff0c;它允许用户在程序启动时优先加载自定义的动态链接库&#xff08;.so 文件&#xff09;&…

程序性能(1)嵌入式基准测试工具

程序性能(1)嵌入式基准测试工具 Author&#xff1a;Once Day date: 2025年4月19日 漫漫长路&#xff0c;才刚刚开始… 全系列文档查看&#xff1a;Perf性能分析_Once-Day的博客-CSDN博客 参考文档: CPU Benchmark – MCU Benchmark – CoreMark – EEMBC Embedded Micropr…

ArrayList的subList的数据仍是集合

ArrayList的subList结果不可强转成ArrayList&#xff0c;否则会抛出 ClassCastException异常 • 级别&#xff1a; 【CRITICAL】 • 规约类型&#xff1a;BUG • 最坏影响&#xff1a; 程序错误&#xff0c;抛出异常 说明&#xff1a;subList 返回的是ArrayList的内部类SubL…

Notepad++中将文档格式从Windows(CR LF)转换为Unix(LF)

在Windows中用记事本写了一个.sh的Linux运行脚本&#xff0c;是无法直接在Linux中执行&#xff0c;需要首先把文本编码格式转换为Unix的&#xff0c;特别是换行符这些&#xff0c;转换步骤如下&#xff1a; 1、打开文档 在Notepad中打开需要转换的文件。 2、进入文档格式转换…

使用Ingress发布应用程序

使用Ingress发布应用程序 文章目录 使用Ingress发布应用程序[toc]一、什么是Ingress二、定义Ingress三、什么是Ingress控制器四、部署nginx Ingress控制器1.了解nginx Ingress控制器的部署方式2.安装nginx Ingress控制器3.本地实际测试 五、使用Ingress对外发布应用程序1.使用D…

【网络编程】TCP数据流套接字编程

目录 一. TCP API 二. TCP回显服务器-客户端 1. 服务器 2. 客户端 3. 服务端-客户端工作流程 4. 服务器优化 TCP数据流套接字编程是一种基于有连接协议的网络通信方式 一. TCP API 在TCP编程中&#xff0c;主要使用两个核心类ServerSocket 和 Socket ServerSocket Ser…

力扣刷题Day 21:两数之和(1)

1.题目描述 2.思路 暴力解法虽然不超时间限制&#xff0c;但是题解实在太妙了&#xff0c;哈希大法好&#xff01; 3.代码&#xff08;Python3&#xff09; class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:hash_table dict()for i, num i…

关于UE5的抗锯齿和TAA

关于闪烁和不稳定现象的详细解释 当您关闭抗锯齿技术时&#xff0c;场景中会出现严重的闪烁和不稳定现象&#xff0c;尤其在有细节纹理和小物体的场景中。这种现象的技术原因如下&#xff1a; 像素采样问题 在3D渲染中&#xff0c;每个像素只能表示一个颜色值&#xff0c;但…

【MySQL】MySQL建立索引不知道注意什么?

基本原则&#xff1a; 1.选择性原则&#xff1a; 选择高选择性的列建立索引(该列有大量不同的值) 2.适度原则&#xff1a;不是越多越好&#xff0c;每个索引都会增加写入开销 列选择注意事项&#xff1a; 1.常用查询条件列&#xff1a;WHERE字句中频繁使用的列 2.连接操作列…

Vue3 + TypeScript中provide和inject的用法示例

基础写法&#xff08;类型安全&#xff09; typescript // parent.component.vue import { provide, ref } from vue import type { InjectionKey } from vue// 1. 定义类型化的 InjectionKey const COUNTER_KEY Symbol() as InjectionKey<number> const USER_KEY Sy…

树莓派超全系列教程文档--(33)树莓派启动选项

树莓派启动选项 启动选项start_file &#xff0c;fixup_filecmdlinekernelarm_64bitramfsfileramfsaddrinitramfsauto_initramfsdisable_poe_fandisable_splashenable_uartforce_eeprom_reados_prefixotg_mode &#xff08;仅限Raspberry Pi 4&#xff09;overlay_prefix配置属…

java怎么找bug?Arthas原理与实战指南

Arthas原理与实战指南 1. Arthas简介 Arthas是阿里巴巴开源的Java诊断工具&#xff0c;其名字取自《魔兽世界》的人物阿尔萨斯。它面向线上问题定位&#xff0c;被广泛应用于性能分析、定位问题、安全审计等场景。Arthas的核心价值在于它能够在不修改应用代码、不重启Java进程…

Python自学第1天:变量,打印,类型转化

突然想学Python了。经过Deepseek的推荐&#xff0c;下载了一个Python3.12安装。安装过程请自行搜索。 乖乖从最基础的学起来&#xff0c;废话不说了&#xff0c;上链接&#xff0c;呃&#xff0c;打错了&#xff0c;上知识点。 变量的定义 # 定义一个整数类型的变量 age 10#…

基于STM32中断讲解

基于STM32中断讲解 一、NVIC讲解 简介&#xff1a;当一个中断请求到达时&#xff0c;NVIC会确定其优先级并决定是否应该中断当前执行的程序&#xff0c;以便及时响应和处理该中断请求。这种设计有助于提高系统的响应速度和可靠性&#xff0c;特别是在需要处理大量中断请求的实…