一、http session和cookie
可以看做是伺服器端快取資料的全域性區域
1.客戶端第一次請求網頁,伺服器端會生成乙個session id,跟資料一起帶給客戶端,客戶端下次再開啟這個網頁(瀏覽器未關閉),通過這個session id在伺服器端查詢到相關資料返回。加快速度。
2.多個php檔案都可以訪問的全域性資料區
cookie作用類似,其中乙個區別是session伺服器端超時時間短,瀏覽器關閉後一小段時間就失效。cookie時間長,即使瀏覽器關閉也有效。
二、php中$_request、$_post、$_get的區別和聯絡
1. $_request
php 的 $_request 變數包含了 $_get, $_post 以及 $_cookie 的內容。
php中$_request可以獲取以post方法和get方法提交的資料,但是速度比較慢
2. $_get
用來獲取由瀏覽器通過get方法提交的資料。get方法他是通過把引數資料加在提交表單的action屬性所指的url中,值和表單內每個字段一一對應,然後在url中可以看到,但是有如下缺點:
1. 安全性不好,在url中可以看得到
2. 傳送資料量較小,不能大於2kb。
3. $_post
用來獲取由瀏覽器通過post方法提交的資料。post方法他是通過http post機制,將表單的各個字段放置在http header內一起傳送到action屬性所指的url位址中,使用者看不到這個過程。他提交的大小一般來說不受限制,但是具體根據伺服器的不同,還是略有不同。相對於_get方式安全性略高
4. $_request、$_post、$_get 的區別和聯絡
$_request["引數"]具用$_post["引數"] $_get["引數"]的功能,但是$_request["引數"]比較慢。通過post和get方法提交的所有資料都可以通過$_request陣列["引數"]獲得
attention:慎用$_request 如果get的乙個變令名稱和post的乙個變數名稱相同,則post的值會覆蓋get的變數值 因為reqyest先獲取了get的值,然後獲取了post的值,post的值會覆蓋get值 我們可以來看php.ini中的配置 ; this directive describes the order in which php registers get, post, cookie, ; environment and built-in variables (g, p, c, e & s respectively, often ; referred to as egpcs or gpc). registration is done from left to right, newer ; values override older values. variables_order = "egpcs" 這個egpcs就是說明用$_request陣列獲取內容的優先順序,其字母的含義分別代表為:e代表$_env,g代表$_get,p代表$_post,c代表$_cookie,s代表$_session。後面出現的資料會覆蓋前面寫入的資料,其預設的資料寫入方式就是egpcs,所以post包含的資料將覆蓋get中使用相同關鍵字的資料。 通過這個我們也可以看出php獲取引數的步驟 環境變數=》get=》post=》cookie=>session
三、php中mysqli_connect_errno和mysqli_connect_error .
mysqli_connect_errno() 返回乙個整數,標識連線資料庫是否成功和各種錯誤的數值。
mysqli_connect_error() 返回連線錯誤資訊。
返回值以及錯誤資訊:
mysqli_connect_errno mysqli_connect_error
2002 php_network_getaddresses: getaddrinfo failed: 不知道這樣的主機。
1045 access denied for user
'wjj'@'localhost'
(using password: yes)
1049 unknown database 'test'
0(連線成功) null
$conn = new mysqli($dbhost,$username,$userpass,$dbdatabase);
if(mysqli_connect_errno())
$conn->set_charset("utf8");
四、@charset=iso-8859-1和@charset=utf-8有什麼不同?
charset=iso-8859-1是西歐的編碼,代表說明**是採用的編碼是英文;
charset=gb2312代表說明**是採用的編碼是簡體中文;
charset=utf-8代表世界通用的語言編碼;
charset=big5代表說明**是採用的編碼是正體中文;
charset=euc-kr代表說明**是採用的編碼是韓文;
......等等有很多編碼。
最常用到的是charset=gb2312、charset=iso-8859-1和charset=utf-8
charset=utf-8這個編碼可以用到中文、韓文、日文等世界上所有語言編碼上。
下面講講這幾個的區別:
字符集與編碼
各個國家和地區所制定的不同 ansi 編碼標準中,都只規定了各自語言所需的「字元」。比如:漢字標準(gb2312)中沒有規定南韓語字元怎樣儲存。這些 ansi 編碼標準所規定的內容包含兩層含義:
1. 使用哪些字元。也就是說哪些漢字,字母和符號會被收入標準中。所包含「字元」的集合就叫做「字符集」。
2. 規定每個「字元」分別用乙個位元組還是多個位元組儲存,用哪些位元組來儲存,這個規定就叫做「編碼」。
各個國家和地區在制定編碼標準的時候,「字元的集合」和「編碼」一般都是同時制定的。因此,平常我們所說的「字符集」,比如:gb2312, gbk, jis 等,除了有「字元的集合」這層含義外,同時也包含了「編碼」的含義。
「unicode 字符集」包含了各種語言中使用到的所有「字元」。用來給 unicode 字符集編碼的標準有很多種,比如:utf-8, utf-7, utf-16, unicodelittle, unicodebig 等。
1、iso-8859-1:
最簡單的編碼規則,每乙個位元組直接作為乙個 unicode 字元。比如,[0xd6, 0xd0] 這兩個位元組,通過 iso-8859-1 轉化為字串時,將直接得到 [0x00d6, 0x00d0] 兩個 unicode 字元,即 "öð"。
反之,將 unicode 字串通過 iso-8859-1 轉化為位元組串時,只能正常轉化 0~255 範圍的字元。
2、gb2312,big5,shift_jis,iso-8859-2
把 unicode 字串通過 ansi 編碼轉化為「位元組串」時,根據各自編碼的規定,乙個 unicode 字元可能轉化成乙個位元組或多個位元組。
反之,將位元組串轉化成字串時,也可能多個位元組轉化成乙個字元。比如,[0xd6, 0xd0] 這兩個位元組,通過 gb2312 轉化為字串時,將得到 [0x4e2d] 乙個字元,即 '中' 字。
「ansi 編碼」的特點:
1. 這些「ansi 編碼標準」都只能處理各自語言範圍之內的 unicode 字元。
2. 「unicode 字元」與「轉換出來的位元組」之間的關係是人為規定的。
3、utf-8,utf-16,unicodebig
與「ansi 編碼」類似的,把字串通過 unicode 編碼轉化成「位元組串」時,乙個 unicode 字元可能轉化成乙個位元組或多個位元組。
與「ansi 編碼」不同的是:
1. 這些「unicode 編碼」能夠處理所有的 unicode 字元。
2. 「unicode 字元」與「轉換出來的位元組」之間是可以通過計算得到的。
如何相互轉換呢?
最好用記事本開啟檔案,修改字元編碼為utf-8,然後另存為,選擇編碼為utf-8。
docker 使用相關問題(隨時更新)
最近又重拾docker遇到不少問題。1 is docker daemon running on this host?對於我來說有效的方法是 service docker start 啟動docker service 之後就可以了。2 docker compose的安裝 官網 docker compo...
HashSet和HashMap及其相關知識
hashset hahmap 介面型別 set介面 map介面 新增方法 add put 儲存內容 key,value key判斷重複 通過key值計算hashcode 先用hashcode方法比較兩個物件的hash,若相等,通過equals 方法 同左速度 快慢,封裝了hashmap 陣列和鍊錶組...
RTSP RTMP和HTTP協議相關
共同點 1 rtsp rtmp http都是在應用應用層。區別 1 http 即超文字傳送協議 ftp即檔案傳輸協議 http real time streaming protocol 實時流傳輸協議。http全稱routing table maintenance protocol 路由選擇表維護協...