久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

PHP教程(6)字符串?dāng)?shù)組函數(shù)+數(shù)組運(yùn)算(合并+比較)+驗(yàn)證碼)+文件上傳(數(shù)據(jù)傳輸流+上傳條件+上傳步驟)

 知識(shí)書館 2022-07-17 發(fā)布于廣東

回顧

系統(tǒng)函數(shù):字符串函數(shù)和時(shí)間日期函數(shù)

數(shù)組

         數(shù)組元素可以是任意數(shù)據(jù)類型,;數(shù)組長(zhǎng)度沒有限制

         php凡是碰到變量帶中括號(hào)的一定會(huì)當(dāng)做數(shù)組處理

         遍歷數(shù)組:for循環(huán),,foreach循環(huán),each搭配循環(huán),,函數(shù)(key,,currentnext,,prev,,endreset

         二維數(shù)組:php數(shù)組元素又是數(shù)組

         數(shù)據(jù)結(jié)構(gòu):棧(FILO)和隊(duì)列(FIFO


數(shù)組

字符串?dāng)?shù)組函數(shù)

字符串與數(shù)組之間的關(guān)系(轉(zhuǎn)換)

explode:爆炸,,將一個(gè)字符串按照某個(gè)指定的規(guī)則(通常是特殊字符),,將數(shù)組分成多個(gè)段,每一段都當(dāng)做一個(gè)數(shù)組的元素,,返回一個(gè)索引數(shù)組

implode:粘合,,將一個(gè)數(shù)組內(nèi)部的所有元素按照某個(gè)指定的規(guī)則(特殊字符),將所有的元素拼接成一個(gè)字符串

數(shù)組運(yùn)算

數(shù)組運(yùn)算通常指的兩種:+運(yùn)算,,合并運(yùn)算,,比較運(yùn)算

+運(yùn)算

將兩個(gè)數(shù)組的元素進(jìn)行數(shù)量上的增加,返回一個(gè)數(shù)組,;如果數(shù)組元素的鍵名在第一個(gè)數(shù)組中存在,,那么第二個(gè)數(shù)組的元素就會(huì)被拋棄(鍵名無論是索引還是關(guān)聯(lián)都是一樣的)

合并運(yùn)算

array_merge:合并,指的是將兩個(gè)數(shù)組中的元素進(jìn)行累計(jì),。如果后面的數(shù)組與前面的數(shù)組有下標(biāo)(鍵名:關(guān)聯(lián))相同的,,那么后面的元素的值會(huì)覆蓋前面的;如果是索引的相同下標(biāo),,會(huì)自動(dòng)的修改下標(biāo)疊加到前面的數(shù)組里,。

比較運(yùn)算

比較兩個(gè)數(shù)組元素的個(gè)數(shù),然后依次比較數(shù)組元素的值

== :值比較

         相等條件:數(shù)組的元素個(gè)數(shù)必須相同,,數(shù)組元素的值必須在順序上與另外一個(gè)數(shù)組元素的值相同

=== :類型比較

         全等條件:在相等條件上保證元素的類型也相同

驗(yàn)證碼

驗(yàn)證碼的英文單詞叫做captcha

用數(shù)組來模擬生成驗(yàn)證碼對(duì)應(yīng)的隨機(jī)字符串,。

1.      生成有所有元素的數(shù)組

$arr = array('a’,’b’,’c’……)

range:按照指定的ASCII碼來生成一個(gè)序列對(duì)應(yīng)的數(shù)組元素(索引數(shù)組)

2.      獲取隨機(jī)的多個(gè)元素

array_rand:只能隨機(jī)取出多個(gè)數(shù)組元素的下標(biāo),返回一個(gè)索引數(shù)組

遍歷獲取的隨機(jī)下標(biāo):取出對(duì)應(yīng)的值

3.      打亂隨機(jī)取得的下標(biāo)

shuffle:將數(shù)組元素的順序打亂,,并且重新生成索引,。

瀏覽器提交數(shù)據(jù)

1.      瀏覽器為什么要提交數(shù)據(jù)給服務(wù)器,?

告訴服務(wù)器要做提供什么樣的服務(wù)

2.      瀏覽器提交數(shù)據(jù)的方式,?

URL:將數(shù)據(jù)綁定在url之后

表單:<form>,將所有的要提交的數(shù)據(jù)放到對(duì)應(yīng)的表單內(nèi)部

         POST:數(shù)據(jù)采用post方式提交,,post提交是將數(shù)據(jù)打包提交,,不會(huì)綁定在url后面

         GET:數(shù)據(jù)采用get方式提交,瀏覽器將form表單中的數(shù)據(jù)自動(dòng)的綁定到url后面

3.      postget的區(qū)別

a)        提交方式不一樣,post提交看不到數(shù)據(jù),,但是get可以看到(在URL后面)

b)        安全性不一樣:post看不見,,get看得見

c)        二者傳輸?shù)臄?shù)據(jù)量不一樣:get理論上不超過2KBpost理論上可以達(dá)到8M

服務(wù)器接收數(shù)據(jù)

1.      php采用什么方式接收數(shù)據(jù),?

a)        $_GET:接收全部get方式提交的數(shù)據(jù),,形成的是一個(gè)數(shù)組,表單名字(name屬性)作為鍵名,,數(shù)據(jù)作為鍵值

b)        $_POST:接收全部post方式提交的數(shù)據(jù),,與$_GET形式一樣。

c)        $_REQUEST:不管是get方式提交還是post方式提交,,都能夠接收,,而且還能接受其他額外數(shù)據(jù)。

$_REQUEST接收數(shù)據(jù)存在安全漏洞,,原因是因?yàn)?/span>$_REQUEST = array_merge($_GET,$_POST);

php.ini中有一個(gè)選項(xiàng)控制$_REQUEST的覆蓋順序:request_order

如果是在低版本中可能沒有該選項(xiàng),,有一個(gè)variables_order,是用來控制$_REQUEST里面的變量順序

請(qǐng)求處理

get請(qǐng)求

post請(qǐng)求

任何沒有name屬性的表單,,瀏覽器都不會(huì)提交給服務(wù)器

數(shù)據(jù)接收或者判斷的前處理

使用isset函數(shù)進(jìn)行數(shù)據(jù)判斷

復(fù)選框的使用

checkbox通常情況下不止一個(gè)數(shù)據(jù)

1.      制作表單

2.      接收數(shù)據(jù)

矛盾:表單中復(fù)選框通常一個(gè)類復(fù)選框名字都是同一個(gè),,數(shù)據(jù)提交之后服務(wù)器在接收數(shù)據(jù)的時(shí)候,會(huì)將所有的同名的表單進(jìn)行數(shù)據(jù)的覆蓋,,最終只保留一個(gè),。

解決方案:

被同名表單元素的name屬性增加中括號(hào),瀏覽器會(huì)正常的當(dāng)做字符串來解析和處理,,但是一旦提交到服務(wù)器,,php看到中括號(hào)會(huì)當(dāng)做數(shù)組處理(不會(huì)覆蓋,增加元素)

1.      修改表單:給checkboxname屬性,,增加中括號(hào)

2.      服務(wù)器正常接收數(shù)據(jù),;

用戶信息都需要保存到數(shù)據(jù)庫:數(shù)組不能傳輸給數(shù)據(jù)庫,數(shù)組也不能夠保存到數(shù)據(jù)庫,。

提取checkbox保存的信息,,反顯到對(duì)應(yīng)的checkbox,顯示給用戶

1.      從數(shù)據(jù)庫獲?。韩@取到是字符串,,需要將字符串反轉(zhuǎn)成數(shù)組:explode

2.      如何確定哪些checkbox是被選中的呢?

in_array:判斷一個(gè)值是否在數(shù)組中存在,,如果存在返回true,,失敗返回false

文件傳輸流

數(shù)據(jù)在網(wǎng)絡(luò)間傳輸?shù)男问椒譃閮煞N:字符流和二進(jìn)制流

數(shù)據(jù)傳輸一定只能是二進(jìn)制。

字符流:數(shù)據(jù)的傳輸是按照有效字符串進(jìn)行傳輸(數(shù)據(jù)本身是字符串)

二進(jìn)制流:數(shù)據(jù)本身是二進(jìn)制格式

不管是get方式還是post方式所能提交的數(shù)據(jù),,只能是字符流,。瀏覽器默認(rèn)的不能提交二進(jìn)制流數(shù)據(jù),。(文件,圖片都不能提交給服務(wù)器),。

文件上傳

1.      什么是文件上傳,?

將瀏覽器端電腦上所存在的文件,通過瀏覽器提交給服務(wù)器,,并保存在服務(wù)器端,。

文件上傳條件

a)        服務(wù)器端必須要允許瀏覽器端上傳文件,PHP負(fù)責(zé)管理

為了方便查看文件上傳的臨時(shí)文件,,修改臨時(shí)文件的存儲(chǔ)目錄:D:/server/tmp

b)        瀏覽器允許文件上傳:瀏覽器能夠根據(jù)表單選擇對(duì)應(yīng)的要上傳的文件,,文件上傳只能是POST提交

二進(jìn)制流不可能直接上傳,必須告訴瀏覽器當(dāng)前文件的流是二進(jìn)制流:給form增加一個(gè)屬性:enctype = “multipart/form-data”告訴瀏覽器當(dāng)前要提交給服務(wù)器的數(shù)據(jù)可能存在二進(jìn)制流

以上代碼執(zhí)行時(shí)出現(xiàn)了三個(gè)現(xiàn)象

1.      文件實(shí)現(xiàn)了上傳,,存在于指定的臨時(shí)目錄下,,以臨時(shí)文件的形式存在

2.      隨著腳本執(zhí)行結(jié)束,臨時(shí)文件消失

操作系統(tǒng)的原因:操作系統(tǒng)認(rèn)為當(dāng)前是用戶提交的數(shù)據(jù),,那么該數(shù)據(jù)存在不安全性,,對(duì)于系統(tǒng)存在安全威脅,不管當(dāng)前服務(wù)器對(duì)該文件處理或者不處理,,系統(tǒng)都會(huì)在服務(wù)器處理完之后清理掉,。

3.      文件上傳成功之后,$_POST接收不到數(shù)據(jù)

$_POSTpost提交一樣,,$_POST只能接收字符流數(shù)據(jù),,而文件都是二進(jìn)制流,所以不能接收

PHP中專門用$_FILES來接收文件數(shù)據(jù),。所有的文件上傳的數(shù)據(jù)都在$_FILES里面,。

文件轉(zhuǎn)移

在腳本期間將臨時(shí)文件從臨時(shí)目錄轉(zhuǎn)入到指定的文件上傳的目錄里。

move_uploaded_file(臨時(shí)文件路徑,目標(biāo)文件路徑):兩個(gè)路徑都是帶文件名,,移動(dòng)是直接移動(dòng)源文件

copy(臨時(shí)文件路徑,目標(biāo)文件路徑):移動(dòng)的是復(fù)制的文件,,源文件不動(dòng)

文件上傳流程

封裝文件上傳函數(shù)

文件錯(cuò)誤代碼說明

文件重命名

算法

排序算法:如何將一個(gè)無序的數(shù)組(數(shù)值數(shù)組)進(jìn)行排序

常見的排序方法:冒泡,選擇,,插入和快速排序

冒泡算法

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多