扣丁學堂PHP視頻教程之session實現(xiàn)機制和PHP正則表達式詳解
2018-01-30 11:51:13
1438瀏覽
近年來,I隨著國內T行業(yè)發(fā)展迅猛,無論是高薪行業(yè)的標簽,還是互聯(lián)網就業(yè)的保障,都吸引著越來越多的人加入到行業(yè)中來。而縱觀IT行業(yè)中的眾多編程語言,PHP在服務器腳本語言市場的占有率上一直遙遙領先。今天扣丁學堂小編給大家整理了一下關于PHP視頻教程中的session實現(xiàn)機制和PHP正則表達式詳解吧。
一、默認機制,用磁盤文件來實現(xiàn)PHP會話。php.ini配置:session.save_handler=files
1、session_start()
A、session_start()是session機制的開始,它有一定概率開啟垃圾回收,因為session是存放在文件中,
PHP自身的垃圾回收是無效的,SESSION的回收是要刪文件的,這個概率是根據(jù)php.ini的配置決定的,
但是有的系統(tǒng)是session.gc_probability=0,這也就是說概率是0,而是通過cron腳本來實現(xiàn)垃圾回收。
session.gc_probability=1
session.gc_divisor=1000
session.gc_maxlifetime=1440//過期時間默認24分鐘
//概率是session.gc_probability/session.gc_divisor結果1/1000,
//不建議設置過小,因為session的垃圾回收,是需要檢查每個文件是否過期的。
session.save_path=//好像不同的系統(tǒng)默認不一樣,有一種設置是“N;/path”
//這是隨機分級存儲,這個樣的話,垃圾回收將不起作用,需要自己寫腳本
B、session會判斷當前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE鍵值,
這個值可以從php.ini找到
session.name=PHPSESSID//默認值PHPSESSID
C、如果不存在會生成一個session_id,然后把生成的session_id作為COOKIE的值傳遞到客戶端.
相當于執(zhí)行了下面COOKIE操作,注意的是,這一步執(zhí)行了setcookie()操作,COOKIE是在header頭中發(fā)送的,
這之前是不能有輸出的,PHP有另外一個函數(shù)session_regenerate_id()如果使用這個函數(shù),這之前也是不能有輸出的。
setcookie(session_name(),
session_id(),
session.cookie_lifetime,//默認0
session.cookie_path,//默認’/’當前程序跟目錄下都有效
session.cookie_domain,//默認為空
)
D、如果存在那么session_id=$_COOKIE[session_name];
然后去session.savepath指定的文件夾里去找名字為’SESS’.session_id()的文件.
讀取文件的內容反序列化,然后放到$_SESSION中
2、為$_SESSION賦值
比如新添加一個值$_SESSION[‘test’]=’blah';那么這個$_SESSION只會維護在內存中,當腳本執(zhí)行結束的時候,
用把$_SESSION的值寫入到session_id指定的文件夾中,然后關閉相關資源.這個階段有可能執(zhí)行更改session_id的操作,
比如銷毀一個舊的的session_id,生成一個全新的session_id.一半用在自定義session操作,角色的轉換上,
比如Drupal.Drupal的匿名用戶有一個SESSION的,當它登錄后需要換用新的session_id
if(isset($_COOKIE[session_name()])){
setcookie(session_name(),”,time()42000,’/’);//舊sessioncookie過期
}
session_regenerate_id();//這一步會生成新的session_id
//session_id()返回的是新的值
二、PHP正則表達式的基礎總結
開頭的^和結尾的$讓PHP從字符串開頭檢查到結尾。假使沒有$,程序仍會匹配到Email的末尾。
開頭的^和結尾的$讓PHP從字符串開頭檢查到結尾。假使沒有$,程序仍會匹配到Email的末尾。
[和]被用來限制許可輸入類型。例如a-z允許所有的小寫字母,A-Z允許所有的大寫字母,0-9所有數(shù)字,等等,以及更多其他類型。
{和}被用來限制期望的字符數(shù)。例如{2,4}表示字符串的每一節(jié)可以有2-4字符長度,像是.com.cn或.info。在這里,"."并不算一個字符,因為{2,4}之前定義的許可輸入類型只有大小寫字母,故此段只匹配大小寫字母
(和)被用來合并小節(jié),并定義字符串中必須存在的字符。(a|b|c)能夠匹配a或b或c。
(.)將匹配所有字符,而[.]只匹配"."本身。
要使用一些符號本身,必須在前增加一個\。這些字符有:()[].*?+^|$
/定界符
^字符串頭
$字符串尾
[a-z]所有小寫字母
[A-Z]所有大寫字母
[0-9]所有數(shù)字
?零或一個緊接前的字符
零或多個緊接前的字符
一或多個緊接前的字符
{4}4個緊接前的字符
{4,8}4-8個緊接前的字符
.任意字符
(red|green|blue)Red或green或blue(紅或綠或藍)
s空格
特殊字符(需要在前加\)
()[].*?+^|$
規(guī)則匹配preg_match
利用preg_match(),我們可以完成字符串的規(guī)則匹配。如果找到一個匹配,preg_match()函數(shù)返回1,否則返回0。還有一個可選的第三參數(shù)可以讓你把匹配的部分存在一個數(shù)組中。在驗證數(shù)據(jù)時這個功能可以變得非常有用。
$string="football";
if(preg_match('/foo/',$string)){
//匹配正確
}
規(guī)則替換preg_replace
preg_replace允許你替換字符串中匹配到你定義的正則表達式。
$val="/123456789/abcd";
$pp=preg_replace("/[(\/*)+(.)(*\/)+]+/",'fuck',$val);
print_r($pp);
結果是:fuck123456789fuckabcd
規(guī)則分割preg_split
preg_split可以將整段字符串按匹配到的正則表達式分割成1、2或更多字符的多段。比如獲取標簽,無論是用空格還是逗號分隔的:
$tags=preg_split('/[,]/','my,tags,unevenly,spaced');
print_r($tags);
結果是:Array([0]=>my[1]=>tags[2]=>unevenly[3]=>spaced)
以上就是關于扣丁學堂PHP視頻教程中的session實現(xiàn)機制和PHP正則表達式的詳細介紹,希望對大家有幫助,最后想要了解更多關于PHP開發(fā)發(fā)展前景趨勢,請關注扣丁學堂官網、微信等平臺,扣丁學堂IT職業(yè)在線學習教育平臺為您提供權威的
PHP培訓視頻教程系統(tǒng),通過千鋒扣丁學堂金牌講師在線錄制的一套PHP視頻教程課程,讓你快速掌握PHP從入門到精通開發(fā)實戰(zhàn)技能??鄱W堂
PHP開發(fā)工程師技術交流群:374332265。
【關注微信公眾號獲取更多學習資料】
查看更多關于“php培訓資訊”的相關文章>>
標簽:
PHP培訓
PHP視頻教程
PHP從入門到精通
PHP學習路線圖
PHP開發(fā)工程師