2012-09-26 75 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'搜索'。更改为小写可能会更好地工作。