PHP表单GET参数传递的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 23:27:06
我是实现音乐播放的功能. 从页面表单选取要播放的音乐, 然后提交..
GET出来的数据是play.php?id%5B%5D=3605&id%5B%5D=3599 这样的..
play.php?id%5B%5D=3605&id%5B%5D=3599这个页面加载了音乐地址..
url.php?id%5B%5D=3605&id%5B%5D=3599 可是却不能播放... 但是直接访问url.php?id%5B%5D=3605&id%5B%5D=3599是有播放地址出来的.. 并且是正确的.. 这是什么问题?
我郁闷.. 和防盗链没有一点关系.. 就是我自己的服务器.. 你可能没明白话题吧?

我明白你的意思。但我建议不要用 GET 传递这样的变量。。很容易出问题。。在没有看到代码之前,我也很难下定论你哪里出了问题。。

建议你用一个 SESSION 变量来传递数组变量比较好一点。。只不过这需要多跳转一下页面。。

思路如下:

某一页,POST 提交到 play.php 页
如果 play.php 页收到 POST 请求。
使用 SESSION 记录下所有 ID。
play.php 自己跳转往自己,防刷新。
中断程序。免得下面的播放器显示了。。
$_SESSION['ids']=$_POST['id'];

如果 play.php 没有收到 POST 请求。显示播放器开始播放。。

url.php 页。读取 SESSION 记录下来的 ID。生成地址列表。。
$id = $_SESSION['ids'][0];

================================

用这种思路,也不用担心网页被刷新的。。
而且 POST 方式提交上来的更安全,数据量更多。。
如果不小心关闭了播放页。。重新点开。之前选的歌还在呢。。呵呵。。

应该被别人防盗链了吧
就像图片一样,直接打开是可以显示的,但在你的网站里就显示不出来

id[]=3605&id[]=3599

id是一个数组,是不是再次提交的时候%5B%5D又被转义了一次?代码最好贴多点