2014-12-05 74 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