我有一個PHP站點用下面的代碼在它的文件:問題與包括基於(非限定)可變
<?php
$p = $_GET['p']
include("$p.inc");
?>
每當我送一個遊客到頁面像index.php?p=contact
比如我想要的文件包括contact.inc
。這工作正常。
現在我想要包含某個文件(例如start.inc
),當訪問者發送到index.php
沒有任何GET變量。但是,返回的錯誤消息告訴我$ p是未定義的(邏輯上它是)。
我試圖通過使用isset函數像這樣解決這個問題:
<?php
if(!isset($p)) $p = "start";
else $p = $_GET['p'];
include("$p.inc");
?>
但是,這並不工作,因爲現在$ P始終包含字符串「開始」,我不能送訪客index.php?p=contact
了 - 它仍然會包含start.inc
有人可以幫我解決這個問題嗎? 在此先感謝!
你介意解釋下面的內容嗎? '$ p = preg_replace(「/ \ W + /」,「」,$ p);' – fruitbooter 2011-04-16 00:32:21
是的。這是一個正則表達式過濾器。它刪除任何「非單詞」字符。意思是隻留下字母,數字或下劃線。 – mario 2011-04-16 00:34:32
啊謝謝!如果變量被訪問者操縱,我想這是特別有用的嗎?如果我是代碼的唯一負責人,我不需要過濾我的變量,對嗎? – fruitbooter 2011-04-16 01:53:13