2012-09-26 76 views
-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'; 
} 

?> 

一切正常,除了$搜索變量,我不明白什麼是錯的。

有人能告訴我爲什麼$搜索變量不工作時,我打這個網址:handler.php?load=keyword&btnAction=Search

+2

在'header'函數中使用雙引號而不是單引號。 –

+0

爲什麼** HTML **將一個字符串編碼爲** URL **? – Quentin

+0

非常感謝你,現在它的工作:) –

回答

3

的問題是在你的header()函數。

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

應該是

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

作爲PHP對待(')之間的所有內容作爲文字。所以它的字面傳遞負荷= $搜索

+0

感謝您的解釋 –

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'; 
} 
?> 

的原因是因爲你正在測試$方法(其中有一個'search'的值)來查看它是否匹配'Search'(大寫字母S)。這兩種情況不匹配,這就是您看到「不是有效操作」輸出的原因。

0

在PHP中,變量只能用雙引號解釋。

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

要使用單引號,你需要連接的值

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

謝謝你,我會記住這一點。問候 –

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'搜索'。更改爲小寫可能會更好地工作。