回顧
系統函數:字元串函數和時間日期函數
數組
數組元素可以是任意資料類型;數組長度沒有限制
php凡是碰到變量帶中括号的一定會當做數組處理
周遊數組:for循環,foreach循環,each搭配循環,函數(key,current,next,prev,end,reset)
二維數組:php數組元素又是數組
資料結構:棧(FILO)和隊列(FIFO)
數組
字元串數組函數
字元串與數組之間的關系(轉換)
explode:爆炸,将一個字元串按照某個指定的規則(通常是特殊字元),将數組分成多個段,每一段都當做一個數組的元素,傳回一個索引數組
implode:粘合,将一個數組内部的所有元素按照某個指定的規則(特殊字元),将所有的元素拼接成一個字元串
數組運算
數組運算通常指的兩種:+運算,合并運算,比較運算
+運算
将兩個數組的元素進行數量上的增加,傳回一個數組;如果數組元素的鍵名在第一個數組中存在,那麼第二個數組的元素就會被抛棄(鍵名無論是索引還是關聯都是一樣的)
合并運算
array_merge:合并,指的是将兩個數組中的元素進行累計。如果後面的數組與前面的數組有下标(鍵名:關聯)相同的,那麼後面的元素的值會覆寫前面的;如果是索引的相同下标,會自動的修改下标疊加到前面的數組裡。
比較運算
比較兩個數組元素的個數,然後依次比較數組元素的值
== :值比較
相等條件:數組的元素個數必須相同,數組元素的值必須在順序上與另外一個數組元素的值相同
=== :類型比較
全等條件:在相等條件上保證元素的類型也相同
驗證碼
驗證碼的英文單詞叫做captcha
用數組來模拟生成驗證碼對應的随機字元串。
1. 生成有所有元素的數組
$arr = array(‘a’,’b’,’c’……)
range:按照指定的ASCII碼來生成一個序列對應的數組元素(索引數組)
2. 擷取随機的多個元素
array_rand:隻能随機取出多個數組元素的下标,傳回一個索引數組
周遊擷取的随機下标:取出對應的值
3. 打亂随機取得的下标
shuffle:将數組元素的順序打亂,并且重新生成索引。
浏覽器送出資料
1. 浏覽器為什麼要送出資料給伺服器?
告訴伺服器要做提供什麼樣的服務
2. 浏覽器送出資料的方式?
URL:将資料綁定在url之後
表單:<form>,将所有的要送出的資料放到對應的表單内部
POST:資料采用post方式送出,post送出是将資料打包送出,不會綁定在url後面
GET:資料采用get方式送出,浏覽器将form表單中的資料自動的綁定到url後面
3. post和get的差別
a) 送出方式不一樣,post送出看不到資料,但是get可以看到(在URL後面)
b) 安全性不一樣:post看不見,get看得見
c) 二者傳輸的資料量不一樣:get理論上不超過2KB,post理論上可以達到8M
伺服器接收資料
1. php采用什麼方式接收資料?
a) $_GET:接收全部get方式送出的資料,形成的是一個數組,表單名字(name屬性)作為鍵名,資料作為鍵值
b) $_POST:接收全部post方式送出的資料,與$_GET形式一樣。
c) $_REQUEST:不管是get方式送出還是post方式送出,都能夠接收,而且還能接受其他額外資料。
$_REQUEST接收資料存在安全漏洞,原因是因為$_REQUEST = array_merge($_GET,$_POST);
php.ini中有一個選項控制$_REQUEST的覆寫順序:request_order
如果是在低版本中可能沒有該選項,有一個variables_order,是用來控制$_REQUEST裡面的變量順序
請求處理
get請求
post請求
任何沒有name屬性的表單,浏覽器都不會送出給伺服器
資料接收或者判斷的前處理
使用isset函數進行資料判斷
複選框的使用
checkbox通常情況下不止一個資料
1. 制作表單
2. 接收資料
沖突:表單中複選框通常一個類複選框名字都是同一個,資料送出之後伺服器在接收資料的時候,會将所有的同名的表單進行資料的覆寫,最終隻保留一個。
解決方案:
被同名表單元素的name屬性增加中括号,浏覽器會正常的當做字元串來解析和處理,但是一旦送出到伺服器,php看到中括号會當做數組處理(不會覆寫,增加元素)
1. 修改表單:給checkbox的name屬性,增加中括号
2. 伺服器正常接收資料;
使用者資訊都需要儲存到資料庫:數組不能傳輸給資料庫,數組也不能夠儲存到資料庫。
提取checkbox儲存的資訊,反顯到對應的checkbox,顯示給使用者
1. 從資料庫擷取:擷取到是字元串,需要将字元串反轉成數組:explode
2. 如何确定哪些checkbox是被選中的呢?
in_array:判斷一個值是否在數組中存在,如果存在傳回true,失敗傳回false
檔案傳輸流
資料在網絡間傳輸的形式分為兩種:字元流和二進制流
資料傳輸一定隻能是二進制。
字元流:資料的傳輸是按照有效字元串進行傳輸(資料本身是字元串)
二進制流:資料本身是二進制格式
不管是get方式還是post方式所能送出的資料,隻能是字元流。浏覽器預設的不能送出二進制流資料。(檔案,圖檔都不能送出給伺服器)。