




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Session數(shù) Session數(shù)據(jù)文件什么是 Session數(shù)據(jù)文件PHP默認(rèn)情況下是將Session數(shù)據(jù)存放在文本文件中,該文件采用sess_PHPSE的值命名,可以將文本文件分別在不同的文件 為什么要 如何分 通過(guò)在php.ini中的簡(jiǎn)單配置就可以實(shí)現(xiàn)(注意重啟N表示在d:/phpsession/分出N級(jí) Session數(shù)據(jù)文件.例如設(shè)置為1就會(huì)將在session文件在d:/phpsession的一 中的名字是通過(guò)PHPSE 就采用PHPSE php不會(huì)自動(dòng)創(chuàng)建需要手工創(chuàng)建PHP源代碼給提供了一個(gè)批處理文件專(zhuān)門(mén)用來(lái)創(chuàng)建這些 的.在php-5.5.10-src.zip\php-5.3.29-src\ext\session下使用.mod_files.bat yx:在哪個(gè) 下面創(chuàng)建.表示當(dāng)前y:創(chuàng)建幾級(jí)z:session.hash_bits_per_character的hash_bits_per_character表示PHPSE 5表示:PHPSE 值可以出現(xiàn)0-9,a-v的值.表示在d:/phpsession創(chuàng)建了一 的名字可以使用0-9,a-v的重寫(xiě)session的機(jī)什么是重寫(xiě)session的機(jī)PHPsession的數(shù)據(jù)保存到文件中,session數(shù)據(jù)的位置,sessionMySQL,Memcached(內(nèi)存對(duì)象緩存系統(tǒng))中.為什么需要重寫(xiě)Session的機(jī)件非常浪費(fèi)空間,查詢(xún)麻煩,效率.分布式的站點(diǎn)難以利用會(huì)話(huà)文件來(lái)共享會(huì)話(huà)不利于統(tǒng)計(jì)用戶(hù)的會(huì)話(huà)(用戶(hù)重寫(xiě)Session的機(jī)制在哪里使分布式的站點(diǎn)Session共瀏覽發(fā)送請(qǐng)(分發(fā)請(qǐng)求發(fā)送請(qǐng)Sesson數(shù)一個(gè)的負(fù)載太大的情況下,一個(gè)web服務(wù)器支持不了,需要多個(gè)服務(wù)器來(lái)支持瀏覽發(fā)送請(qǐng)(分發(fā)請(qǐng)求發(fā)送請(qǐng)Sesson數(shù)默認(rèn)Session數(shù)據(jù)處理機(jī)以默認(rèn)到文件中為例從session_start()到php執(zhí)行完畢.session文件存在時(shí)的情session_start()后php根據(jù)PHPSE 文件中的數(shù)據(jù)存放到$_SESSION數(shù)組中執(zhí)行完畢將$_SESSION數(shù)組中的數(shù)據(jù)寫(xiě)入session文件中(可選)session_destroy()后找到 對(duì)應(yīng)的文件將其刪除關(guān)閉session寫(xiě)入的文PHP也會(huì)不定期的刪除老的無(wú)用的session文件(回收機(jī)制).改寫(xiě)上面默認(rèn)行為就可以達(dá)到自定義Session數(shù)據(jù)的機(jī)制了.自定義Session機(jī)什么是自定義Session機(jī)修改PHP默認(rèn)Session機(jī)制(文件).將Session中的數(shù)據(jù)保存到MySQL,Memcached等其他設(shè)備上如何修改Session機(jī)告知PHP,需要Session機(jī)制中的行為由我們的代碼完成.當(dāng)使用到時(shí),PHP就會(huì)自動(dòng)調(diào)用告知它的行為代碼session_set_save_handler方法告訴PHP處理Session的行為代碼callablecallable$gcsession_set_save_handler(callable$open,callable$close,callable$read,callable$write,callable$destroy參數(shù)分別為打開(kāi),關(guān)閉,讀,寫(xiě),銷(xiāo)毀,處理的行為代碼.強(qiáng)調(diào)后保存到$_SESSION中.序列化工作已經(jīng)有PHP完成了.當(dāng)執(zhí)行session_destroy()時(shí),write()方法就不會(huì)調(diào)用執(zhí)行,因?yàn)闆](méi)有必要再寫(xiě)入了sessionSession數(shù)據(jù)Session入庫(kù)實(shí)創(chuàng)建session表session由 的值(唯一標(biāo)識(shí))和Session數(shù)據(jù)組文件數(shù)據(jù)表Session文件的名字 值sess_id字段(設(shè)置為主鍵Session文件中的數(shù)sess_data字開(kāi)始session_start()方法執(zhí)行時(shí),open方法被php調(diào)用執(zhí)行,主要為session機(jī)制準(zhǔn)備外部連接資源讀該方法運(yùn)行時(shí),session處理機(jī)制已經(jīng)將確定好的session的id值傳遞給該方法該方法read根據(jù)session_id來(lái)session數(shù)據(jù)該方法返回的數(shù)據(jù)不需要反序列化,而是php自己完成反序列化功能寫(xiě)當(dāng)php執(zhí)行完后,write方法被自動(dòng)調(diào)用執(zhí)行,并且傳入session_idsession數(shù)據(jù)準(zhǔn)備,該方法只負(fù)責(zé)將session數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)中即可銷(xiāo)毀當(dāng)調(diào)用session_destroy方法時(shí),session處理機(jī)制將會(huì)刪除session記錄.此時(shí)destroy方被php調(diào)用執(zhí)行.并且傳入session_id.根據(jù)session_id刪除session表中對(duì)應(yīng)的數(shù)據(jù).關(guān)閉關(guān)閉session機(jī)制所使用的外部連接資源回收什么是數(shù)session數(shù)據(jù)不會(huì)再被使用的數(shù)據(jù)為數(shù)為什么會(huì)產(chǎn)生數(shù)關(guān)閉瀏覽器后.PHPSE的(為臨時(shí))丟失,但是在服務(wù)器上面的session數(shù)據(jù)還存在.沒(méi)有了PHPSE就不會(huì)找到對(duì)應(yīng)的這些數(shù)session數(shù)據(jù),這些數(shù)據(jù)也不會(huì)被使用.如何識(shí)別哪些記錄(文件)是數(shù)據(jù)1440秒(14分鐘),gc_maxlifetime決定.通過(guò)session文件數(shù)據(jù)可以通過(guò)文件的最后修改時(shí)間和當(dāng)前時(shí)間來(lái)確定未被使的時(shí)間間隔.在數(shù)據(jù)表中增加一個(gè)最后修改時(shí)間段altertablesessionaddcolumnlast_modifiedintdefault每次session數(shù)據(jù)被寫(xiě)入時(shí)都更新session的修改時(shí)間確定計(jì)算的數(shù)據(jù):當(dāng)前時(shí)間>last_modified+有效刪除的session記Session機(jī)制啟動(dòng)回收時(shí)自動(dòng)調(diào)用gc方法,通過(guò)將傳遞給該函數(shù).再次強(qiáng)調(diào)數(shù)據(jù) 是找不到的過(guò)期數(shù)據(jù)當(dāng)前session_start()后,有一定的概率調(diào)用回收機(jī)制執(zhí)行.刪除過(guò)期的概率由在php.ini的兩個(gè)配置選項(xiàng)決定除以默認(rèn)情況下只有1/1000的幾率出發(fā)回收方法執(zhí)行為什么這樣來(lái)設(shè)計(jì)呢?為了系統(tǒng)的性能來(lái)考慮,不會(huì)讓每次請(qǐng)求都去尋找數(shù)據(jù).為了可以測(cè)試出效果,1,100%的概率自定義session機(jī)制后的問(wèn)錯(cuò)誤使用方如果重寫(xiě)了session的機(jī)制,那么就必須先告知PHP重寫(xiě)方法.再開(kāi)解決自動(dòng)開(kāi)啟session機(jī)制的問(wèn)如何在php.ini中配置了自動(dòng)開(kāi)啟session機(jī)制呢自動(dòng)開(kāi)啟session優(yōu)先于session_set_save_handler方法的執(zhí)行自定義session_write_close()強(qiáng)制讓結(jié)束session并且session.session_set_save_handlersession.在apache的分布式文件.htaccess文件.在php執(zhí)行之前就設(shè)置不讓自動(dòng)啟 Session入庫(kù)加入到項(xiàng)目中作為框架代為什么呢Session入庫(kù)的功能被大多數(shù)項(xiàng)目使用到它應(yīng)該被列為框架代碼OOP的編程思想將Session入庫(kù)加入到框架SessionDBTool類(lèi)中什么樣的功封裝完成sesson機(jī)制的六個(gè)方該類(lèi)創(chuàng)建對(duì)象是告知PHP使用這些方法完成機(jī)制Session入庫(kù)功開(kāi)啟session機(jī)使用該功能的前提創(chuàng)建一個(gè)數(shù)據(jù)表來(lái)session的數(shù)據(jù)CREATECREATETABLE`session``sess_id``sess_data``last_modified`int(11)DEFAULT)ENGINE=MyISAMDEFAULT將session機(jī)制的六個(gè)函數(shù)作為SessionDBTool的六個(gè)方法前提:CREATETABLE`session``sess_id`char(32)primary`sess_data``last_modified`int(11)DEFAULT)ENGINE=MyISAMDEFAULT*SessionclassSessionDBTool{private$db;functionopen($savePath,$this->db=newreturn}functionclose(){returntrue;}根據(jù)$sessionIdsession數(shù)據(jù)@param@returnstring.sessionfunction$sql="selectsess_datafromsessionwheresess_id='$sessionId'";if($row=$this->db->fetchRow($sql)){return}return}/**session@param@param$datasessionfunction//sessionId$sql="insertintosessiononduplicatekeyupdatesess_data='$data',last_modified=unix_timestamp()";return$this->db->query($sql);}*根據(jù)$sessionIdsessionsession@paramfunction$sql="deletefromsessionwheresess_id='$sessionId'";return$this->db->query($sql);}@param$lifetimesession的生命周期function//刪 數(shù)$sql="deletefromsessionwhereunix_timestamp()-$lifetime>last_modified";return$this->db->query($sql);}}這些方法最終被PHP調(diào)用,所以都將設(shè)置為因?yàn)樵摲椒ǘ际莄allable類(lèi)型的參數(shù)使用數(shù)組的方式將當(dāng)前對(duì)象的方法告訴PHP.讓其處理session時(shí)調(diào)用在項(xiàng)目中使用SessionDBTool類(lèi) checkLoginAction中使用Session為工具類(lèi)添加自動(dòng)加載機(jī)制使用SessionDBTool類(lèi)時(shí)在Framework/Framework.class.php中的userAutoload方法執(zhí)行在該方法加入加載SessionDBTool類(lèi)的規(guī)則Session補(bǔ)被禁用,session是否可 典型的處理瀏覽器無(wú)法保 ,說(shuō)明用戶(hù)放棄使用會(huì)話(huà)的技術(shù).不再提供sesson的持但是從技術(shù)上可以解決瀏覽器不保存session的技術(shù).-----將PHPSE 值通過(guò)url地址發(fā)送給服務(wù)器.利用PHP的配置默認(rèn)下1表示服務(wù)器只接受通過(guò) 將其設(shè)置為0,可以支持其他的方案?jìng)鬟fPHPSE 使用url地址傳遞瀏覽器禁用后讓PHP將當(dāng)前網(wǎng)頁(yè)中的超或者是表單自動(dòng)加上PHPSE 設(shè)置為1表示,在網(wǎng)頁(yè)中的url地址上自動(dòng)加上PHPSE的參數(shù)為表單元素自動(dòng)加上 的隱藏域url的必須自己加上作業(yè)將用戶(hù)退出做了登錄增加登錄標(biāo)識(shí)首頁(yè)完整展整體頁(yè)控制模視通過(guò)框架的形式表現(xiàn)出來(lái)<frame使用ecshop首頁(yè)源代碼并其修改為:top---頭頁(yè)控制IndexController中加入topAction方法模無(wú)視增加back/top.html頁(yè)面,并且修改里面的樣式和地址同理:下面的幾個(gè)功能都是用來(lái)顯示不同的頁(yè)面Controller/back/IndexController.class.php再增加方法并且分別將ecshop中的視圖代碼放到 drag.htmlmain.html中.---菜單頁(yè)IndexController.class.php中 Action方drag---拖IndexController.class.php中的dragAction方main---主顯IndexController.class.php中 Action方視圖頁(yè) 規(guī)為什么要對(duì)視圖頁(yè)面進(jìn)行規(guī)隨著視圖頁(yè)面越來(lái)越多,View文件夾下會(huì)存在越來(lái)越難如何規(guī)劃視圖頁(yè)面文控制器使用視圖,按控制器的名字來(lái)規(guī)劃,View對(duì)應(yīng)display方法選擇對(duì)應(yīng)的視display方法放Controllerdisplay中需求將所有控制器里面的方法換display方法選擇頁(yè)整體登錄權(quán)限控什么是整體登錄權(quán)限控的控制器時(shí)統(tǒng)一對(duì)登錄權(quán)限進(jìn)行驗(yàn)證即除了檢測(cè)/index.php?p=Admin&c=Index&a=index的登錄權(quán)限,應(yīng)該檢測(cè)為什么統(tǒng)一驗(yàn)只要的控制器就需要對(duì)登錄權(quán)限進(jìn)行驗(yàn)證,如果每個(gè)控制器中都加入驗(yàn)證的代碼.就會(huì)造成代碼的重復(fù)和冗余,不方便.往哪里添加一塊代碼,然后某個(gè)平臺(tái),該代碼都要執(zhí)行增加平臺(tái)基礎(chǔ)控制器平臺(tái)基礎(chǔ)控制器平臺(tái)基礎(chǔ)控制器是屬于當(dāng)前項(xiàng)目中的業(yè)務(wù)代碼.主要用存放平臺(tái)中所有控制器都要使增加驗(yàn)證功能代碼到平臺(tái)控制器,登錄驗(yàn)只要使用到的控制器,該功能代碼就要執(zhí)行.用來(lái)判斷用戶(hù)是否登錄.所以將該方完善錄方加入Admin/PlatformController.class.php后,所有控制器中的方法是都需要登錄,AdminManagerController.class.phploginAction和checkLoginAction方法排除掉,否則無(wú)法登錄.驗(yàn)否是通是驗(yàn)繼否那么在PlatformController.class.php中的checklogin上加入以下代碼為什么要使防止計(jì)算機(jī)模擬人的行為來(lái)提交表單.速度快,次數(shù)多.就有機(jī)會(huì)被登錄后看據(jù)常見(jiàn):,灌水,評(píng)論,搶票原使用iframe模擬請(qǐng)?jiān)陧?xiàng)目中加入Public模Public模塊被存放項(xiàng)目功能的功login.html中加iframeView/Admin/login.html中加入iframePublic平臺(tái)中加入請(qǐng)求登錄頁(yè)面后的效果生成將常用的字符放到一個(gè)數(shù)組中.隨機(jī)從數(shù)組中取出需要的值組成字符session保存驗(yàn)為了在登錄請(qǐng)求中獲取該來(lái)驗(yàn)證.將生成的保存的session生使用GD庫(kù)生成,先直接輸出驗(yàn)在登錄表單提交后根據(jù)請(qǐng)求中的輸入和生成時(shí)保存在Session中的對(duì)比讓通過(guò)輸出,我們需要學(xué)門(mén)技術(shù):GDGD什么GDGD庫(kù)是PHP常用的處理的一種技術(shù)GD的支PHP默認(rèn)沒(méi)有開(kāi)啟對(duì)GD的支持,使用的話(huà)需要在php.ini中開(kāi)啟并且重啟GD庫(kù)的基本使用GD就是一個(gè)處理工具.即:將GD庫(kù)看一個(gè)處理軟件(畫(huà)圖板),只是每個(gè)功能GD庫(kù)中函數(shù)完成.GD制作的流創(chuàng)建繪制輸出或者保存釋放創(chuàng)建圖有兩種創(chuàng)建畫(huà)布資源的方式創(chuàng)建一個(gè)全新的畫(huà)函數(shù)imagecreate(寬,高)創(chuàng)建一個(gè)基于空白畫(huà)布.認(rèn)為該畫(huà)布中是沒(méi)有任何數(shù)據(jù),不能夠直接輸出,需要往上面.imagecreatetruecolor(寬,高);創(chuàng)建一個(gè)黑色的等同于從現(xiàn)有的創(chuàng)imagecreatefromXXX(xxx格式地址):從指定的創(chuàng)建一個(gè)資源pngimagecreatefromjpeg(jpeg|jpg地址)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公益類(lèi)項(xiàng)目合同范本
- 雙方解聘合同范本
- 烹飪?cè)现R(shí)練習(xí)題庫(kù)及答案
- 南沙初中食堂承包合同范本
- 臺(tái)灣履行合同范本
- 農(nóng)村包清工合同范本
- 七年級(jí)組工作計(jì)劃
- 七年級(jí)政治教學(xué)工作總結(jié)
- 單位招標(biāo)合同范本
- 單間轉(zhuǎn)租合租合同范本
- 預(yù)防醫(yī)學(xué)實(shí)踐技能
- JGJ52-2006 普通混凝土用砂、石質(zhì)量及檢驗(yàn)方法標(biāo)準(zhǔn)
- 《運(yùn)籌學(xué)》全套課件(完整版)
- 《檢驗(yàn)檢測(cè)機(jī)構(gòu)資質(zhì)認(rèn)定評(píng)審準(zhǔn)則》試題及答案
- 新能源汽車(chē)產(chǎn)業(yè)研究綜述
- 2023-2024學(xué)年安徽省馬鞍山市物理八下期末考試試題及答案解析
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)新版
- 第22課《陳涉世家》課件(共71張)
- 新能源汽車(chē)產(chǎn)業(yè)專(zhuān)利分析綜述
- 2010年4月自考00371公安決策學(xué)試題及答案含解析
- 實(shí)驗(yàn)室儀器借用登記表
評(píng)論
0/150
提交評(píng)論