全部,PHP - 爲什麼「Index.php?action =」未被識別爲「Index.php?」
我正在用PHP構建一個前端控制器。在這裏面,我說:
if (isset($_GET['action'])){
$action=$_GET['action'];
} else {
$action='';
}
我遵循與switch語句比控制器是基於$action
值稱爲共治:
switch ($action){
case '':
require_once('Controller_Welcome.php');
$command=new controller_Welcome();
break;
case 'logon':
require_once('Controller_Logon.php');
$command=new controller_Logon();
break;
default:
require_once('Controller_Unknown.php');
$command=new controller_Unknown();
break;
}
$command->execute();
這工作得很好。當我啓動應用程序時,URL是http://.../Index.php?
,並調用Controller_Welcome.php
。如果我點擊登錄菜單項,我會得到http://.../Index.php?action=logon
,並調用Controller_Logon.php
。如果我手動編輯URL以將...?action=...
設置爲某個未知值,我會得到Controller_Unknown.php
,這是我的錯誤頁面。所以一切都很好。
我不明白的是,如果我手動更改網址以顯示http://.../Index.php?action=
,我會得到錯誤頁面而不是歡迎頁面。爲什麼php不會將以...?action=
結尾的網址與開關盒$action='';
關聯?
(還有時會發生沒有邏輯上的用戶情況,但是我還是不明白......)
感謝,
JDelage
PS:Var_dumping $action
回報string(0) ""
。
的var_dump($行動);回報什麼? – 2011-08-28 04:05:45
嘗試var_dumping你的變量,也許這不是你想象的那樣。 –
它返回:'string(0)「」' – JDelage