2014-12-05 34 views
-1

我想從此URL中的變量獲取動作值PHP Apache重寫規則和變量

真實網址

index.php?action=ok&id=45&name=LG-Optimus 

友好的URL

home/ok/1/LG-P88 

這上面友好的URL顯示在重定向這樣

header('Location: /home/ok/' . $id . '/' . $name); 

包含代碼來獲取頁面腳本的網頁變量

$ok = isset($_GET['ok']) ? $_GET['ok'] : ""; 
if($ok=='ok'){ 
    echo "<div class='popup'>"; 
     echo "<strong>{$card-name}</strong> added!"; 
     echo ""; 
    echo "</div>"; 
} 

但我得到'未定義索引好吧'。

的.htaccess文件包含此代碼

​​3210

感謝您的幫助。

回答

1

您正在將GET變量動作設置爲「ok」,但您的代碼假定該變量被命名爲「ok」。
要檢查它在你的代碼,你應該使用:

$action = isset($_GET['action']) ? $_GET['action'] : ""; 
if($action=='ok'){ 

另一件事,你的正則表達式缺少「行動」的說法,試試這個:

^home/(.*)/([0-9]+)/([0-9a-zA-Z_-]+)$ 
+0

哦天啊。我改變了代碼,但仍然得到相同的錯誤 - Undefinex索引。 – 2014-12-05 19:46:41

+0

錯誤仍然存​​在。任何幫助? – 2014-12-05 20:11:12

+0

如果你確實在使用「isset」,那麼這個錯誤應該永遠不會出現,這聽起來像你有一個錯誤的地方或錯誤是在你的代碼中的其他地方。 – 2014-12-05 20:43:33

0

你有一些錯誤的這段代碼。使用此代碼

RewriteRule ^home/([a-z]+)/([0-9]+)/([0-9a-z_-]+)$ index.php?ok=$1&id=$2&name=$3 [QSA,L,NC] 

也出於安全原因,您必須避免直接使用$ _GET。 (see