我有一个包含调查的WP页面。这项调查每天都会有不同的人访问(为了简单起见,可以说全年每天都有)。我想用密码保护它,密码每天午夜都会被更改。然而,在某种程度上,密码的格式应该是可预测的,以便管理人员共享调查链接(他们可以轻松地计算出今天的密码)-但最终用户无法预测:)
例如,10月2日的密码可能如下所示
var day = currentDay
var month = currentMonth
var pass = "D!" + month + "K#" + day //formula passed to the managers
导致当天的密码:D!10k#2
这个解决方案不一定非得很好,它只是为了防止调查被“出乎意料”的人过度使用。我读过this 但它似乎没有那么重要。
非常感谢您的阅读和任何帮助:)祝您周五愉快!
拉法ł
//edittit似乎我必须创建一个真正的CRON作业来触发wp\\u CRON和the post 我之前提到过,必须根据上述公式修改才能生成密码。我对php知之甚少,所以如果有任何帮助,我将不胜感激。尽管如此,无需解释实施情况:)
//编辑2实际上我觉得这篇文章非常有用,只是需要一些调整,但我远没有自称为php delveloper,所以想寻求帮助。
我删除了所有的调度代码,只剩下一点点php代码。如果由真正的CRON作业触发,下面的代码片段是否足以工作?下面标注的公式是什么:公式?
<?php
add_action( \'wpse_change_pass_event\', function()
{
$slug = \'hello-world\'; // Edit this post slug to your needs!
$formula = WHAT HERE? :)
global $wpdb;
$wpdb->update(
$wpdb->posts,
array( \'post_password\' => $formula ),
array( \'post_name\' => $slug ),
array( \'%s\' ),
array( \'%s\' )
);
});
SO网友:Izhar Aazmi
它不需要很复杂。您只需创建如下模式2018-09-07-ABC
(后缀为ABC
) 对于日期2018-09-07
.
设置密码创建/验证逻辑,如password = md5(\'2018-09-07-ABC\')
.
管理员如果知道模式,他们可以随时转到任何联机md5
实用程序,如http://www.md5.cz 并输入当前日期的模式。
例如,今天是2018年12月25日。然后他们会进入2018-12-25-ABC
散列将是b21746c6db1c5323f28dd874fe60165f
TIP: 您不需要使用整个32个字符的密码。使用前8个字符(或任何所需的长度)会更容易。
示例PHP代码生成长度为8的密码:
$md5hash = md5(date(\'Ymd\') . \'-ABC\');
$password = substr($md5hash, 0, 8);
Note: 生成密码时,请注意服务器上使用的时区。