我正在尝试调试 wordpress 插件的问题。
它创建一些像这样的html:
<audio src="http://mydomain.com/wordpress/wp-content/plugins/the-stiz-audio-for-woocommerce/server/preview.mp3?nonce=e38553d840&audio=4mgvi4h3Jg5qD_Vj5Qj5Kp9V3WxcfxSqhZ71zoEfqGPM3xQL-KqT7fsCoywEk3_VmJSZpMnCa5FNYB_H_50Uwuvy6G8iDgNbMP2ezlV3moj8T0mUkoj7R5tcegYlyRAu3cNTZvTkza4A0P7_g2AhhvQ60FwFAvGZ9jjy9iPJIdU"
class="wcjd-audio-individual" type="audio/mpeg">
</audio>
preview.mp3 实际上是一个 php 脚本。
'nonce' 参数使它可以进入脚本,但 'audio' 是空的,尽管它已设置。一定是因为某种原因被剥夺了,但我不知道为什么。
编辑:
感谢您到目前为止的回复...
我最初没有包含 php 代码,因为它非常简单,但我应该有:
/**
* @file Instantiate a WCJDServerAudio instance and allow it handle the request.
*/
define('WCJD_ROOT', realpath(dirname(__FILE__).'/../'));
include_once WCJD_ROOT.'/../../../wp-config.php';
include_once WCJD_ROOT.'/include.php';
$fp = fopen("../../log.txt", "w");
fwrite($fp, "nonce: ".$_GET['nonce']."\n");
fwrite($fp, "audio: ".$_GET['audio']);
fclose($fp);
// The code above results in a file with
// nonce: a90c436753
// audio:
$server = new WCJDServeAudio($_GET);
// Determine whether this is a valid request
if ($server->validRequest()) {
$server->output();
die();
} else {
header('HTTP/1.1 403 Forbidden');
include WCJD_ROOT.'/views/error/403.php';
}
如果我只是在浏览器中运行此脚本,它能够看到“音频”参数,但是当它作为脚本从“音频”标签内部运行时,音频参数被剥离。
我在将 $_GET 的内容写入日志文件的 '$server =' 部分之前添加了一些代码,因此我可以在后一种情况下看到 - 并且只设置了 'nonce'。
.htaccess 确实设置为确保 .mp3 扩展名在该目录中被视为 .php 。
它的行为方式让我认为存在某种大小限制或魔术引号问题导致它丢弃音频参数。但我不知道。