2012-07-25 261 views
0

我有一個PHP網頁,其中接受兩個變量傳遞多個變量PHP

<?php 
    $formurl = "listen.html" ; 
    $playerurl = "player.php" ; 

    $mymp3 = $_POST["mp3name"]; 
    $mytitl = $_POST["titlname"]; 

    /* echo "MP3 Name: ".$mymp3."<br>" ; 
    echo "Chapter Name: ".$mytitl; */ 
    header("Location: $playerurl?mp3name=$mymp3& ?titlname=$mytitl"); 
    exit ; 
?> 

但是當我打開player.php,

<table width="519" border="0" align="center"> 
    <tr> 
     <?php 
      $mymp3=$ _GET[ "mp3name"]; 
      $mytitl=$ _GET[ "titlname"]; 
     ?> 
     <td width="513" height="63" class="TopNav" align="center">You are listening to 
      <?php echo $mytitl; ?> 
     </td> 
    </tr> 
    <tr> 
     <td align="center"> 
      <audio autoplay controls preload="auto"> 
       <source src="/MP3s/<?php echo $mymp3; ?>.ogg" type="audio/ogg" /> 
       <source src="/MP3s/<?php echo $mymp3; ?>.mp3" />Your browser does not support the audio tag.</audio> 
     </td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
    </tr> 

只有一個變量(mp3name)獲取顯示。請幫忙。

回答

4
header("Location: $playerurl?mp3name=$mymp3& ?titlname=$mytitl"); 

應該

header("Location: " . $playerurl . "?mp3name=" . $mymp3 . "&titlname=" . $mytitl); 

第一查詢字符串鍵啓動?,其餘的開始&

我已經加入了空間和.(concetenation),使其更易於閱讀(不需要)

Wikipedia link to info about the query string

更新

由於@ernie在評論中指出.. http_build_query爲你做了這個...並編碼參數..你使用它是這樣的:

$params = http_build_query(array('mp3name' => $mymp3, 'titlname' => $mytitl), '', '&'); 
header("Location: " . $playerurl . "?" . $params); 
+0

我的回答可能不會看到由於你被投了,但它可能是最好使用[http_build_query](http://php.net/manual/en/ function.http建造查詢。php),而不是試圖手動構建查詢字符串 – ernie 2012-07-25 18:41:06

+0

@ernie,如果你能解釋爲什麼*它可能更好*然後我會+1你的;-) – ManseUK 2012-07-25 18:42:23

+0

添加了一些關於爲什麼使用該函數的註釋,以及如何使用Firebug或其他開發工具來查看查詢數據將有助於 – ernie 2012-07-25 18:44:19

0
header("Location: $playerurl?mp3name=$mymp3& ?titlname=$mytitl"); 

應該是:

header("Location: $playerurl?mp3name=$mymp3&titlname=$mytitl"); 

titlname變量沒有被正確地中傳遞。

0

您的標題有誤。拿出空間?它應該是

header("Location: $playerurl?mp3name=$mymp3&titlname=$mytitl"); 
3

你的GET字符串需要加以糾正,即:

header("Location: $playerurl?mp3name=$mymp3&titlname=$mytitl"); 

它可能會更好,如果你使用http_build_query避免這樣的錯誤。 http_build_query將處理參數的所有格式(即名稱,鍵值生成和分隔符),只要你有一個有效的數組,你將得到一個有效的查詢字符串,例如:

$getString = http_build_query(array ('mp3name'=>$mymp3, 
             'titlname'=>$mytitl)); 
header("Location: $playerurl?$getString); 

您還可以使用FireBug中的控制檯視圖(或Chrome和IE中的類似工具)幫助您自行調試,因爲它們可以讓您看到正在發送/接收的實際數據。

+0

您可能想要刪除陣列的最後一個逗號......並且您錯過了使用該函數的最大原因......編碼 – ManseUK 2012-07-25 18:45:08

+0

一般來說,我傾向於保留在多行寫數組時,尾隨的逗號,因爲它可以更容易地添加新的鍵/值。爲了清晰起見,我會繼續前進。 – ernie 2012-07-25 18:46:16

+0

另請注意,在'http_build_query'函數的註釋中,最好使用'http_build_query($ array,'','&');'確保分隔符是'&'而不是'&' – ManseUK 2012-07-25 18:52:27

0

嘗試以下操作:

urlencode("$playerurl?mp3name=$mymp3&titlname=$mytitl")