新浪PHP筆試題及答案解析
1.cookie、session的聯(lián)系和區(qū)別,多臺(tái)web服務(wù)器如何共享session?
cookie在客戶端保存狀態(tài),session在服務(wù)器端保存狀態(tài)。但是由于在服務(wù)器端保存狀態(tài)的時(shí)候,在客戶端也需要一個(gè)標(biāo)識(shí),所以session也可能要借助cookie來(lái)實(shí)現(xiàn)保存標(biāo)識(shí)位的作用。
cookie包括名字,值,域,路徑,過(guò)期時(shí)間。路徑和域構(gòu)成cookie的作用范圍。cookie如果不設(shè)置過(guò)期時(shí)間,則這個(gè)cookie在瀏覽器進(jìn)程存在時(shí)有效,關(guān)閉時(shí)銷(xiāo)毀。如果設(shè)置了過(guò)期時(shí)間,則cookie存儲(chǔ)在本地硬盤(pán)上,在各瀏覽器進(jìn)程間可以共享。
session存儲(chǔ)在服務(wù)器端,服務(wù)器用一種散列表類型的結(jié)構(gòu)存儲(chǔ)信息。當(dāng)一個(gè)連接建立的時(shí)候,服務(wù)器首先搜索有沒(méi)有存儲(chǔ)的session id,如果沒(méi)有,則建立一個(gè)新的session,將session id返回給客戶端,客戶端可以選擇使用cookie來(lái)存儲(chǔ)session id。也可以用其他的方法,比如服務(wù)器端將session id附在URL上。
兩者區(qū)別:
1)cookie在本地,session在服務(wù)器端
2)cookie不安全,容易被欺騙,session相對(duì)安全
3)session在服務(wù)器端,訪問(wèn)多了會(huì)影響服務(wù)器性能
4) cookie有大小限制,為3K
多服務(wù)器共享session可以嘗試將session存儲(chǔ)在memcache中
2.http協(xié)議中的post和get有何區(qū)別?
1)GET用于獲取信息,不應(yīng)該用于修改信息,POST可用于更新修改信息。
2)GET可傳輸數(shù)據(jù)大小和URL有關(guān),而POST沒(méi)有限定大小,大小和服務(wù)器配置有關(guān)。
3)GET放在URL中,因此不安全,而POST傳輸數(shù)據(jù)對(duì)于用戶來(lái)說(shuō)是不可見(jiàn)的,所以相對(duì)安全。
4)在ajax中:post不被緩存,get被緩存所以一般在請(qǐng)求結(jié)尾加Math.random();
5)SERVER端接收:因?yàn)樵趕ubmit提交的時(shí)候是按不同方式進(jìn)行編碼的,所以服務(wù)端在接受的時(shí)候會(huì)按照不同的方式進(jìn)行接收。
6)編碼方式:如果傳遞數(shù)據(jù)是非-ASCII,那么GET一般是不適應(yīng)的,所以在傳遞的時(shí)候會(huì)做編碼處理!
3.require的include都可包含文件,二者的區(qū)別何在?
require在包含文件出錯(cuò)之后返回致命錯(cuò)誤,跳出運(yùn)行,而include 在包含文件出錯(cuò)之后返回警告信息,繼續(xù)運(yùn)行。
4.php中web上傳文件的原理是什么,如何限制上傳文件的大小?
PHP上傳文件默認(rèn)大小為2M,設(shè)置上傳大小的配置項(xiàng)是upload_max_filesize,post_max_size設(shè)置一次,POST中PHP能接收的最大數(shù)據(jù)量,應(yīng)該比upload_max_filesize大。
5.寫(xiě)一個(gè)函數(shù),可以遍歷文件夾下的所有文件和文件夾
代碼如下:
<?php/**********************一個(gè)簡(jiǎn)單的目錄遞歸函數(shù)第一種實(shí)現(xiàn)辦法:用dir返回對(duì)象***********************/function tree($directory) { $mydir = dir($directory); echo '<ul>n'; while($file = $mydir->read()) { if((is_dir('$directory/$file')) AND ($file!='.') AND ($file!='..')) { echo '<li><font color='#ff00cc'><b>$file</b></font></li>n'; tree('$directory/$file'); } else echo '<li>$file</li>n'; } echo '</ul>n'; $mydir->close(); } //開(kāi)始運(yùn)行echo '<h2>目錄為粉紅色</h2><br>n'; tree('./nowamagic'); /***********************第二種實(shí)現(xiàn)辦法:用readdir()函數(shù)************************/function listDir($dir){ if(is_dir($dir)) {if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) {if((is_dir($dir.'/'.$file)) && $file!='.' && $file!='..'){ echo '<b><font color=’red’>文件名:</font></b>',$file,'<br><hr>'; listDir($dir.'/'.$file.'/');}else{ if($file!='.' && $file!='..') { echo $file.'<br>'; } } } closedir($dh); } } } //開(kāi)始運(yùn)行 listDir('./nowamagic');?>
6.有mail.log的一個(gè)文檔,內(nèi)容為若干郵件地址,其中用’n’將郵件地址分隔。要求從中挑選出sina.com的郵件地址(包括從文件讀取、過(guò)濾到列印出來(lái))。
$mail = file_get_contents(’mail.log’);$pattern = '/S+sina.com/';$rpattern = '/n/';preg_filter($rpattern,'',$mail);if(preg_match_all($pattern,$mail,$matches)){ print_r($matches);}
相關(guān)文章:
1. 用xslt+css讓RSS顯示的跟網(wǎng)頁(yè)一樣漂亮2. ASP.NET MVC把數(shù)據(jù)庫(kù)中枚舉項(xiàng)的數(shù)字轉(zhuǎn)換成文字3. 《CSS3實(shí)戰(zhàn)》筆記--漸變?cè)O(shè)計(jì)(一)4. 測(cè)試模式 - XSL教程 - 55. Ajax實(shí)現(xiàn)異步加載數(shù)據(jù)6. 教你JS更簡(jiǎn)單的獲取表單中數(shù)據(jù)(formdata)7. ASP.NET Core自定義中間件的方式詳解8. html5手機(jī)觸屏touch事件介紹9. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫(huà)特效10. 讓chatgpt將html中的圖片轉(zhuǎn)為base64方法示例
