我试图从此网址中的变量中获取操作值。
真实网址
index.php?action=ok&id=45&name=LG-Optimus
友好网址
home/ok/1/LG-P88
以上友好的网址显示重定向此页面时的
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>";
}
但我得到了未定义的索引确定&#39;。
.htaccess 文件包含此代码
# Turn Rewrite Engine On
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
# Rewrite for index.php
RewriteRule ^home index.php [NC,L]
# Rewrite for card-name
RewriteRule ^home/([0-9]+)/([0-9a-zA-Z_-]+)$ index.php?action=$1&id=$2&name=$3 [QSA,L]
感谢您的帮助。
答案 0 :(得分:1)
您正在将GET变量操作设置为&#34;确定&#34;,但您的代码假设该变量已命名并且#34;确定&#34;。
要在代码中进行检查,您应该使用:
$action = isset($_GET['action']) ? $_GET['action'] : "";
if($action=='ok'){
另一件事,你的正则表达式缺乏&#34;动作&#34;争论,试试这个:
^home/(.*)/([0-9]+)/([0-9a-zA-Z_-]+)$
答案 1 :(得分:0)
此代码中存在一些错误。使用此代码
RewriteRule ^home/([a-z]+)/([0-9]+)/([0-9a-z_-]+)$ index.php?ok=$1&id=$2&name=$3 [QSA,L,NC]
出于安全考虑,您必须避免直接使用$ _GET。 (see)