受密码保护的纵断面图

时间:2012-02-18 作者:rhand

我已经在后端扩展了用户配置文件页面,以便每个用户配置文件都有几个额外的自定义字段,用于存储数据,如最喜爱的电影、生日等。创建一个约会网站,这就是为什么需要更多的领域。拥有适当代码的人可以使用输入代码在前端查看这些配置文件,输入代码基本上是一些随机代码,最后加上用户ID作为数字。使用PHP子字符串获取用户ID并授予访问权限,请参见代码:

if(empty($_REQUEST[\'enterCodeId\'])){
            echo "<script>
                location.replace(\'".$_SERVER[\'HTTP_REFERER\']."\'); 
                </script>";
    }else{
            $getId=substr($_REQUEST[\'enterCodeId\'], 4, 10);
            $querystr ="SELECT ID FROM wp_prefixcode_users WHERE ID=\'".$getId."\'";
            $querystrChecking = mysql_query($querystr);
            if(mysql_num_rows($querystrChecking)<=0){
                echo "<script>
                location.replace(\'".$_SERVER[\'HTTP_REFERER\']."\'); 
                </script>";
            }
            $uploads = wp_upload_dir(); 
        //
    }
此设置不理想,因为a:无法从配置文件页面添加代码,可以通过额外的get_the_author_meta(), 但是我需要一种更好的方法来生成密码,但也因为b:密码总是以相同的用户ID号结尾。

如何为用户提供从仪表板>用户>用户配置文件自动生成访问密码的选项,以便用户可以重新生成新的访问密钥?这是必需的,以便可以撤销授予其他用户的访问权限。我需要一个PHP函数来生成一个新键,并将其存储为数据库中的author\\u元字段。

Solution

多亏了Toscho和另一个开发人员,我得到了这段代码来加载它。在函数中。我添加的php:

add_action( \'init\', \'accesskeygen_func\' );

function accesskeygen_func() {
    $phpfile = explode(\'/\', $_SERVER[\'PHP_SELF\']);
    $phpfile = $phpfile[count($phpfile)-1];

    if (($phpfile==\'profile.php\') && isset($_GET[\'accesskeygen\'])) {
        echo wp_generate_password();
        exit;
    }}
以及

<!-- begin access key -->
<tr>
<th><label for="myaccesskey"><?php _e("Access Key"); ?></label></th>
<td>
<input type="text" name="myaccesskey" id="myaccesskey" value="<?php echo esc_attr( get_the_author_meta( \'myaccesskey\', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">
    <input type="button" class="button-secondary" id="myaccesskeygen" value="Generate Access Key"/>&nbsp;
    <?php _e("Please click the button generate access key."); ?>
</span>
</td>
</tr>
<!-- end access key -->

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

使用wp_generate_password() 生成密码。例如,您可以在用户配置文件中添加一个按钮,以根据AJAX获取新密码。

并且当前代码中存在安全漏洞:$getId, 访问者请求的子字符串可能包含恶意代码。始终转义请求数据。阅读Data Validation 了解更多信息,尤其是$wpdb->prepare() 应该是有用的。

结束

相关推荐

如何在管理中用图标替换“Password Protected”文本

在Wordpress中,每当帖子受到密码保护时,后端管理区域都会在帖子标题后添加粗体“-密码保护”文本。我正在寻找的是一种删除此文本的方法,而是让它使用一个图标(下面的链接),该图标应附加在标题文本之前。如何做到这一点?我想使用Aesthetica Icon Set 通过http://dryicons.com: