很早以前写过一篇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> > <?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>记住我: <input id="comment_mail_notify" type="checkbox" name="rememberme" value="forever" tabindex="4"/></label> <input class="denglu" type="submit" name="submit" value="登陆" tabindex="5"/> <input class="denglu" type="button" name="button" onclick="location.href='/register'" value="注册" tabindex="6"/> <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>