PHP基礎面試題

  1、PHP中幾個輸入函數echo, print(), print_r(), printf(), sprintf(), var_dump()的區別。php

    1.echo : 是語句不是函數,沒有返回值,可輸出多個變量值,不須要圓括號。不能輸出數組和對象,只能打印簡單類型(如int,string);數據庫

    2.print : 是語句不是函數, 有返回值1,只能輸出一個變量, 不必定須要圓括號,不能輸出數組和對象,只能打印簡單類型(如int,string);數組

    3.print_r() :是函數, 可打印複合類型 (如string, int, float, array, object等)輸出array時會用結構表示,並且可經過print_r($str,true)來使print_r()不輸出而返回print_r處理後的值;cookie

    4.printf() :是函數 把文字格式化後輸出,參考C語言session

    5.sprintf() : 是函數, 跟printf()類似,但不打印,而是返回格式化的文字(該函數把格式化的字符串寫入一個變量,而不是輸出出來)其餘的與printf同樣;curl

    6.var_dump() :是函數,輸出變量的內容、類型或字符串的內容、類型、長度。函數

  2、禁用cookie的session的使用方案,設置session過時的方法、對應函數:post

    1.經過url傳值,把session id附加到url上(缺點:整個站點中不能有純靜態頁面,由於純靜態頁面session id 將沒法繼續傳遞到下一個頁面);編碼

    2.經過隱藏表單,把session id放到表單的隱藏文本框中同表單一塊提交過去(缺點:不適用<a>標籤這種直接跳轉的非表單的狀況);url

    3.直接配置php.ini文件, 將php.ini文件裏的session.use.trans.sid = 0 設爲 1;

    4.用文件、數據庫等形式保存session ID,在跨頁過程當中手動調用;

    1.setCookie(session_name(),session_id(),time()+60,"/");

    2.session_set_cookie_params(60);(把session存入cookie中);

    注意:php.ini 中的session.gc_probability / session.gc_divisor

  3、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擴展

  4、isset() 、empty()與is_null的區別

    一、當變量未定義時,is_null()和「參數自己」是不容許做爲參數判斷的,會報Notice警告錯誤;

    二、empty,isset首先都會檢查變量是否存在,而後對變量值進行檢測。而is_null 和 「參數自己」只是直接檢查變量值,是否爲null,所以若是變量未定義就會出現錯誤!

    三、isset():僅當null和未定義,返回false;

    四、empty():""、0、"0"、NULL、FALSE、array(),未定義,均返回false;

    五、is_null():僅判斷是否爲null,未定義 報警告;

    六、變量自己做爲參數,與empty()一致,但接受未定義變量時,報警告;

  5、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」這一行存在而且沒有被註釋掉,不然會出現未定義函 數的問題。
 
  6、PHP 如何獲取客戶端的IP地址

    $_SERVER['REMOTE_ADDR'] ;   經過全局數組來得到 

    getenv('REMOTE_ADDR') ; 經過環境變量來得到

    當客戶機使用代理的時候獲取不到真實的IP地址

相關文章
相關標籤/搜索