以上两个功能在wordpress中不起作用。我想下载文件,我在xampp中运行wordpress我也尝试过在另一个在线服务器上使用wordpress框架仍无法正常工作。
但这是在另一个我没有使用wordpress框架的在线服务器上工作。
使用上述两个功能是否存在wordpress问题?
(下面的代码只需要获取请求,这是从服务器下载文件的路径,并在验证令牌后从数据库中提供路径)
<?php
ini_set('display_errors', -1 );
require('wp-blog-header.php');
require('wp-config.php');
$token = ($_GET["token"]);
$platform = ($_GET["platform"]);
$resolution = ($_GET["resolution"]);
$assetName =($_GET["assetName"]);
$currentTime = date("ymdHi" , time());
if($wpdb->query("SELECT * FROM wp_token_table WHERE token='$token'")){
$result = $wpdb->get_results("SELECT (path) FROM wp_path_table WHERE os='$platform' AND res = '$resolution' AND bundle_name= '$assetName'");
if($result){
$path = $result[0]->path;
$fileName = basename($assetName);
$filePath = $path;
if(!empty($fileName) && file_exists($filePath)){
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/zip");
header("Content-Length:".filesize($filePath));
header("Content-Disposition: attachment; filename=$fileName");
header("Content-Transfer-Encoding: binary");
readfile($filePath);
exit;
}
}
}else echo "false";
?>
答案 0 :(得分:1)
首先让我们验证我的假设是否正确。在wordpress index.php文件中,在顶部添加此内容(显然在<?php
标记之后)
ini_set('display_errors', -1 );
让我知道您尝试下载文件时的内容。
SQL注入会让我 用你的网址
执行此操作 $token="'; SELECT * FROM wp_token_table WHERE 1 LIMIT 1; --";
然后你的查询就是这个
"SELECT * FROM wp_token_table WHERE token=''; SELECT * FROM wp_token_table WHERE 1 LIMIT 1; --'"
--
是评论开始,放弃结尾'
然后我基本上会从该表中选择第一个条目。或者更糟。
防止这种情况非常重要。
对于错误,我会这样做
<?php
echo "hello";
/* -- rest of code */
确保页面首先运行。一旦你知道你可以排除url的问题,那么取消注释代码的一些部分就会告诉它。这将显示错误的位置。不幸的是,错误报告通常不会在页面上出现语法错误,因为php甚至无法解析页面,所以它无法运行任何内容。