1.strlen()與mb_strlen的作用分別是什么?
兩者都是求字符串的長度。不同的是針對UTF8的編碼方式中有中文的時候:
strlen計算時將一個中文字符算作3個長度,mb_strlen計算為1個長度。
另mb_strlen()有第二個可選參數,如果設置為‘gb2312’則計算為2個長度。
2.寫出下列幾個預定義全局變量的作用
$_SERVER['DOCUMENT_ROOT']? ? ? ? $_SERVER['REMOTE_ADDR']
當前運行腳本所在的文檔根目錄。? ? ? ? 正在瀏覽當前頁面用戶的IP地址
$_SERVER['HTTP_HOST ']? ? ? ? ? ? ? ? ? $_SERVER['HTTP_HOST ']
當前請求的Host:頭部的內容? ? ? ? ? ? ? ? 當前請求的Host:頭部的內容
3.include和require都能把另外一個文件包含到當前文件中,他們有什么區別?Include和include_once又有什么區別?
(1)include()在執行文件時每次都要進行讀取和評估;require()文件只處理一次(實際上文件內容替換了require()語句)
(2)require()通常放在PHP腳本程序的最前面include()的使用和require()一樣,一般放在流程控制的處理區段中,PHP腳本文件讀到include()語句時,才將它包含的文件讀進來,這種方式,可以把程序執行時的流程簡單化
(3)require()和include()語句是語言結構,不是真正的函數,可以像PHP的其他語言結構一樣
(4)require()包含文件失敗,停止執行,給出錯誤(致命的);
(5)include()常用于動態包含.通常是自動加載的文件,即使加載出錯,整個程序還是繼續執行一個頁面聲明,另一個頁面調用包函文件失敗,繼續向下執行,返回一條警告
(6)include_once()和require_once()語句也是在腳本執行期間包括并運行指定文件,與include()require()唯一的區別是如果文件中的代碼已經被包括了,則不會再次包括.
4.請解釋下列10個shell命令的用途
top、ps、mv、find、df、cat、chmod、chgrp、grep、wc
top:該命令提供了實時對系統處理器狀態的監控,它能夠實時顯示系統中各個進程的資源占用情況。該命令可以按照對CPU、內存使用和執行時間對系統任務進程進行排序顯示,同時還可以通過交互式命令進行設定顯示。
ps:顯示系統進程在瞬間的運行動態。
mv:文件/目錄改名或變更存儲位置。
find:在指定的路徑下查找指定文件。
df:檢查磁盤空間占用情況。
cat:將文件的內容打印到標準輸出。
chmod:改變文件的權限。
chgrp:改變文件所屬組。
grep:過濾文本,根據指定的字符串,對文件的每一行進行搜索,如找到,則輸出該行內容。
wc:統計指定文件中的字節數、字數、行數,并將統計結果顯示輸出。
5. 寫出下列服務的用途和默認端口
FTP: 文件傳輸協議? 端口是 21
SSH:為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。? 端口是22
Telnet : TCP/IP協議族中的一員,是Internet遠程登陸服務的標準協議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的能力?? 端口是23
HTTP :超文本傳輸協議?? 端口是80
HTTPS: 簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL?? 端口是443
6. 設計模式考察:請用單態設計模式方法設計類滿足如下需求
請用PHP5代碼編寫類實現在每次對數據庫連接的訪問中都只能獲得唯一的一個數據庫連接,具體連接數據庫的詳細代碼忽略,請寫出主要邏輯代碼:
class db {
?????? private static $obj= null;
?????? private function __construct() {
???????????????????? $conn = mysql_connect('localhost','root','password');
???????? }
?????? static function two() {
??????????? ?? if (is_null(self::$num)) {
????????????????????? self::$obj= new self();
???????????????? }
????????? return self::$obj;
?? ?? }
? ? private?? function__clone(){}
}
7、寫出下面2個PHP操作Mysql函數的作用和區別
mysql_affected_rows -- 取得前一次 MySQL 操作所影響的記錄行數
mysql_num_rows函數返回結果集中行的數目。
8.sql語句應該考慮哪些安全性?
防止 Sql 注入,對特殊字符進行轉義、過濾或者使用預編譯的 sql 語句綁定變量。
最小權限原則,特別是不要用 root 賬戶,為不同的類型的動作或者組建使用不同的賬戶。
當 sql 運行出錯時,不要把數據庫返回的錯誤信息全部顯示給用戶,以防止泄露服務器和數據庫相關信息。
9. 簡單描述mysql中,索引,主鍵,唯一索引,聯合索引的區別,對數據庫的性能有什么影響(從讀寫兩方面)
索引是一種特殊的文件(InnoDB 數據表上的索引是表空間的一個組成部分),它們包含對數據表里所有記錄的引用指針。
普通索引(由關鍵字 KEY 或 INDEX 定義的索引)的唯一任務是加快對數據的訪問速度。
普通索引允許被索引的數據列包含重復的值。如果能確定某個數據列將只包含彼此各不相同的值,在為這個數據列創建索引的時候就應該用關鍵字 UNIQUE 把它定義為一個唯一索引。
也就是說,唯一索引可以保證數據記錄的唯一性。
主鍵,是一種特殊的唯一索引,在一張表中只能定義一個主鍵索引,主鍵用于唯一標識一條記錄,使用關鍵字 PRIMARY KEY 來創建。
索引可以覆蓋多個數據列,如像 INDEX(columnA, columnB)索引,這就是聯合索引。
索引可以極大的提高數據的查詢速度,但是會降低插入、刪除、更新表的速度,因為在執行這些寫操作時,還要操作索引文件。