我这里有这个代码:
<?php
$search=htmlspecialchars($_GET['load']);
$method = isset( $_GET['btnAction'] ) ? $_GET['btnAction'] : '';
switch( $method ) {
case 'Search':
header('Location: search.php?load=$search');
break;
case 'Im Feeling Lucky':
//do chapter two stuff
header('Location: search_lucky.php?load=$search');
break;
default:
echo 'Not a valid operation';
}
?>
除了$ search变量之外,一切都有效,我不明白出了什么问题。
当有人点击此网址时,有人可以告诉我为什么$ search变量不起作用:handler.php?load=keyword&btnAction=Search
答案 0 :(得分:3)
问题出在你的header()函数中。
header('Location: search_lucky.php?load=$search');
应该是
header("Location: search_lucky.php?load=$search");
因为php将(')之间的所有内容视为文字。所以它实际上是传递load = $ search
答案 1 :(得分:1)
您是否尝试过使用if()语句来执行此操作..请参阅下文..
<?php
$search=htmlspecialchars($_GET['load']);
if(isset($_GET['btnAction']) {
$method = $_GET['btnAction'];
}
switch( $method ) {
case 'Search':
header('Location: search.php?load=$search');
break;
case 'Im Feeling Lucky':
//do chapter two stuff
header('Location: search_lucky.php?load=$search');
break;
default:
echo 'Not a valid operation';
}
?>
编辑:刚刚注意到使用国会大厦S的'搜索'。改为小写可能会更好。
答案 2 :(得分:0)
这段代码有点破,所以在改变之后再看一下:
<?php
$search=htmlspecialchars($_GET['load']);
$method = isset( $_GET['btnAction'] ) ? $_GET['btnAction'] : '';
switch( $method ) {
case "search":
header("Location: search.php?load=$search");
break;
case "Im Feeling Lucky":
//do chapter two stuff
header("Location: search_lucky.php?load=$search");
break;
default:
echo 'Not a valid operation';
}
?>
原因是因为您正在测试$ method(其值为'search')以查看它是否与'Search'匹配(使用大写S)。这两种情况不匹配,这就是你看到“Not a valid operation”输出的原因。
答案 3 :(得分:0)
在PHP中,变量仅以双引号解释。
header("Location: search.php?load=$search");
要使用单引号,您需要连接值
header('Location: search.php?load='.$search);