一、PHP中幾個輸入函數echo, print(), print_r(), printf(), sprintf(), var_dump()的區別。
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處理後的值;
4.printf() :是函數 把文字格式化後輸出,參考C語言
5.sprintf() : 是函數, 跟printf()相似,但不打印,而是返回格式化的文字(該函數把格式化的字符串寫入一個變量,而不是輸出出來)其他的與printf一樣;
6.var_dump() :是函數,輸出變量的內容、類型或字符串的內容、類型、長度。
二、禁用cookie的session的使用方案,設置session過期的方法、對應函數:
1.通過url傳值,把session id附加到url上(缺點:整個站點中不能有純靜態頁面,因為純靜態頁面session id 將無法繼續傳遞到下一個頁面);
2.通過隱藏表單,把session id放到表單的隱藏文本框中同表單一塊提交過去(缺點:不適用<a>標簽這種直接跳轉的非表單的情況);
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
三、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擴展
四、isset() 、empty()與is_null的區別
1、當變量未定義時,is_null()和“參數本身”是不允許作為參數判斷的,會報Notice警告錯誤;
2、empty,isset首先都會檢查變量是否存在,然後對變量值進行檢測。而is_null 和 “參數本身”只是直接檢查變量值,是否為null,因此如果變量未定義就會出現錯誤!
3、isset():僅當null和未定義,返回false;
4、empty():""、0、"0"、NULL、FALSE、array(),未定義,均返回false;
5、is_null():僅判斷是否為null,未定義 報警告;
6、變量本身作為參數,與empty()一致,但接受未定義變量時,報警告;
五、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”這一行存在並且沒有被注釋掉,否則會出現未定義函 數的問題。 六、PHP 如何獲取客戶端的IP地址$_SERVER['REMOTE_ADDR'] ; 通過全局數組來獲得
getenv('REMOTE_ADDR') ; 通過環境變量來獲得
當客戶機使用代理的時候獲取不到真實的IP地址