首页 > WP教程 > 正文

很早以前写过一篇WordPress前台登录页面功能实现(非插件),是关于自定义注册页面的教程,最近看到有朋友问到“有了注册功能 还有登陆功能有吗”,答案是肯定的,下面Csyor就把本站的登陆页面功能的实现代码放出来,希望能够给与各位一点点帮助。

预览效果:https://www.csyor.com/login (登陆以后不会出现登陆页面)

友情提示:以下代码是本站使用,只提供对应登陆功能页面的实现,可能会不符合各位站点的主题风格,请自行修改该,谢谢。

<?php
/*Template Name: Login*/

ini_set('display_errors', false);

if (is_user_logged_in()){
//重定向浏览器
wp_safe_redirect( get_option('home') );
//确保重定向后,后续代码不会被执行
exit;
}

$redirect_to = sanitize_user( $_REQUEST['redirect_to'] );
if( !empty($_POST['csyor_login']) ) {
$error = '';
$sanitized_user_login = sanitize_user( $_POST['user_login'] );
$rememberme = $_POST['rememberme']?true:false;
$user_pass = $_POST['user_pass'] ;
$comment_aaa      	  = ( isset($_POST['aaa']) ) ? trim($_POST['aaa']) : '0';
$comment_bbb          = ( isset($_POST['bbb']) ) ? trim($_POST['bbb']) : '0';
$comment_subab        = ( isset($_POST['subab']) ) ? trim($_POST['subab']) : '0';

global $wp_hasher;  
if ( $sanitized_user_login == '' ) {
$error .= '<p><strong>错误</strong>:请输入您的登陆账号。</p>';
}elseif ( !username_exists( $sanitized_user_login ) ) {
$error .= '<p><strong>错误</strong>:该用户名不存在,赶紧注册一个吧。</p>';
}elseif($user_pass == ''){
$error .= '<p><strong>错误</strong>:请输入您的登录密码。</p>';
}elseif(((int)$comment_subab)!=(((int)$comment_aaa)+((int)$comment_bbb))){
$error .= '<p><strong>错误</strong>:请输入正确的验证数字。</p>';	
}elseif ( empty($wp_hasher) ) {  
require_once( './wp-includes/class-phpass.php');  
$wp_hasher = new PasswordHash(8, TRUE);  
$pass = get_user_pass($sanitized_user_login);
$data = $wp_hasher->CheckPassword($user_pass,$pass);  
	if($data){
		$user = get_userdatabylogin($sanitized_user_login);
		$user_id = $user->ID;
		// 自动登录
		wp_set_current_user($user_id, $user_login);
		wp_set_auth_cookie($user_id,$rememberme);
		do_action('wp_login', $user_login);
		
		wp_safe_redirect( $redirect_to );  
	}else{
		$error .= '<p><strong>错误</strong>:登陆账号和密码不匹配。</p>';	
	}  
} 

}

?>
<?php get_header(); ?>
<div id="roll">
	<div title="回到顶部" id="roll_top"></div><div title="查看评论" id="ct"></div><div title="转到底部" id="fall"></div>
</div>
<div id="content">
<div class="main">
<div id="mapsite">当前位置: <a title="返回首页" href="<?php echo get_settings('Home'); ?>/">首页</a> &gt; <?php the_title(); ?></div>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="left left_page">
<h2><?php the_title(); ?></h2>
<div class="article article_page">
<div class="context">
<?php the_content('Read more...'); ?>


<?php if(!empty($error)) {
echo '<p class="ludou-error">'.$error.'</p>';
}
if (!is_user_logged_in()) { ?>
<form id="loginform" action="<?php echo home_url(add_query_arg(array(), $wp -> request)); ?>" method="post">
<p>
<label>用户名:
<input class="input" type="text" name="user_login" id="log" size="30" tabindex="1" value="<?php if(!empty($sanitized_user_login)) echo $sanitized_user_login; ?>"/>
</label> * 请输入您的用户名。
</p>
<p>
<label>密 码:
<input class="input" type="password" name="user_pass" id="pwd" value="" size="30" tabindex="2"/>
</label> * 请输入您的登录密码。
</p>
<p>
<label for="subab"><?php $aaa=rand(0,9); $bbb=rand(1,9); ?>验 证:
<input type="text" class="input" name="subab" id="subab" size="30" tabindex="3" />
</label> * (<span style="color:#FF0000;"><?php echo $aaa; ?>+<?php echo $bbb; ?>=?</span>) 请输入计算结果。
</p>
<input name="aaa" value="<?php echo $aaa; ?>" type="hidden" />
<input name="bbb" value="<?php echo $bbb; ?>" type="hidden" />
<p>
<label>记住我:&nbsp;&nbsp;<input id="comment_mail_notify" type="checkbox" name="rememberme" value="forever" tabindex="4"/></label>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input class="denglu" type="submit" name="submit" value="登陆" tabindex="5"/> 
<input class="denglu" type="button" name="button" onclick="location.href='/register'" value="注册" tabindex="6"/> 
&nbsp;&nbsp;&nbsp;&nbsp;<a href="<?php echo get_option('home') ?>/repass">忘记密码?</a>
</p>
<p>
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
<input type="hidden" name="csyor_login" value="ok" />
</p>
</form>
<?php } else {
	echo '<p class="ludou-error">您已登陆成功!</p>';
	}
 ?>
</div>
</div>
</div>

<?php endwhile; else: ?>
<?php endif; ?>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

上述代码中使用到了一个自定义get_user_pass函数,作用是根据用户名获得用户密码,请自行添加到functions.php文件的<?php和?>之间任意位置。get_user_pass函数如下:

//根据用户名获得用户密码
function get_user_pass($user=''){
 $user="'".$user."'";
 global $wpdb;
 $user_pass = $wpdb->get_col("SELECT user_pass FROM $wpdb->users WHERE user_login = $user ORDER BY ID");
 foreach($user_pass as $pass){
 return $pass;
 }
}

以上内容来自于网络,如有侵权联系即删除。

猜你喜欢
发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论信息

絮凡回复2022-03-18 15:01

学习了

丫丫资源网回复2015-03-15 21:54

怎样在sidebar.php文件中相应的位置添加登录的form表单呢?要安装插件吗?我是一个小白,不懂,特向您请教。

孜寒回复2014-09-16 19:05

找回密码页的代码可以共享么

重庆SEO回复2014-07-31 13:58

如果在侧边栏显示登录界面 又该如何写代码

    Csyor2014-07-31 14:21

    是在主题中的sidebar.php文件中相应的位置添加登录的form表单,以下给出本站的侧边栏登录代码

    <form id="loginform" action="<?php echo get_settings('siteurl'); ?>/login" method="post"><h3>用户登录</h3>
    <p>
    <label>用户名:<input class="login" type="text" name="user_login" id="log" value="" size="12" /></label>
    </p>
    <p>
    <label>密 码:<input class="login" type="password" name="user_pass" id="pwd" value="" size="12" /></label>
    </p>
    <p>
    <label style="float:left;line-height: 40px;">记住我:<input id="comment_mail_notify" type="checkbox" name="rememberme" value="forever" /></label>
    <span style="float:right;padding-right:3px;">
    <input class="denglu" type="submit" value="登陆" /> 
    <?php $registerurl = get_option('home')."/register?redirect_to=".$_SERVER['REQUEST_URI']; ?>
    <input class="denglu" type="button" name="button" onclick="location.href='<?php echo $registerurl;  ?>'" value="注册" /> 
    </span>
    </p>
    <p>
    <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>"/>
    <input type="hidden" name="csyor_login" value="ok" />
    </p>
    </form>