我有一个接受两个变量的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> </td>
</tr>
只显示一个变量(mp3name
)。请帮忙。
答案 0 :(得分:4)
header("Location: $playerurl?mp3name=$mymp3& ?titlname=$mytitl");
应该是
header("Location: " . $playerurl . "?mp3name=" . $mymp3 . "&titlname=" . $mytitl);
第一个查询字符串键以?
开头,其余字符以&
开头。
我添加了空格和.
(让步)以便于阅读(不需要)
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);
答案 1 :(得分: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中的类似工具)自行调试,因为它们可以让您查看发送/接收的实际数据。
答案 2 :(得分:0)
header( "Location: $playerurl?mp3name=$mymp3& ?titlname=$mytitl");
应该是:
header( "Location: $playerurl?mp3name=$mymp3&titlname=$mytitl");
titlname
变量未正确传递。
答案 3 :(得分:0)
您的标题有误。拿出空间?它应该是
header( "Location: $playerurl?mp3name=$mymp3&titlname=$mytitl");
答案 4 :(得分:0)
尝试以下方法:
urlencode("$playerurl?mp3name=$mymp3&titlname=$mytitl")