php面試題目筆試
問題
1.如何訪問會話變量(session)?
A.經過$_GET
B.經過$_POST
C.經過$_REQUEST
D.經過全局變量
E.以上都不對
2.哪一個函數能讓服務器輸出以下header?
set-Cookie: foo=bar;
答案:______________
3.在忽略瀏覽器bug的正常狀況下,如何用一個與先前設置的域名(domain)不一樣的新域名來訪問某個cookie?
A.經過HTTP_REMOTE_COOKIE訪問
B.不可能
C.在調用setcookie()時設置一個不一樣的域名
D.向瀏覽器發送額外的請求
E.使用Javascript,把cookie包含在URL中發送
4.index.php腳本如何訪問表單元素email的值?(雙選)
<form action="index.php" method="post">
<input type="text" name="email"/>
</form>
A.$_GET[‘email’]
B.$_POST[‘email’]
C.$_SESSION[‘text’]
D.$_REQUEST[‘email’]
E.$_POST[‘text’]
5.如下腳本將如何影響$s字符串?(雙選)
<?php
$s = '<p>Hello</p>';
$ss = htmlentities ($s);
echo $s;
?>
A.尖括號<>會被轉換成HTML標記,所以字符串將變長
B.沒有變化
C.在瀏覽器上打印該字符串時,尖括號是可見的
D.在瀏覽器上打印該字符串時,尖括號及其內容將被識別爲HTML標籤,所以不可見
E.因爲調用了htmlentities(),字符串會被銷燬
6.若是不給cookie設置過時時間會怎麼樣?(d)
A.馬上過時
B.永不過時
C.cookie沒法設置
D.在瀏覽器會話結束時過時
E.只在腳本沒有產生服務器端session的狀況下過時
7.思考以下代碼:若是用戶在兩個文本域中分別輸入「php」和「great」,腳本輸出什麼?
<form action="index.php" method="post">
<input type="text" name="element[]">
<input type="text" name="element[]">
</form>
<?php
echo $_GET['element'];
?>
A.什麼都沒有
B.Array
C.一個提示
D.phpgreat
E.greatphp
8.在HTTPS下,URL和查詢字串(query string)是如何從瀏覽器傳到Web服務器上的?
A.這兩個是明文傳輸,以後的信息加密傳輸
B.加密傳輸
C.URL明文傳輸,查詢字串加密傳輸
D.URL加密傳輸,查詢字串明文傳輸
E.爲確保加密,查詢字串將轉換爲header,夾在POST信息中傳輸
9.當把一個有兩個同名元素的表單提交給PHP腳本時會發生什麼?
A.它們組成一個數組,存儲在超級全局變量數組中
B.第二個元素的值加上第一個元素的值後,存儲在超級全局變量數組中
C.第二個元素將覆蓋第一個元素
D.第二個元素將自動被重命名
E.PHP輸出一個警告
10.如何把數組存儲在cookie裏?
A.給cookie名添加一對方括號[]
B.使用implode函數
C.不可能,由於有容量限制
D.使用serialize函數
E.給cookie名添加ARRAY關鍵詞
11.如下腳本輸出什麼?(E)
<?php
ob_start();
for ($i = 0; $i < 10; $i++) {
echo $i;
}
$output = ob_get_contents();
ob_end_clean();
echo $ouput;
?>
A.12345678910
B.1234567890
C.0123456789
D.什麼都沒有
E.一個提示
12.默認狀況下,PHP把會話(session)數據存儲在______裏。
A.文件系統
B.數據庫
C.虛擬內容
D.共享內存
E.以上都不是
13.你在向某臺特定的電腦中寫入帶有效期的cookie時老是會失敗,而這在其餘電腦上都正常。在檢查了客戶端操做系統傳回的時間後,你發現這臺電腦上的時間和web服務器上的時間基本相同。並且這臺電腦在訪問大部分其餘網站時都沒有問題。請問這會是什麼緣由致使的?(雙選)(
A.瀏覽器的程序出問題了
B.客戶端的時區設置不正確
C.用戶的殺毒軟件阻止了全部安全的cookie
D.瀏覽器被設置爲阻止任何cookie
E.cookie裏使用了非法的字符
14.假設瀏覽器沒有重啓,那麼在最後一次訪問後的多久,會話(session)纔會過時並被回收?
A.1440秒後
B.在session.gc_maxlifetime設置的時間過了後
C.除非手動刪除,不然永不過時
D.除非瀏覽器重啓,不然永不過時
E.以上都不對
15.哪一個函數能把換行轉換成HTML標籤<br />?
答案:____________
參選
答案速查
1:E
2:setcookie/setrawcookie
3:B
4:BD
5:BD
6:D
7:A
8:B
9:C
10:B
11:E
12:A
13:BD
14:B
15:nl2br
答案詳解
1.儘管在register_globals被設置爲on時,能夠經過全局變量來訪問session,但在較新版本的PHP中,爲了不形成安全隱患,php.ini文件已經把register_globals設置爲off了。所以答案是E。
2.雖然header函數在這裏也能用,但這題顯然是在說setcookie或setrawcookie函數。
3.答案是B。瀏覽器不容許來自某個域名的HTTP事務更改另外一個域名下的cookie,不然這將形成嚴重的的安全問題。
4.既然表單採用post方式傳輸,那麼腳本將只可能從$_POST和$_REQUEST兩個超級全局變量數組中取到值。元素名稱(email)是鍵名,所以答案是B和D。注意,因爲可能致使潛在的安全問題,這裏不鼓勵使用$_REQUEST。
5.本題考驗你對HTML編碼的認識以及代碼查錯能力。變量$s在被函數htmlentities()處理事後,結果返回給了變量$ss,而$s本身並無被改變。所以答案是B和D。你可能以爲本身被戲弄了,可是記住,發現這樣的小錯誤是捉蟲能力中很重要的一部分。
6.若是沒有設置過時時間,cookie將在用戶會話結束時自動過時。cookie不須要服務器端會話的支持,所以答案是D。
7.表單使用post方式傳輸,因此不管在文本框中輸入什麼,其值都會傳給$_POST超級全局變量,這裏的$_GET數組沒有值。答案是A。
8.HTTPS傳輸發生時,瀏覽器與服務端馬上完成加密機制的握手,以後的數據都是加密傳輸而不是明文傳輸——包括URL,查詢字串。而在HTTP傳輸中,它們都是明文傳輸的,所以答案是B。
9.對於收到的查詢字串和POST信息,PHP只是簡單的把元素添加進對應的超級變量數組中。結果就是若是有兩個元素同名,前一個會被後一個覆蓋。答案是C。
10.只有B永遠正確。雖然你能夠用implode函數把數組轉化成字符串,而後存在數組裏,但卻沒法保證往後必定能用serialize()把這個字符串還原成數組。瀏覽器對單個cookie有容量限制,所以在cookie裏存儲數組不是個好主意。但事情也並不是永遠是這樣,你仍然能夠存儲一些比較小的數組。
11.這又是一個考驗debug能力的題。注意到了嗎,在腳本的末尾,echo語句中的$output變量拼錯了!腳本不會輸出任何東西,答案是D。
12.答案是文件系統(A)。默認狀況下,PHP把全部會話信息存儲在/tmp文件夾中;在沒有這個文件夾的操做系統中(好比Windows),必須在php.ini中給session.save_path設置一個合適的位置(如c:/Temp)。
13.B和D是最有可能出問題並應該深刻調查的地方。因爲瀏覽器訪問其餘網站都正常,因此不多是瀏覽器程序出了問題。殺毒軟件一般不會選擇性的只阻止安全的cookie(不過有可能會阻止全部的cookie)。你首先應當檢查瀏覽器是否被設置爲阻止全部cookie,這是最有可能致使該問題的緣由。同時,錯誤的時區設置也多是根源——給cookie設置有效期時用得是GMT時間。可能會出現cookie在寫入時就馬上過時,從而沒法被腳本接收的狀況。
14.session.gc_maxlifetime設置的是用戶最後一次請求到session被回收之間的時間間隔。儘管數據文件並無被真正刪除,不過一旦session被回收,你將沒法對此session進行訪問。巧合的是,session.gc_maxlifetime的默認設置正好是1440秒,但這個數字是能夠被系統管理員調整的。因此答案應該是B。
15.函數nl2br能實現這個功能。
歡迎關注本站公眾號,獲取更多信息