在WordPress中,我希望能够销售多组表情符号(png图像)。这些表情集存储在插件下的文件夹中(例如:wp-content/plugins/my-plugin/emoticons/set-1/happy.png)
有些表情集是免费的,有些则不是。我希望能够阻止用户访问表情符号,如果他们没有购买该集。此外,因为这些表情符号是在写文本时使用的,所以我需要尽快完成检查。
到目前为止我所做的尝试:
通过代理php文件加载表情符号,我在该文件中检查用户购买情况。这行得通,但速度太慢了
使用.htaccess
在表情符号/文件夹中。我用它做了如下检查:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} .*?emoticonset-(.*)=(.*);?
RewriteCond %{SCRIPT_FILENAME}::%1 emoticons/(.*?)/(.*\\.png)::\\1$
RewriteRule .* - [L]
RewriteRule ^ / [F]
从某种意义上讲,它可以检查用户是否有cookie
emoticonset-set-1
如果是,则服务于png图像,否则返回403禁止。
我也尝试了Wordpress重写规则,但这些规则似乎只适用于重定向到index.php
路径选项2的速度非常快,但很容易被用户在浏览器中手动添加cookie所愚弄。
我还有其他选择吗?有没有办法确保选项2的安全?
最合适的回答,由SO网友:coding-dude.com 整理而成
我找到了一个可以接受的解决问题的办法。解决方案有几个步骤:
我用过.htaccess
拒绝所有人直接访问表情文件
我在插件文件夹中创建了一个简单的PHP文件。PHP文件充当图像的代理(我通过GET参数将路径传递给表情符号)。由于PHP文件不包括整个WordPress基础设施,因此代理运行速度非常快。我还对饼干做了一个非常基本的检查(emoticon_set_name=md5(emoticon_set_name)
)
在WordPress插件中,我使用init
根据用户购买的表情集设置cookie值的操作。
可以用MD5加密代替任何类型的加密,并且加密的cookie值可以与其他cookie值相结合,使用户更难在浏览器中直接键入cookie。