PHP面試題:ps這次的面試題有難度,歡迎挑戰留評。

MC811-MM118發表於2021-06-01

###

  1. 寫出一個能建立多級目錄的 PHP 函式

<?php /** * 建立多級目錄 * @param $path string 要建立的目錄 * @param $mode int 建立目錄的模式,在 windows 下可忽略 */

function create_dir ($path,$mode = 0777) { if (is_dir ($path)) { # 如果目錄已經存在,則不建立 echo "該目錄已經存在"; } else {

# 不存在,建立 if (mkdir ($path,$mode,true)) { echo "建立目錄成功"; } else {

echo "建立目錄失敗"; } } }

?>

###

  1. 寫出 smarty 模板的特點

速度快,編譯型,快取技術,外掛機制,強大的表現邏輯

###

  1. 開啟 php.ini 中的 safe_mode,會影響哪些函式?至少說出 6 個。

safe_mode,PHP 安全模式,它提供一個基本安全的共享環境,在一個有多個使用者賬戶存在的 php 開發的 web 伺服器上。當安全模式開啟的時候,一些函式將被完全的禁止,而另一些函式的功能將會受到限制,如:chdir,move_uploaded_file,chgrp,parse_ini_file,chown,rmdir,copy,rename,fopen,require,mkdir,unlink 等。 注意,在 php5.3 以上版本,safe_mode 被棄用,在 php5.4 以上版本,則將此特性完全去除了。

###

  1. 抓取遠端圖片到本地,你會用什麼函式?

file_get_contents 或者 curl

###

5.PHP 的垃圾收集機制是怎樣的

PHP 可以自動進行記憶體管理,清除不再需要的物件。 PHP 使用了引用計數 (reference counting) 這種單純的垃圾回收 (garbage collection) 機制。每個物件都內含一個引用計數器,每個 reference 連線到物件,計數器加 1。當 reference 離開生存空間或被設為 NULL,計數器減 1。當某個物件的引用計數器為零時,PHP 知道你將不再需要使用這個物件,釋放其所佔的記憶體空間。

###

  1. 請寫一段 PHP 程式碼,確保多個程式同時寫入同一個檔案成功

核心思路:加鎖

<?php $fp = fopen ("lock.txt","w+"); if (flock ($fp,LOCK_EX)) { // 獲得寫鎖,寫資料 fwrite ($fp, "write something"); // 解除鎖定 flock ($fp, LOCK_UN);

} else {

echo "file is locking..."; }

fclose($fp);

?>

###

  1. 寫一個函式,儘可能高效的,從一個標準 url 裡取出檔案的副檔名,例如:www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或.php

<?php

// 方案一 function getExt1 ($url){

$arr = parse_url($url); //Array ( [scheme] => http [host] => www.sina.com.cn [path] => /abc/de/fg.php [query] => id=1 )

$file = basename($arr['path']); $ext = explode('.', $file); return $ext[count($ext)-1]; }

// 方案二 function getExt2 ($url){

$url = basename($url); $pos1 = strpos($url,'.'); $pos2 = strpos($url,'?');

if (strstr($url,'?')) { return substr($url,$pos1+1,$pos2-$pos1-1);

} else { return substr($url,$pos1); } }

$path = "http://www.sina.com.cn/abc/de/fg.php?id=1"; echo getExt1($path); echo " "; echo getExt2($path);

?>

相關題目:使用五種以上方式獲取一個檔案的副檔名,要求:dir/upload.image.jpg,找出.jpg 或者 jpg,必須使用 PHP 自帶的處理函式進行處理,方法不能明顯重複,可以封裝成函式,比如 get_ext1 (file_name)

###

  1. 寫一個函式,能夠遍歷一個資料夾下的所有檔案和子資料夾。

<?php

function my_scandir($dir){ $files = array(); if(is_dir($dir)){ if ($handle = opendir($dir)) { while (($flie = readdir($handle))!== false) { if ($flie!="." && $file!="..") { if (is_dir($dir."/".$file)) { $files[$file] = my_scandir($dir."/".$file);

} else { $files[] = $dir."/".$file;

}

}

}

closedir($handle); return $files; } } }

?>

###

  1. 簡述論壇中無限分類的實現原理。

建立類別表如下:

CREATE TABLE category(

cat_id smallint unsigned not null auto_increment primary key comment’類別 ID’,
cat_name VARCHAR (30) NOT NULL DEFAULT’’COMMENT’類別名稱’,
parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT’類別父 ID’
)engine=MyISAM charset=utf8;

編寫一個函式,遞迴遍歷,實現無限分類

<?php function tree ($arr,$pid=0,$level=0){ static $list = array (); foreach ($arr as $v) { // 如果是頂級分類,則將其存到 $list 中,並以此節點為根節點,遍歷其子節點 if ($v ['parent_id'] == $pid) { $v ['level'] = $level; $list [] = $v; tree ($arr,$v ['cat_id'],$level+1); } }

return $list; }

?>

###

  1. 寫一個函式,算出兩個檔案的相對路徑,如 b=’/a/b/12/34/c.php’; 計算出 a 的相對路徑應該是../../c/d

<?php function releative_path($path1,$path2){ $arr1 = explode("/",dirname($path1)); $arr2 = explode("/",dirname($path2));

for ($i=0,$len = count($arr2); $i < $len; $i++) { if ($arr1[$i]!=$arr2[$i]) { break; } }

// 不在同一個根目錄下 if ($i==1) { $return_path = array (); }

// 在同一個根目錄下 if ($i != 1 && $i < $len) { $return_path = array_fill (0, $len - $i,".."); }

// 在同一個目錄下 if ($i == $len) { $return_path = array ('./'); }

$return_path = array_merge($return_path,array_slice($arr1,$i)); return implode('/',$return_path);

}

$a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php'; $c = '/e/b/c/d/f.php'; $d = '/a/b/c/d/g.php';

echo releative_path ($a,$b);// 結果是../../c/d echo " "; echo releative_path ($a,$c);// 結果是 a/b/c/d echo " "; echo releative_path ($a,$d);// 結果是./ echo " ";

?>

###

11.mysql_fetch_row () 和 mysql_fetch_array () 有什麼分別?

mysql_fetch_row () 把資料庫的一列儲存在一個以零為基數的陣列中,第一欄在陣列的索引 0,第二欄在索引 1,依此類推。

mysql_fetch_assoc () 把資料庫的一列儲存在一個關聯陣列中,陣列的索引就是欄位名稱,例如我的資料庫查詢送回 “first_name”、“last_name”、“email” 三個欄位,陣列的索引便是 “first_name”、“last_name” 和 “email”。

mysql_fetch_array () 可以同時送回 mysql_fetch_row () 和 mysql_fetch_assoc () 的值。

###

  1. 有一個網頁地址,比如 PHP 開發資源網主頁:www.phpres.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");

###

  1. 談談對 mvc 的認識

由模型 (model),檢視 (view),控制器 (controller) 完成的應用程式。 model 層負責提供資料,和資料庫有關的操作都交給模型層來處理, view 層則提供互動的介面,並輸出資料, 而 controller 層則負責接收請求,並分發給相應的 model 來處理,然後呼叫 view 層來顯示。

###

14.What does the GD library do?

GD 庫提供了一系列用來處理圖片的 API,使用 GD 庫可以處理圖片,或者生成圖片。在網站上 GD 庫通常用來生成縮圖或者用來對圖片加水印或者對網站資料生成報表。自從 PHP 4.3.0 版本後 GD 便內建在 PHP 系統中。

###

15.What function can you use to open a file for reading and writing?

A.fget (); B.file_open (); C.fopen (); D.open_file (); 答案:C fget () 這不是一個 PHP 函式,會引致執行錯誤。 file_open () 這不是一個 PHP 函式,會引致執行錯誤。 fopen () 這是正確答案,fopen () 可以用來開啟檔案以便讀寫。 open_file () 這不是一個 PHP 函式,會引致執行錯誤。

###

16.Smarty 的原理

smarty 是一個模板引擎,使用 smarty 主要是為了實現邏輯和外在內容的分離,如果不使用模板的話,通常的做法就是 php 程式碼和 html 程式碼混編。使用了模板之後,則可以將業務邏輯都放到 php 檔案中,而負責顯示內容的模板則放到 html 檔案中。

Smarty 在執行 display 方法的時候,讀取模板檔案,並進行資料替換,生成編譯檔案,之後每次訪問都會直接訪問編譯檔案,讀取編譯檔案省去了讀取模板檔案,和字串替換的時間,所以可以更快,編譯檔案裡時間戳記錄模板檔案修改時間,如果模板被修改過就可以檢測到,然後重新編譯(編譯是把靜態內容儲存起來,動態內容根據傳入的引數不同而不同)。

如果啟用了快取,則會根據編譯檔案生成快取檔案,在訪問的時候如果有快取檔案並且快取檔案沒有過期,則直接訪問快取檔案。

相關題目 1:能夠使 HTML 和 PHP 分離開使用的模板

smarty,phplib 等

相關題目 2:您是否用過模板引擎?如果有您用的模板引擎的名字是?

Smarty

###

17.PHP 如何實現頁面跳轉

方法一:php 函式跳轉,缺點,header 頭之前不能有輸出,跳轉後的程式繼續執行,可用 exit 中斷執行後面的程式。

header (“Location: 網址”);// 直接跳轉
header(“refresh:3;url=http://axgle.za.NET");// 三秒後跳轉

方法二:利用 meta

echo”“;

###

18.PHP 可以和 sql server/oracle 等資料庫連線嗎?

可以

###

  1. 使用哪些工具進行版本控制?

SVN 或者 CVS,Git

相關題目:您是否用過版本控制軟體?如果有您用的版本控制軟體的名字是?

TortoiseSVN-1.2.6

###

  1. 寫出一個正規表示式,過慮網頁上的所有 JS/VBS 指令碼(即把 script 標記及其內容都去掉):

過濾 JavaScript 指令碼參考:

<?php

header("content-type:text/html;charset=utf-8");

$script = "以下內容不顯示:";

$pattern = '//si’;

echo preg_replace($pattern, "指令碼內容", $script);//以下內容不顯示:指令碼內容 ?>

###

21.Given a line of text $string,how would you write a regular expression to strip all the HTML tags from it?

方案一,使用 PHP 內建函式 strip_tags () 除去 HTML 標籤 方案二,自定義函式,如下:

<?php

header("content-type:text/html;charset=utf-8");

function strip_html_tags($str){ $pattern = '/<("[^"]*"|'[^']*'|[^>"'])*>/'; return preg_replace($pattern,'',$str);

}

// 例項 $html = '

ddddd

'; echo strip_html_tags($html); echo " ";

$html = '

bb aaa

'; echo strip_html_tags($html);

?>

###

  1. 請寫一個函式驗證電子郵件的格式是否正確(要求使用正則)

preg_match(‘/^[w-.]+@[w-]+(.w+)+$/‘,$email);

相關題目:請用正規表示式寫一個函式,驗證電子郵件的格式是否正確。(鑫眾人云)

###

  1. 請對 POSIX 風格和相容 Perl 風格兩種正規表示式的主要函式進行類比說明

主要區別有以下三種:

preg_replace () 裡面的正則可以寫成型如:”/.xxx/“而 ereg_replace () 裡面的正則需寫成型如 “xxx”

preg_replace () 能運算元組,而 ereg_replace () 不可以

在逆向引用用 preg_replace () 可使用 0-99 個,而 ereg_replace () 最多為 9 個

使用 Perl 相容正規表示式語法的 preg_match () 函式通常是比 ereg () 更快的替代方案。

###

  1. 請寫出並說明如何在命令列下執行 PHP 指令碼(寫出兩種方式)同時向 PHP 指令碼傳遞引數?

首先進入 php 安裝目錄

php -f d:/wamp/www/1.php 其中 - f 引數指定要執行的 php 檔案
php -r phpinfo (); 其中 - r 表示直接執行 php 程式碼,無需寫開始結束標記

###

  1. 使用正規表示式提取一段標識語言(html 或 xml)程式碼段中指定標籤的指定屬性值(需考慮屬性值對不規則的情況,如大小寫不敏感,屬性名值與等號間有空格等)。此處假設需提取 test 標籤的 attr 屬性值,請自行構建包含該標籤的串

編寫如下函式:

<?php header("content-type:text/html;charset=utf-8");

function getAttrValue($str,$tagName,$attrName){ $pattern1="/<".$tagName."(s+w+s*=s*(['"]?)([^'"]*)())*s+".$attrName."s*=s*(['"]?)([^'"]*)()(s+w+s*=s*(['"]?)([^'"]*)(9))*s*>/i";

$arr=array(); $re=preg_match($pattern1,$str,$arr);

if($re){ echo" $arr[6]={$arr[6]}"; }else{ echo" 沒找到。"; }

}

// 示例

$str1=""; getAttrValue ($str1,"test","attr");// 找 test 標籤中 attr 屬性的值,結果為 ddd

$str2="";

getAttrValue ($str2,"test2","t1");// 找 test2 標籤中 t1 屬性的值,結果為 t1 value

?>

###

26.What does the following code do?Explain what’s going on there.date);

這是把一個日期從 MM/DD/YYYY 的格式轉為 DD/MM/YYYY 格式。 輸出 26/08/2003

###

27.What function would you use to redirect the browser to a new page?

A.redir () B.header () C.location () D.redirect () 答案:B redir () 這不是一個 PHP 函式,會引致執行錯誤。 header () 這個是正確答案,header () 函式傳送頭資訊,可以用來使瀏覽器轉向到另一個頁面,例如:header (“Location:www.search-this.com/“)。 location () 這不是一個 PHP 函式,會引致執行錯誤。 redirect () 這不是一個 PHP 函式,會引致執行錯誤。

###

28.When turned on____________will_________your script with different variables from HTML forms and cookies.

A.show_errors,enable B.show_errors,show C.register_globals,enhance D.register_globals,inject 答案:C

###

  1. 一個函式的引數不能是對變數的引用,除非在 php.ini 中把____設為 on。

allow_call_time_pass_reference 是否啟用在函式呼叫時強制引數被按照引用傳遞

###

  1. 在 HTML 語言中,頁面頭部的 meta 標記可以用來輸出檔案的編碼格式,以下是一個標準的 meta 語句 <META http-equiv=’Content-Type’content=’text/html;charset=gbk’>,請使用 PHP 語言寫一個函式,把一個標準 HTML 頁面���的類似 meta 標記中的 charset 部分值改為 big5。

請注意: (1) 需要處理完整的 html 頁面,即不光此 meta 語句 (2) 忽略大小寫 (3)’和” 在此處是可以互換的 (4)’Content-Type’兩側的引號是可以忽略的,但’text/html;charset=gbk’兩側的不行 (5) 注意處理多餘空格 編寫正規表示式如下:

$reg1=”/(<metashttp-equivs=s([‘“]?)Content-Type()scontents=s([‘“])text/html;charset=)(UTF-8)()(s*/?>)/i”;

###

31.PHP 中如何判斷一個字串是否是合法的日期模式:2007-03-13 13:13:13。要求程式碼不超過 5 行。

<?php function checkDateTime($data){ if (date('Y-m-d H:i:s',strtotime($data)) == $data) { return true; } else { return false; }

}

// 示例 $data = '2015-06-20 13:35:42'; var_dump (checkDateTime ($data));//bool (true)

$data = '2015-06-36 13:35:42'; var_dump(checkDateTime($data));//bool(false)

?>

###

32.PHP 中,如何獲得一個陣列的鍵值?

使用 key () 可以獲得陣列中當前元素的鍵名,使用 current () 則可以返回當前元素的值。 使用 array_keys () 則可以得到陣列中所有的鍵名。 使用 foreach 結構 foreach ($arr as value) 可以通過 value 分別獲取鍵名和值。

###

  1. 如果模板是用 smarty 模板。怎樣用 section 語句來顯示一個名為 $data 的組。

比如:

$data=array(
0=>array(‘id’=>8,’name’=>’name1’),
1=>array(‘id’=>10,’name’=>’name2’),
2=>array(‘id’=>15,’name’=>’name3’)
);

寫出在模板頁的程式碼?若用 foreach 語句又要怎樣顯示呢?

用 section 語句:

<{section name=test loop=$data start=0 step=1}>

id:<{$data[test].id}>

name:<{$data[test].name}>

<{sectionelse}>
陣列為空
<{/section}>

用 foreach 語句:

<{foreach from=$data item=test}>

id:<{$test.id}>

name:<{$test.name}>

<{foreachelse}>

陣列為空

<{/foreach}>

###

  1. 哪個選項會匹配下邊的這個正規表示式?(/.*xyzd/)

A.*****xyz

B.xyz1 C.xyz2 D.xyz 答案:C

###

  1. 以下哪個錯誤無法被標準的錯誤控制器獲取?

A.E_WARNING B.E_USER_ERROR C.E_PARSE D.E_NOTICE 答案:B

###

  1. 以下哪種錯誤型別無法被自定義的錯誤處理器捕捉到?

A.E_WARNING B.E_USER_ERROR C.E_PARSE D.E_NOTICE 答案:C

###

37.(^s)|(s$) 這個正規表示式作用是:__;

匹配以 0 個或多個空白符開頭或者 0 個或多個空白符結尾的字串

###

  1. 編寫函式取得上一月的最後一天

<?php

date_default_timezone_set('PRC');

/** * 獲取給定月份的上一月最後一天 * @param $date string 給定日期 * @return string 上一月最後一天 */

function get_last_month_last_day($date = ''){ if ($date != '') { $time = strtotime($date);

} else { $time = time();

}

$day = date ('j',$time);// 獲取該日期是當前月的第幾天 return date ('Y-m-d',strtotime ("-{$day} days",$time)); }

// 測試 echo get_last_month_last_day (); echo " "; echo get_last_month_last_day("2013-3-21"); ?>

###

  1. 在很多時候,我們可以通過 apache 的主配置檔案來設定對 test 目錄的訪問許可權控制,如 IP/test 請問如果需設定 test 下的一個子目錄的訪問控制許可權,是否可以在主配置檔案中修改,如果不可以應如何解決。

可以,還可以在需要控制的子目錄下建立.htaccess 檔案,寫入訪問控制。

###

  1. 如果我的網站用的 utf-8 編碼,為防止亂碼出現,都需要注意哪些地方?

從以下幾個方面考慮:

資料庫中庫和表都用 utf8 編碼

php 連線 mysql,指定資料庫編碼為 utf8 mysql_query (“set names utf8”);

php 檔案指定頭部編碼為 utf-8header (“content-type:text/html;charset=utf-8”);

網站下所有檔案的編碼為 utf8

html 檔案指定編碼為 utf-8

###

  1. 在 url 中用 get 傳值的時候,若中文出現亂碼,應該用哪個函式對中文進行編碼?

urlencode()

###

  1. 寫出兩種對變數加密的函式?

md5(str);

###

  1. 如何把 2009-9-2 10:30:25 變成 unix 時間戳?

<?php

date_default_timezone_set("PRC");

// 將字串轉成 Unix 時間戳 $unix_time = strtotime ("2009-9-2 10:30:45"); echo $unix_time; echo " ";

// 格式化 Unix 時間戳為正常時間格式 echo date ("Y-m-d H:i:s",$unix_time); ?>

###

  1. 如何把一個 GB2312 格式的字串裝換成 UTF-8 格式?

<?php iconv ('GB2312','UTF-8',' 悄悄是別離的笙簫 '); ?>

###

  1. 如果需要原樣輸出使用者輸入的內容,在資料入庫前,要用哪個函式處理?

htmlspecialchars 或者 htmlentities

###

  1. 寫出五種以上你使用過的 PHP 的擴充套件的名稱(提示:常用的 PHP 擴充套件)

mb_sring、iconv、curl、GD、XML、socket、MySQL、PDO 等

###

  1. 瞭解 MVC 模式嗎?請寫出三種以上目前 PHP 流行的 MVC 框架名稱(不區分大小寫)

FleaPHP、Zend Framework、CakePHP、Symfony、ThinkPHP、YII、CodeIgniter 等

###

48.php 中 WEB 上傳檔案的原理是什麼,如何限制上傳檔案的大小?

上傳檔案的表單使用 post 方式,並且要在 form 中新增 enctype=’multipart/form-data’。

一般可以加上隱藏域:,位置在 file 域前面。

value 的值是上傳檔案的客戶端位元組限制。可以避免使用者在花時間等待上傳大檔案之後才發現檔案過大上傳失敗的麻煩。

使用 file 檔案域來選擇要上傳的檔案,當點選提交按鈕之後,檔案會被上傳到伺服器中的臨時目錄,在指令碼執行結束時會被銷燬,所以應該在指令碼結束之前,將其移動到伺服器上的某個目錄下,可以通過函式 move_uploaded_file () 來移動臨時檔案,要獲取臨時檔案的資訊,使用 $_FILES。

限制上傳檔案大小的因素有:

客戶端的隱藏域 MAX_FILE_SIZE 的數值(可以被繞開)。

伺服器端的 upload_max_filesize,post_max_size 和 memory_limit。這幾項不能夠用指令碼來設定。

自定義檔案大小限制邏輯。即使伺服器的限制是能自己決定,也會有需要個別考慮的情況。所以這個限制方式經常是必要的。

###

  1. 簡述 UBB code 的實現原理。

UBB 程式碼是 HTML 的一個變種,通過程式自定義我們的標籤,比如 “[a] PHP 中 UBB 的使用 [/a]” 這樣的標籤,其實質就是查詢 [a][/a] 標籤,將其替換成的標準 html,說白了,就是將標準的 html 標記通過技術手段使其簡化,其輸出出來的結果還是標準的 html。

明白了 ubb 的原理,那麼再製作一個簡單的 ubb 編輯器就不難了,和 fck 之類的編輯器比較起來,ubb 程式碼最大的優點就是程式碼簡單,功能很少,簡單的 ubb 只需要一個檔案,而且 ubb 標籤可以自己來定義,更改起來很方便,在 php 中就是利用替換函式就可以將 html 進行標籤化,輸出時進行標籤的轉化。

###

  1. 怎麼把檔案儲存到指定目錄?怎麼避免上傳檔案重名問題?

可以自己設定上傳檔案的儲存目錄,與檔名拼湊形成一個檔案路徑,使用 move_uploaded_file (),就可以完成將檔案儲存到指定目錄。 可以通過上傳的檔名獲取到檔案字尾,然後使用時間戳 + 隨機數 + 檔案字尾的方式為檔案重新命名,這樣就避免了重名。

###

51._____函式能返回指令碼里的任意行中呼叫的函式的名稱。該函式同時還經常被用在除錯中,用來判斷錯誤是如何發生的。

debug_print_backtrace()

###

  1. 在 Smarty 模板語法中怎麼能遍歷陣列 ids

{section name=temp loop=$ids}
{if $ids[temp].id==500}
{$ids[temp].id}
{esle}
{$ids[temp].id}
{/if}
{/section}

###

  1. 在 Smarty 模板語法中如何獲取當前時間,並且使用 Y-m-d Hs 的格式輸出?(億郵)

使用 {$smarty.now} 來獲取當前時間,得到的是 unix 系統時間戳 使用變數調節器進行格式化,如下:

{$smarty.now|date_format:“%Y-%m-%d%H:%M:%S”}

###

  1. 在 Smarty 模板語法中如何獲取 php 的全域性環境變數

$smarty.get. 變數 #顯示通過 get 方式傳過來的指定變數的值
$smarty.post. 變數 #顯示通過 post 方式傳過來的指定變數的值
$smarty.cookies. 變數 #顯示通過 cookie 中指定變數的值
$smarty.server.SERVER_NAME #顯示 server 變數值,$_SERVER 系列變數
$smarty.env.PATH #顯示系統環境變數值,$_ENV 系列變數
$smarty.session. 變數 #顯示 session 中指定變數的值
$smarty.request. 變數 #顯示通過 post、get、cookie 中指定變數的值

###

  1. 在 Smarty 模板中如何用自定義函式

使用模板分隔符包含,傳遞引數則使用 HTML 屬性的方式,例如:{html_image file=”pumpkin.jpg”}

###

  1. 列舉出你所知道的 php 系統函式庫例如,數學函式庫

mysql,gd,pdo,XML,zip,filesystem,mail 等

###

  1. 假如讓你來寫一個函式實現 Utf-8 轉 gb2312,那麼函式的名稱應該怎麼命名?(億郵)

utf8_to_gb2312 或者 utf8togb2312

###

  1. 請描述如下 URL 重寫規則的用意。

<IfModulemod_rewrite.c>
RewriteEngineon
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteBase/
RewriteRule./index.php[L]

如果 REQUEST_FILENAME 檔案存在,就直接訪問檔案,不進行下面的 rewrite 規則, 如果 REQUEST_FILENAME 目錄存在,就直接訪問目錄,不進行下面的 rewrite 規則, RewriteRule./index.php [L] 的意思是把所有的請求都給 index.php 處理。

###

59.Warning:Cannot modify header information-headers already sent by (output started at D:srcinit.php:7) in D:srcinit.php on line10 通常什麼情況下 php 會報該警告資訊?

一般是在 header、set_cookie 以及 session_start 函式前面有輸出(包括空格)的情況下,會報該警告資訊
有問題記得留評;我不介意推薦給認為有用的朋友看我寫的這些亂七八糟的東西!

本作品採用《CC 協議》,轉載必須註明作者和本文連結
如果覺得我寫的不錯,記得和我交流,其實我也有很多不懂,嘻嘻!

相關文章