如何在没有密码的情况下记录wordpress用户
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在没有密码的情况下记录wordpress用户相关的知识,希望对你有一定的参考价值。
我想在没有密码的情况下登录wordpress用户。这就是我要的。假设用户访问http://example-site.com/6789098765678.php
并在页面上输入他的用户名,他将自动登录而无需密码。
我尝试了一些像wp_set_auth_cookie
这样的东西,但我不知道放在哪里。我来自Ruby on Rails背景,对PHP的知识非常少。
我知道这种行为并不安全。这是一个特定的用例。
我在评论中发布的答案,您可以通过以下方式使用它。
你需要做的是做到这一点。为wordpress函数创建ajax hooks
,我们将仅使用用户名登录用户,并使用jQuery ajax调用该函数。
这里要做的第一步是:wp-content/themes/your_theme_name/
并打开名为functions.php
的文件,然后在文件末尾添加以下代码。
function username_login(){
// Automatic login //
$username = $_POST['username'];
$user = get_user_by('login', $username );
// Redirect URL //
if ( !is_wp_error( $user ) )
{
wp_clear_auth_cookie();
wp_set_current_user ( $user->ID );
wp_set_auth_cookie ( $user->ID );
$redirect_to = user_admin_url();
echo json_encode(array('error_code'=>0));
exit();
} else {
echo json_encode(array('error_code'=>1));
exit();
}
exit();
}
add_action('wp_ajax_username_login','username_login');
add_action('wp_ajax_nopriv_username_login','username_login');
如您所见,我们使用add_action
函数从ajax控制器挂钩到我们的username_login
函数,了解更多关于wordpress hooks here的信息
我们需要的下一步是对我们创建的函数进行ajax调用并进行用户登录,然后在用户登录时刷新站点。您需要使用以下代码将请求发送到Wordpress进行登录用户。将以下代码添加到footer.php文件中,该文件位于wp-content/themes/your_theme_name/
内并打开footer.php
:
jQuery('#username_login').on('submit',function(e){
e.preventDefault();
var data = $(this).serializeArray();
data.push({ name:'action',value:'username_login' });
$.ajax({
url:"<?php echo admin_url('admin-ajax.php'); ?>";,
type: 'POST',
dataType: 'json',
data:data,
success:function(response){
if(response.error_code == 1){
alert('user cannot login')
} else {
alert('user logged in');
location.reload();
}
}
});
});
正如您在上面的javascript代码中看到的,我们有一个名为username_login
的表单选择器,我们现在需要做的是创建一个id为username_login
的表单元素,在其中我们需要创建一个名为username
的输入,按钮类型为submit
:
<form id="username_login">
<input type="text" name="username" placeholder="Your username..." required/>
<button type="submit" name="submit">Login</button>
</form>
现在你拥有了所有这些,这将如何与这个流程一起工作? 。好吧,当用户输入用户名并点击登录时,ajax请求将被发送到url:yoursite.com/wp-admin/admin-ajax.php?action=username_login
,其参数名为action
,当用户登录该站点时,将刷新用户登录后再刷新用户可以毫无问题地访问普通用户的功能。
以上是关于如何在没有密码的情况下记录wordpress用户的主要内容,如果未能解决你的问题,请参考以下文章
在 Drupal 中,如何在没有管理员批准和用户设置密码的情况下激活电子邮件帐户?