-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 変数以外はすべて機能しますが、何が問題なのかわかりません。

この URL にアクセスしたときに $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) と一致するかどうかを確認したためです。これら 2 つのケースは一致しないため、「有効な操作ではありません」という出力が表示されていました。

于 2012-09-26T21:57:59.343 に答える