无法变量工作

时间:2012-09-26 21:46:58

标签: php variables

我这里有这个代码:

<?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

4 个答案:

答案 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);