不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
Phpcms2007 SP6丢失下载地址参数Bug解决方法
编辑:dnawo 日期:2008-06-20
在Phpcms2007 SP6下载频道中添加的下载地址如果形如:
引用内容
在点击下载的时候你会发现下载地址却成了:
引用内容
可见,下载地址&之后的参数丢失了,下边我们来找找原因。
打开module/down/download.inc.php,找到"parse_str($auth);",在其后面增加代码:
浏览页面,输出内容如下:
引用内容
可见问题主要就在parse_str上了,它是PHP自带的一个函数,作用是将浏览器返回的 GET 方法的 QUERY_STRING 字符串解析,返回的变量名及值就依 QUERY_STRING 的名称及值,例如:
OK,问题找到了,也就好解决了:
方法一:给$fileurl加上丢失的参数
方法二:用substr对字符串进行截取,提取出地址,弥补方法一不具通用性的不足

电信下载|http://www.mzwu.com/interface/creategames.aspx?uid=11476&resid=160&fileid=1087
在点击下载的时候你会发现下载地址却成了:

http://www.mzwu.com/interface/creategames.aspx?uid=11476
可见,下载地址&之后的参数丢失了,下边我们来找找原因。
打开module/down/download.inc.php,找到"parse_str($auth);",在其后面增加代码:
复制内容到剪贴板
程序代码

echo $auth."<br/>";
echo $fileurl."<br/>";
exit();
echo $fileurl."<br/>";
exit();
浏览页面,输出内容如下:

downid=1&fileurl=http://www.mzwu.com/interface/creategames.aspx?uid=11476&resid=160&fileid=1087&starttime=1213948944&ip=127.0.0.1&mirror=
http://www.mzwu.com/interface/creategames.aspx?uid=11476
http://www.mzwu.com/interface/creategames.aspx?uid=11476
可见问题主要就在parse_str上了,它是PHP自带的一个函数,作用是将浏览器返回的 GET 方法的 QUERY_STRING 字符串解析,返回的变量名及值就依 QUERY_STRING 的名称及值,例如:
复制内容到剪贴板
程序代码

<?php
$str = "first=value&second[]=this+works&second[]=another";
parse_str($str);
echo $first; // 显示出 "value" 字符串
echo $second[0]; // 显示 "this works" 字符串
echo $second[1]; // 显示 "another" 字符串
?>
$str = "first=value&second[]=this+works&second[]=another";
parse_str($str);
echo $first; // 显示出 "value" 字符串
echo $second[0]; // 显示 "this works" 字符串
echo $second[1]; // 显示 "another" 字符串
?>
OK,问题找到了,也就好解决了:
方法一:给$fileurl加上丢失的参数
复制内容到剪贴板
程序代码

parse_str($auth);
//获取真实fileurl
if($resid!="" && $fileid!="")
{
$fileurl = $fileurl."&resid=".$resid."&fileid=".$fileid;
}
//获取真实fileurl
if($resid!="" && $fileid!="")
{
$fileurl = $fileurl."&resid=".$resid."&fileid=".$fileid;
}
方法二:用substr对字符串进行截取,提取出地址,弥补方法一不具通用性的不足
复制内容到剪贴板
程序代码

parse_str($auth);
//获取真实fileurl
$urlstart = strpos($auth,"&fileurl=");
$urlend = strpos($auth,"&starttime=");
$fileurl = substr($auth,$urlstart+9,$urlend-$urlstart-9);
//获取真实fileurl
$urlstart = strpos($auth,"&fileurl=");
$urlend = strpos($auth,"&starttime=");
$fileurl = substr($auth,$urlstart+9,$urlend-$urlstart-9);






评论: 0 | 引用: 0 | 查看次数: 3919
发表评论
请登录后再发表评论!