-1

我在这里有这段代码:

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

4 回答 4

3

问题出在您的 header() 函数中。

header('Location: search_lucky.php?load=$search');

应该

header("Location: search_lucky.php?load=$search");

因为 php 将 (') 之间的所有内容视为文字。所以它实际上是在传递 load=$search

于 2012-09-26T21:51:29.907 回答
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 的“搜索”。更改为小写可能会更好。

于 2012-09-26T22:05:34.230 回答
0

在 PHP 中,变量只用双引号解释。

header("Location: search.php?load=$search");

要使用单引号,您需要连接值

header('Location: search.php?load='.$search);
于 2012-09-26T22:02:20.400 回答
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)。这两种情况不匹配,这就是您看到“无效操作”输出的原因。

于 2012-09-26T21:57:59.343 回答