新浪PHP筆試題及答案解析
1.cookie、session的聯系和區別,多臺web服務器如何共享session?
cookie在客戶端保存狀態,session在服務器端保存狀態。但是由于在服務器端保存狀態的時候,在客戶端也需要一個標識,所以session也可能要借助cookie來實現保存標識位的作用。
cookie包括名字,值,域,路徑,過期時間。路徑和域構成cookie的作用范圍。cookie如果不設置過期時間,則這個cookie在瀏覽器進程存在時有效,關閉時銷毀。如果設置了過期時間,則cookie存儲在本地硬盤上,在各瀏覽器進程間可以共享。
session存儲在服務器端,服務器用一種散列表類型的結構存儲信息。當一個連接建立的時候,服務器首先搜索有沒有存儲的session id,如果沒有,則建立一個新的session,將session id返回給客戶端,客戶端可以選擇使用cookie來存儲session id。也可以用其他的方法,比如服務器端將session id附在URL上。
兩者區別:
1)cookie在本地,session在服務器端
2)cookie不安全,容易被欺騙,session相對安全
3)session在服務器端,訪問多了會影響服務器性能
4) cookie有大小限制,為3K
多服務器共享session可以嘗試將session存儲在memcache中
2.http協議中的post和get有何區別?
1)GET用于獲取信息,不應該用于修改信息,POST可用于更新修改信息。
2)GET可傳輸數據大小和URL有關,而POST沒有限定大小,大小和服務器配置有關。
3)GET放在URL中,因此不安全,而POST傳輸數據對于用戶來說是不可見的,所以相對安全。
4)在ajax中:post不被緩存,get被緩存所以一般在請求結尾加Math.random();
5)SERVER端接收:因為在submit提交的時候是按不同方式進行編碼的,所以服務端在接受的時候會按照不同的方式進行接收。
6)編碼方式:如果傳遞數據是非-ASCII,那么GET一般是不適應的,所以在傳遞的時候會做編碼處理!
3.require的include都可包含文件,二者的區別何在?
require在包含文件出錯之后返回致命錯誤,跳出運行,而include 在包含文件出錯之后返回警告信息,繼續運行。
4.php中web上傳文件的原理是什么,如何限制上傳文件的大???
PHP上傳文件默認大小為2M,設置上傳大小的配置項是upload_max_filesize,post_max_size設置一次,POST中PHP能接收的最大數據量,應該比upload_max_filesize大。
5.寫一個函數,可以遍歷文件夾下的所有文件和文件夾
代碼如下:
<?php/**********************一個簡單的目錄遞歸函數第一種實現辦法:用dir返回對象***********************/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(); } //開始運行echo '<h2>目錄為粉紅色</h2><br>n'; tree('./nowamagic'); /***********************第二種實現辦法:用readdir()函數************************/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); } } } //開始運行 listDir('./nowamagic');?>
6.有mail.log的一個文檔,內容為若干郵件地址,其中用’n’將郵件地址分隔。要求從中挑選出sina.com的郵件地址(包括從文件讀取、過濾到列印出來)。
$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);}
相關文章: