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.pswp.cn/bicheng/77634.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77634.shtml
英文地址,請注明出處:http://en.pswp.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;特別是在需要處理大量中斷請求的實…