如何为非管理员用户创建会话

时间:2016-01-27 作者:Ratnesh Choudhary

您好,我正在构建一个插件,该插件具有如下所述的功能

我的问题是,我已经为用户创建了注册表单,在那里,用户将能够成功注册,然后他们将收到一封电子邮件,然后他们将成为最终用户,我还在单独的数据库表中创建此条目。我还为管理员提供了批准用户的工具。但我的主要问题是,当用户在我创建的登录表单中输入详细信息时,如何为使用我的注册表单注册的用户设置会话,他们将被重定向到他们的仪表板。

为此,我要创建会话。但是我在互联网上找到的解决方案我都说要创建一个会话并设置它WP-login. 因此,请以正确的方式指导我这是我的自定义登录表单的代码

<form method="POST" id="loginform" name="loginform">
<p>
<label for="user_login">Email<br>
<input type="text" value="" class="input" aria-describedby="login_error" id="user_email" name="log_mail"></label>
</p>
<p>
<label for="user_pass">Password<br>
<input type="password" value="" class="input" aria-describedby="login_error" id="user_pass" name="log_pwd"></label>
</p>
<p>
<label for="user_pass">User Role<br>
<select name="role_select" id="role_select">
<option value="" selected>Select</option>
<option name="simple_user" value="user">Simple User</option>
<option name="company_user" value="company_user">Company User</option>
</select></label>
</p>
<p class="forgetmenot"><label for="rememberme"><input type="checkbox" value="forever" id="rememberme" name="rememberme"> Remember Me</label></p>
<p class="submit">
<input type="submit" value="Log In" class="button button-primary button-large" id="wp-submit" name="custom_submit">
</p>
</form>
<?php
$c_user_mail = $_POST[\'log_mail\']; 
$c_user_role = $_POST[\'role_select\'];
$c_user_pass = $_POST[\'log_pwd\'];
$c_enc_pass = md5($c_user_pass);
global $wpdb;
$wp_path =$_SERVER["DOCUMENT_ROOT"];
require_once($wp_path.\'/wp-config.php\');
$table_name = $wpdb->prefix . \'final_user_tabel\';
echo $sql = "SELECT * FROM " . $table_name . " WHERE (email = \'$c_user_mail\') AND (userrol = \'$c_user_role\')";
$pageposts = $wpdb->get_results($sql, ARRAY_N);

$pass_check = $pageposts[0][4];

$email_check = $pageposts[0][2];

if($c_enc_pass == $pass_check && $c_user_mail == $email_check){}
?>

1 个回复
SO网友:Oleg Gorilyk

//管理员

$user\\u id=1;require\\u once(ABSPATH。“wp includes/pluggable.php”);

如果(!is\\u admin()){

// DEMO USER

$user_id = 6;
}
if($current\\u user\\u id!=$user\\u id){$user=get\\u user\\u by(\'id\',$user\\u id);if($user){wp\\u set\\u current\\u user($user\\u id,$user->user\\u login);

    // wp_set_auth_cookie($user_id);

    if (wp_validate_auth_cookie(\'\', \'logged_in\') != $user_id)
        {
        wp_set_auth_cookie($user_id);
        }

    // do_action(\'wp_login\', $user->user_login);

    }
}

相关推荐

Large Session Tokens

我们在共享服务器上有一个Wordpress站点,最近由于磁盘空间不足而崩溃,因为我们的MySQL二进制日志在几分钟内就填满了驱动器。在查看了其中的内容后,我们追踪到该站点中的一个用户,该用户在usermeta 元键为的表session_tokens. 我为该用户单击了“随处注销”选项,删除了这些记录,但今天同样的问题开始出现,他的所有令牌都回来了。有什么想法吗?我真的不知道从哪里开始,也不知道他是如何积累了这么多代币的。我写了一个Wordpress计划的任务,应该每小时删除过期的门票,但由于他的帐户什么都