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能實現這個功能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章