php面試(簡答)

1、雙引號和單引號的區別
雙引號解釋變量,單引號不解釋變量
雙引號裏的變量用花括號包起來 如:{$i}

雙引號裏插入單引號,其中單引號裏如果有變量的話,變量解釋
雙引號的變量名後面必須要有一個非數字、字母、下劃線的特殊字符,或者用講變量括起來,否則會將變量名後面的部分當做一個整體,引起語法錯誤
雙引號解釋轉義字符,單引號不解釋轉義字符,但是解釋’\和\
能使單引號字符儘量使用單引號,單引號的效率比雙引號要高(因爲雙引號要先遍歷一遍,判斷裏面有沒有變量,然後再進行操作,而單引號則不需要判斷)

2、常用的超全局變量(8個)

$_GET ----->get傳送方式
$_POST ----->post傳送方式
$_REQUEST ----->用於收集 HTML 表單提交的數據,GET和POST
$GLOBALS ----->所有的變量都放在裏面
$_FILE ----->上傳文件使用
$_SERVER ----->系統環境變量,關於報頭、路徑和腳本位置的信息。
$_SESSION ----->會話控制的時候會用到
$_COOKIE ----->會話控制的時候會用到

3、HTTP中POST、GET、PUT、DELETE方式的區別
GET請求會向數據庫發索取數據的請求,從而來獲取信息,該請求就像數據庫的select操作一樣,只是用來查詢一下數據,不會修改、增加數據,不會影響資源的內容,即該請求不會產生副作用。無論進行多少次操作,結果都是一樣的。

與GET不同的是,PUT請求是向服務器端發送數據的,從而改變信息,該請求就像數據庫的update操作一樣,用來修改數據的內容,但是不會增加數據的種類等,也就是說無論進行多少次PUT操作,其結果並沒有不同。

POST請求同PUT請求類似,都是向服務器端發送數據的,但是該請求會改變數據的種類等資源,就像數據庫的insert操作一樣,會創建新的內容。幾乎目前所有的提交操作都是用POST請求的。

DELETE請求顧名思義,就是用來刪除某一個資源的,該請求就像數據庫的delete操作。

4、echo、print_r、print、var_dump
* echo、print是php語句,var_dump和print_r是函數

  • 1:echo:是語句不是函數,沒有返回值,因此不能作爲表達式的一部分使用。可輸出多個變量值,不需要圓括號。不能輸出數組和對象,只能打印簡單類型(如int,string)。

  • 2:print:是語句不是函數,有返回值 true/false,只能輸出一個變量,不需要圓括號。不能輸出數組和對象,只能打印簡單類型(如int,string)。

  • 3:print_r:是函數,可以打印複合類型,例如:stirng、int、float、array、object等,輸出array時會用結構表示,而且可以通過print_r($str,true)來使print_r不輸出而返回print_r處理後的值。但print_r輸出布爾值和NULL的結果沒有意義,因爲都是打印”\n”

  • 4:var_dump() 判斷一個變量的類型和長度,並輸出變量的數值。適合調試

5、如何獲取客戶端的ip(要求取得一個int)和服務器ip的代碼
客戶端:$_SERVER["REMOTE_ADDR"];或者getenv('REMOTE_ADDR')
服務器端:gethostbyname('www.baidu.com')或者$_SERVER['SERVER_ADDR'];
客戶端網頁地址:$_SERVSR[‘REQUEST_URI']

6、優化數據庫的方法
選取最適用的字段屬性,儘可能減少定義字段寬度,儘量把字段設置NOTNULL,例如’省份’、’性別’最好適用ENUM
使用連接(JOIN)來代替子查詢
適用聯合(UNION)來代替手動創建的臨時表
事務處理
鎖定表、優化事務處理
適用外鍵,優化鎖定表
建立索引
優化查詢語句

7、對於大流量網站,採用什麼方法來解決訪問量的問題
確認服務器硬件是否能夠支持當前的流量
數據庫讀寫分離,優化數據表
程序功能規則,禁止外部的盜鏈
控制大文件的下載
使用不同主機分流主要流量

8、語句include和require的區別是什麼?
require是無條件包含,也就是如果一個流程里加入require,無論條件成立與否都會先執行require,當文件不存在或者無法打開的時候,會提示錯誤,並且會終止程序執行

include有返回值,而require沒有(可能因爲如此require的速度比include快),如果被包含的文件不存在的化,那麼會提示一個錯誤,但是程序會繼續執行下去

注意:包含文件不存在或者語法錯誤的時候require是致命的,而include不是
require_once表示了只包含一次,避免了重複包含

9、isset、empty、is_null、參數本身的區別

empty , isset首先都會檢查變量是否存在,然後對變量值進行檢測。而is_null 和 “參數本身”只是直接檢查變量值,是否爲null,因此如果變量未定義就會出現錯誤!

isset 判斷變量是否定義或者是否爲空

變量未定義,返回false
變量定義不賦值,返回false
unset一個變量,返回false
變量賦值爲null,返回false

empty:判斷變量的值是否爲空,能轉換爲false的都是空,爲空返回true,反之返回false。

"",0,"0",NULL,FALSE,array(),未定義,都認爲爲空,返回true
沒有任何屬性的對象都認爲是空

變量本身作爲參數,與empty()一致,但接受未定義變量時,報警告;

isset() 和 empty() 區別:
Isset判斷變量是否存在,可以傳入多個變量,若其中一個變量不存在則返回假,empty判斷變量是否爲空爲假,只可傳一個變量,如果爲空爲假則返回真。

is_null:檢測傳入的值(值、變量、表達式)是否爲null

未定義報警告
定義了,但是賦值爲Null
定義了,但是沒有賦值
unset一個變量

10、 簡單描述mysql中,索引,主鍵,唯一索引,聯合索引的區別,對數據庫的性能有什麼影響(從讀寫兩方面)
索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含着對數據表裏所有記錄的引用指針。
普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對數據的訪問速度。
普通索引允許被索引的數據列包含重複的值。如果能確定某個數據列將只包含彼此各不相同的值,在爲這個數據列創建索引的時候就應該用關鍵字UNIQUE把它定義爲一個唯一索引。也就是說,唯一索引可以保證數據記錄的唯一性。
主鍵,是一種特殊的唯一索引,在一張表中只能定義一個主鍵索引,主鍵用於唯一標識一條記錄,使用關鍵字 PRIMARY KEY 來創建。
索引可以覆蓋多個數據列,如像INDEX(columnA, columnB)索引,這就是聯合索引。
索引可以極大的提高數據的查詢速度,但是會降低插入、刪除、更新表的速度,因爲在執行這些寫操作時,還要操作索引文件。

11、數據庫中的事務是什麼
事務(transaction)是作爲一個單元的一組有序的數據庫操作。如果組中的所有操作都成功,則認爲事務成功,即使只有一個操作失敗,事務也不成功。如果所有操作完成,事務則提交,其修改將作用於所有其他數據庫進程。如果一個操作失敗,則事務將回滾,該事務所有操作的影響都將取消。ACID 四大特性,原子性、隔離性、一致性、持久性。

12、XSS
XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權模式去執行攻擊者構造的腳本,然後利用不安全的Activex控件執行惡意的行爲。
使用htmlspecialchars()函數對提交的內容進行過濾,使字符串裏面的特殊符號實體化。

13、SQL注入漏洞產生的原因?如何防止?
SQL注入產生的原因:程序開發過程中不注意規範書寫sql語句和對特殊字符進行過濾,導致客戶端可以通過全局變量POST和GET提交一些sql語句正常執行。

防止SQL注入的方式:

開啓配置文件中的magic_quotes_gpc 和 magic_quotes_runtime設置
執行sql語句時使用addslashes進行sql語句轉換
Sql語句書寫儘量不要省略雙引號和單引號。
過濾掉sql語句中的一些關鍵詞:update、insert、delete、select、 * 。
提高數據庫表和字段的命名技巧,對一些重要的字段根據程序的特點命名,取不易被猜到的。
Php配置文件中設置register_globals爲off,關閉全局變量註冊
控制錯誤信息,不要在瀏覽器上輸出錯誤信息,將錯誤信息寫到日誌文件中。

14、PHP網站的主要攻擊方式有哪些?
命令注入(Command Injection)
eval 注入(Eval Injection)
客戶端腳本攻擊(Script Insertion)
跨網站腳本攻擊(Cross Site Scripting, XSS)
SQL 注入攻擊(SQL injection)
跨網站請求僞造攻擊(Cross Site Request
Forgeries, CSRF)
Session 會話劫持(Session Hijacking)
Session 固定攻擊(Session Fixation)
HTTP 響應拆分攻擊(HTTP Response Splitting)
文件上傳漏洞(File Upload Attack)
目錄穿越漏洞(Directory Traversal)
遠程文件包含攻擊(Remote Inclusion)
動態函數注入攻擊(Dynamic Variable
Evaluation)
URL 攻擊(URL attack)
表單提交欺騙攻擊(Spoofed Form
Submissions)
HTTP 請求欺騙攻擊(Spoofed HTTP Requests)

15、框架中什麼是單一入口和多入口 , 單一入口的優缺點?
多口就是通過訪問不同的文件來完成用戶請求。單一入口只 web 程序所有的請求都指向一個腳本文件的。
單一入口更容易控制權限,方便對 http 請求可以進行安全性檢查。
缺點:URL 看起來不那麼美觀,特別是對搜索引擎來說不友好。

16、對於關係型數據庫而言,索引是相當重要的概念,請回答有關索引的幾個問題:
a)、索引的目的是什麼?
快速訪問數據表中的特定信息,提高檢索速度
創建唯一性索引,保證數據庫表中每一行數據的唯一性。
加速表和表之間的連接
使用分組和排序子句進行數據檢索時,可以顯著減少查詢中分組和排序的時間

b)、索引對數據庫系統的負面影響是什麼?
負面影響:
創建索引和維護索引需要耗費時間,這個時間隨着數據量的增加而增加;索引需要佔用物理空間,不光是表需要佔用數據空間,每個索引也需要佔用物理空間;當對錶進行增、刪、改、的時候索引也要動態維護,這樣就降低了數據的維護速度。

c)、爲數據表建立索引的原則有哪些?
在最頻繁使用的、用以縮小查詢範圍的字段上建立索引。
在頻繁使用的、需要排序的字段上建立索引

d)、 什麼情況下不宜建立索引?
對於查詢中很少涉及的列或者重複值比較多的列,不宜建立索引。
對於一些特殊的數據類型,不宜建立索引,比如文本字段(text)等。

17、 解釋MySQL外連接、內連接與自連接的區別
先說什麼是交叉連接: 交叉連接又叫笛卡爾積,它是指不使用任何條件,直接將一個表的所有記錄和另一個表中的所有記錄一一匹配。

內連接 則是隻有條件的交叉連接,根據某個條件篩選出符合條件的記錄,不符合條件的記錄不會出現在結果集中,即內連接只連接匹配的行。
外連接 其結果集中不僅包含符合連接條件的行,而且還會包括左表、右表或兩個表中
的所有數據行,這三種情況依次稱之爲左外連接,右外連接,和全外連接。

左外連接,也稱左連接,左表爲主表,左表中的所有記錄都會出現在結果集中,對於那些在右表中並沒有匹配的記錄,仍然要顯示,右邊對應的那些字段值以NULL來填充。右外連接,也稱右連接,右表爲主表,右表中的所有記錄都會出現在結果集中。左連接和右連接可以互換,MySQL目前還不支持全外連接。

18、什麼是靜態路由,其特點是什麼?什麼是動態路由,其特點是什麼?
靜態路由是由系統管理員設計與構建的路由表規定的路由。適用於網關數量有限的場 合,且網絡拓樸結構不經常變化的網絡。其缺點是不能動態地適用網絡狀況的變化,當 網絡狀況變化後必須由網絡管理員修改路由表。
動態路由是由路由選擇協議而動態構建的,路由協議之間通過交換各自所擁有的路由信 息實時更新路由表的內容。動態路由可以自動學習網絡的拓樸結構,並更新路由表。其 缺點是路由廣播更新信息將佔據大量的網絡帶寬。

19、HTTP Keep-Alive的作用
作用:Keep-Alive:使客戶端到服務器端的連接持續有效,當出現對服務器的後繼請求時,Keep-Alive功能避免了建立或者重新建立連接。Web服務器,基本上都支持HTTP Keep-Alive。

缺點:對於提供靜態內容的網站來說,這個功能通常很有用。但是,對於負擔較重的網站來說,雖然爲客戶保留打開的連 接有一定的好處,但它同樣影響了性能,因爲在處理暫停期間,本來可以釋放的資源仍舊被佔用。當Web服務器和應用服務器在同一臺機器上運行時,Keep- Alive功能對資源利用的影響尤其突出。

解決:Keep-Alive: timeout=5, max=100
timeout:過期時間5秒(對應httpd.conf裏的參數是:KeepAliveTimeout),max是最多一百次請求,強制斷掉連接。就是在timeout時間內又有新的連接過來,同時max會自動減1,直到爲0,強制斷掉。

20、數組操作的基本函數

1 array_values($arr);       //獲得數組的值
2 array_keys($arr);         //獲得數組的鍵名
3 array_flip($arr);         //數組中的值與鍵名互換(如果有重複前面的會被後面的覆蓋)
4 array_search('PHP',$arr); //檢索給定的值,加true則是嚴格類型檢查
5 array_reverse($arr);      //將數組中的元素翻轉
6 in_array("apple", $arr);  //在數組中檢索apple
7 array_key_exists("apple", $arr); // 檢索給定的鍵名是否存在數組中
8 array_count_values($arr);        // 統計數組中所有值出現的次數
9 array_slice($arr, 0, 3);    //將數組中的一段取出,此函數忽略鍵名(數組的分段)
10 array_splice($arr, 0, 3array("black","maroon"));    //將數組中的一段取出,返回的序列從原數組中刪除
11 array_chunk($arr, 3, TRUE);   //將一個數組分割成多個,TRUE爲保留原數組的鍵名(分割多個數組)
12 array_diff($arr1, $arr2);           //返回差集結果數組 
13 array_diff_assoc($arr1, $arr2, $arr3);  //返回差集結果數組,鍵名也做比較
14 array_intersect($arr1, $arr2);  //返回交集結果數組    
15 array_intersect_assoc($arr1, $arr2);   //返回交集結果數組,鍵名也做比較 
16 array_unique($arr);   //移除數組中重複的值,新的數組中會保留原始的鍵名
17 shuffle($arr);             // 將數組的順序打亂

21、常量

__LINK__      //文件中的當前行號。
__FILE__       //文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。
__DIR__       //文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄,它等價於 dirname(__FILE__)。

__FUNCTION__       //函數名稱。自 PHP 5 起本常量返回該函數被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
 __CLASS__              //類的名稱。自 PHP 5 起本常量返回該類被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
 __METHOD__         //類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。
 __NAMESPACE__   //當前命名空間的名稱(大小寫敏感)。這個常量是在編譯時定義的(PHP 5.3.0 新增)

22、php獲取文件內容的方法,對應的函數
1:file_get_contents得到文件的內容(可以以get和post的方式獲取),整個文件讀入一個字符串中
2:用fopen打開url, 以get方式獲取內容(藉助fgets()函數)
3:用fsockopen函數打開url(可以以get和post的方式獲取),以get方式獲取完整的數據,包括header和body
4:使用curl庫獲取內容,使用curl庫之前,需要查看php.ini,查看是否已經打開了curl擴展

23、strlen()與mb_strlen的作用與區別
在PHP中,strlen與mb_strlen是求字符串長度的函數
PHP內置的字符串長度函數strlen無法正確處理中文字符串,它得到的只是字符串所佔的字節數。對於GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於UTF-8編碼的中文,就是3倍(在 UTF-8編碼下,一個漢字佔3個字節)。

採用mb_strlen函數可以較好地解決這個問題。mb_strlen的用法和strlen類似,只不過它有第二個可選參數用於指定字符編碼。例如得到UTF-8的字符串$str長度,可以用 mb_strlen($str,’UTF-8’)。如果省略第二這裏寫代碼片個參數,則會使用PHP的內部編碼。內部編碼可以通過 mb_internal_encoding()函數得到。

需要注意的是,mb_strlen並不是PHP核心函數,使用前需要確保在php.ini中加載了php_mbstring.dll,即確保“extension=php_mbstring.dll”這一行存在並且沒有被註釋掉,否則會出現未定義函 數的問題。

24、 正則表達式

匹配中文字符的正則表達式: [\u4e00-\u9fa5] 
匹配雙字節字符(包括漢字在內):[^\x00-\xff] 
匹配空行的正則表達式:\n[\s| ]*\r 
匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
匹配首尾空格的正則表達式:(^\s*)|(\s*$) 
匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
匹配網址URL的正則表達式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 
匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
匹配國內電話號碼:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 
匹配騰訊QQ號:^[1-9]*[1-9][0-9]*$ 

25、日期
用php打印出前一天的時間格式是2006-5-10 22:21:21

echo date('Y-m-d H:i:s', strtotime('-1 days')); 

求兩個日期的差數,例如2007-2-5 ~ 2007-3-6 的日期差數

strtotime(‘2007-3-6')-strtotime(‘2007-2-5'))/3600*24

26、mysql取得當前時間的函數是?,格式化日期的函數是
now(),date()
常用:date(“Y-m-d H:i:s”);

27、對$GLOBALS全局變量和global關鍵字的理解?

* (1)、輸出$GLOBALS全局變量: 
*  
*    結果: 
*    Array 
*       ( 
*           [GLOBALS] => Array 
*              *RECURSION* 
*           [_POST] => Array 
*               ( 
*                  [username] => admin     //等價於$_POST['username'] 
*                  [password] => 123       //等價於$_POST['password'] 
*               ) 
*           [_GET] => Array 
*               ( 
*                  [username] => admin     //等價於$_GET['username'] 
*                  [password] => 123       //等價於$_GET['password'] 
*               ) 
*           [_COOKIE] => Array 
*               ( 
*                   [PHPSESSID] => movgbv4t1klb9fsbcd7ns8ik73 
*                   [username] => admin     //等價於$_COOKIE['username'] 
*                   [password] => 123       //等價於$_COOKIE['password'] 
*               ) 
*           [_FILES] => Array 
*               ( 
*                  [name] => 1.txt         //等價於$_FILES['username'] 
*                  [type] => image/jpeg    //等價於$_FILES['password'] 
*               ) 
*           [_SESSION] => Array 
*               ( 
*                  [username] => admin     //等價於$_SESSION['username'] 
*                  [password] => 123       //等價於$_SESSION['password'] 
*               ) 
*           [pwd] => 134121233             //等價於$pwd 
*           [username] => xiaoqiang        //等價於$username 
*           [password] => 123              //等價於$password 
*       ) 
*  
* (2)、幾種等價的寫法: 
*   
*    (1)$_SESSION['username']等價於$GLOBALS['_SESSION']['username'] 
*    (2)$_COOKIE['username']等價於$GLOBALS['_COOKIE']['username'] 
*    (3)$_GET['username']等價於$GLOBALS['_GET']['username'] 
*    (4)$_POST['username']等價於$GLOBALS['_POST']['username'] 
*    (5)$_FILES['username']等價於$GLOBALS['_FILES']['username'] 
*    (6)$username等價於$GLOBALS['username'] 
*  
* (3)、global關鍵字: 
*  
*    php中全局變量在函數體內使用時必須聲明爲global;在函數體內通過global關鍵字聲明的變量自動變爲函數體外的全局變量 
* 
*    案例1: 
* 
*    function test(){ 
*       global $username;//聲明全局變量時不能賦值 
*       $username="小強";//此時可以給全局變量賦值 
*    } 
*    test(); 
*    echo "<pre>";print_r($GLOBALS);exit;//結果:"小強" 
* 
*    案例2: 
* 
*    $username="小強"; 
*    function test(){ 
*       global $username;//聲明全局變量時不能賦值(提示:使用global關鍵字引用函數體外的$username變量) 
*       $username="小紅";//此時可以給全局變量賦值(提示:將函數體外$username變量重新賦值) 
*    } 
*    test(); 
*    echo "<pre>";print_r($GLOBALS);exit;//結果:"小紅" 
*  
* (4)、全局變量的生效範圍: 
*  
*    $a = 1;include 'b.inc';//這裏變量$a將會在包含文件b.inc中生效 
*  
* (5)、global聲明的變量爲全局變量,在函數和類的外部照樣可以使用 
*  
*    如:discuz_application.php類中使用global關鍵字聲明的$_G全局變量,在全站都可以使用 

28、如何修改SESSION的生存時間

方法1:將php.ini中的session.gc_maxlifetime設置爲9999重啓apache
方法2:`<?php 
// 保存一天 
$lifeTime = 24 * 3600; 
session_set_cookie_params($lifeTime); 
session_start();
$_SESSION["admin"] = true; 
?>`

29、有一個網頁地址, 比如PHP開發資源網主頁: http://www.php.com/index.html,如何得到它的內容?

方法1(對於PHP5及更高版本):
   $readcontents = fopen("http://www.phpres.com/index.html", "rb");
   $contents = stream_get_contents($readcontents);
   fclose($readcontents);
   echo $contents;
   方法2:
   echo file_get_contents("http://www.phpres.com/index.html"); 

30、MyISAM和 InnoDB 的基本區別?索引結構如何實現?
MyISAM類型不支持事務,表鎖,易產生碎片,要經常優化,讀寫速度較快,而InnoDB類型支持事務,行鎖,有崩潰恢復能力。讀寫速度比MyISAM慢。

創建索引:alerttable tablename add index (字段名)

31、php中傳值與傳引用的區別。什麼時候傳值什麼時候傳引用?
按值傳遞:函數範圍內對值的任何改變在函數外部都會被忽略
按引用傳遞:函數範圍內對值的任何改變在函數外部也能反映出這些修改
優缺點:按值傳遞時,php必須複製值。特別是對於大型的字符串和對象來說,這將會是一個代價很大的操作。
按引用傳遞則不需要複製值,對於性能提高很有好處。

32、foo()和@foo()之間有什麼區別
@ 禁止報錯
當將其放置在一個 PHP 表達式之前,該表達式可能產生的任何錯誤信息都被忽略掉.

33、mysql_fetch_row() 和mysql_fetch_array之間有什麼區別?
mysql_fetch_row是從結果集取出1行數組,作爲枚舉
mysql_fetch_array是從結果集取出一行數組作爲關聯數組,或數字數組,兩者兼得
通常用後者。
如:如果你的表裏面有字段a,b,c那麼你用mysql_fetch_row() 就返回array(1=>a的值,2=>b的值,3=>c的值)這個時候你讀數組的話,只能這樣寫array[1], array[2]才能得到a的值;要是用mysql_fetch_array() 就返回array(a=>a的值,b=>b的值,c=>c的值)和 array(1=>a的值,2=>b的值,3=>c的值)這個時候你讀數組的話array[1] array[a]都能得到a的值

34、$a = 'abcdef'; 請取出$a的值並打印出第一個字母

$a{0}substr($a,0,1)

35、
(1)在HTTP 1.0中,狀態碼401的含義是未被授權;如果返回“找不到文件”的提示,則可用 header 函數,其語句爲header(“Location:www.xxx.php”);
(2)error_reporting 設定錯誤訊息回報的等級, error_reporting(2047)的作用是報告所有錯誤和警告
(3)以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句LoadModule php5_module “c:/php/php5apache2.dll”動態裝載PHP模塊,然後再用語句AddType application/x-httpd-php .php使得Apache把所有擴展名爲php的文件都作爲PHP腳本處理。
(4)想要自動加載類,使用function __autoload($class_name)
(5)php讀取文件內容的幾種方法和函數?
打開文件,然後讀取。fopen(),fread()
打開讀取一次完成file_get_contents()
(6)show create database mysql; 這個命令的作用?
顯示創建數據庫的sql語句
(7)show processlist; 這個命令的作用?
顯示哪些線程正在運行
(8)SHOW VARIABLES like ’%conn%’; 這個命令的作用?
顯示系統變量名包含conn的值
(9)用javascript取得一個input的值?取得一個input的屬性?

document.getElementById(‘name’).value;
document.getElementById(‘name’).type;

用Jquery取得一個input的值?取得一個input的屬性?

$(“input[name='aa']“).val();
$(“input[name='aa']“).attr(‘type’);

36、addslashes()與 htmlspecialchars() 區別
* (1)addslashes()函數主要在指定的預定義字符前添加反斜槓,這些預定義字符主要包括:
*
* 單引號 (‘)
* 雙引號 (“)
* 反斜槓 ()
* NULL
*
* addslashes()函數的主要作用是保證這些預定義字符能夠正確入庫,僅此而已
*
*
* (2)htmlspecialchars()函數把一些預定義的字符轉換爲HTML實體,這些預定義字符主要包括:
*
*
* & (和號) 成爲 &
* ” (雙引號) 成爲 "
* ’ (單引號) 成爲 '
* < (小於) 成爲 <
* > (大於) 成爲 >

37、heredoc
1,以<<

<?php
$v=2;
$a= <<<EOF
"abc"$v
"123"
EOF;
echo $a; //結果連同雙引號一起輸出:"abc"2 "123"
?>

3,heredoc常用在輸出包含大量HTML語法的文檔時。
比如:函數outputhtml()要輸出HTML的主頁。
可以有兩種寫法。很明顯第二種寫法比較簡單和易於閱讀。

<?php
//方法一
function outputhtml(){
echo "<html>";
echo "<head><title>腳本 學堂 主頁</title></head>"; 
echo "<body>主頁內容</body>";
echo "</html>;
}

//方法二
function outputhtml()
{
echo <<<EOT
   <html>
   <head><title>腳本 學堂 主頁</title></head>
   <body>主頁內容</body>
   </html>
EOT;
}
outputhtml();
?>

38、<?php require(dirname(__FILE__)."/do/".basename(__FILE__)); ?>

require() 語句包含並運行指定文件。 
( $XXXX 是變量名 )
dirname() 返回路徑中的目錄部分
 例如
$path = "/etc/passwd.php";
$file = dirname($path); 
$file 就是/etc
__FILE__  是PHP的魔術常量 表示當前文件的完整路徑和文件名
basename() 返回路徑中的文件名部分
例如
$path = "/home/httpd/html/index.php";
$file = basename($path);       
$file 就是 index.php
整句話就是 載入一個在你項目路徑中do文件夾下的跟你當前文件同名的文件

39、不使用cookie向客戶端發送一個cookie.
理解:session_start()開啓時,生成一個常量 SID,當COOKIE開啓時,這個常量爲空,當COOKIE關閉時,這個常量中存儲了PHPSESSID的值。通過在URL後加一個SID參數來傳遞SESSIONID的值,從而使客戶端頁面可以使用SESSION裏面的值。當客戶端開啓COOKIE和服務器端開啓SESSION時。瀏覽器第一次請求,服務器會向瀏覽器端發送一個COOKIE裏面存儲SESSIONID.當瀏覽器第二次請求時,會把已存在的COOKIE一起提交到服務器端

40、表中有A B C三列,用SQL語句實現:當A列大於B列時選擇A列否則選擇B列,當B列大於C列時選擇B列否則選擇C列。

select case when A>B then A else B end,
       case when B>C then B else C end
From test
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章