您的方法不提供安全性。我可以手工制作一个名为“wordpress\\u logged\\u in”(包含任意值)的cookie,并可以访问您的PDF文件。
您可能需要重新考虑将PHP脚本放在文件和用户之间的解决方案。
e、 g。
用户单击下载按钮,PHP脚本处理获取文档的操作。如果用户经过身份验证,PHP脚本将通过PDF文件发送如果未通过身份验证,请发送错误消息请查看此答案,了解有关实施的更多详细信息:https://stackoverflow.com/questions/10834196/secure-files-for-download
如果这是一种你想探索的方法,我将更新我的答案,告诉你如何将这种方法与WordPress连接起来。
编辑:我将为概念验证提供一个“黑客”解决方案。实际上,我可能会使用WP-AJAX操作来实现该方法。
<?php
/*
* Assume WordPress lives in /var/www/mysite/
* This script\'s path is /var/www/mysite/downloader.php
*
* To download a file, link the user to:
* <a href="/downloader.php">Download file</a>
*
* You can mask this downloader using htaccess rewrites
*/
// Load wordpress
require_once(\'/path/to/wordpress/wp-load.php\');
if (!is_user_logged_in()) die(\'no access\');
// specify a file path
$file = \'/path/to/file/outside/www/secret.pdf\';
// or load the file from some other location (e.g. WP Media)
header(\'Content-Description: File Transfer\');
header(\'Content-Type: application/octet-stream\');
header(\'Content-Disposition: attachment; filename=\' . basename($file));
header(\'Content-Transfer-Encoding: binary\');
header(\'Expires: 0\');
header(\'Cache-Control: must-revalidate, post-check=0, pre-check=0\');
header(\'Pragma: public\');
header(\'Content-Length: \' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
// Don\'t use closing PHP brackets.