#作者:允砸兒
#日期:乙巳青蛇年? 三月廿一
筆者今天將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后端內容已經完成了,內容有點多。最后希望大家可以一起進步,把知識學給自己,讓自己變的更強。