WordPress实现前台登录功能

一、添加登录表单

1、首先在当前主题的目录下新建一个php文件,命名为page-login.php,然后将page.php中的所有代码复制到page-login.php中;

2、删除page-login.php开头的所有注释,即 /* 与 */ ,以及它们之间的所有内容;

3、搜索:the_content,可以查找到类似代码< ?php the_content(); ?>,将其替换成代码一(注意使用UTF-8编码保存)

如果你在page-login.php中找不到the_content,那么你可以查找:get_template_part,可找到类似代码:< ?php get_template_part( 'content', 'page' ); ?>,将content-page.php中的所有代码替换这部分代码即可。再用下面的代码替换其中的< ?php the_content(); ?>

< ?php the_content(); ?>
< ?php if(!empty($error)) {
echo '<p class="mk-error">'.$error.'';
}
if (!is_user_logged_in()) { ?>
<form name="loginform" method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>" class="mk-login">
    <p>
      <label for="log">用户名<br />
        <input type="text" name="log" id="log" class="input" value="<?php if(!empty($user_name)) echo $user_name; ?/>" size="20" />
      </label>
    </p>
    <p>
      <label for="pwd">密码(至少6位)<br />
        <input id="pwd" class="input" type="password" size="25" value="" name="pwd" />
      </label>
    </p>
 
    <p class="forgetmenot">
      <label for="rememberme">
        <input name="rememberme" type="checkbox" id="rememberme" value="1" <?php checked( $rememberme ); ?/> />
        记住我
      </label>
    </p>
 
    <p class="submit">
      <input type="hidden" name="redirect_to" value="<?php if(isset($_GET['r'])) echo $_GET['r']; ?/>" />
      <input type="hidden" name="mk_token" value="<?php echo $token; ?/>" />
      <button class="button button-primary button-large" type="submit">登录</button>
    </p>
</form>
< ?php } else {
echo '<p class="mk-error">您已登录!(<a href="'.wp_logout_url().'" title="登出">登出?</a>)';
} ?>

二、添加表单处理代码

在page-login.php开头处中,将第一个 < ?php 替换成代码二(注意使用UTF-8编码保存),代码二:

< ?php
/**
 * Template Name: 前台登录
 * 作者:MK
 * 博客:http://www.111cn.net/
 * 
 *  2015年4月6日 :
 *  首个版本
 * 
 *  2015年4月6日 :
 *  防止刷新页面重复提交数据
 */
 
if(!isset($_SESSION))
  session_start();
 
if( isset($_POST['mk_token']) && ($_POST['mk_token'] == $_SESSION['mk_token'])) {
  $error = '';
  $secure_cookie = false;
  $user_name = sanitize_user( $_POST['log'] );
  $user_password = $_POST['pwd'];
  if ( empty($user_name) || ! validate_username( $user_name ) ) {
    $error .= '<strong>错误:请输入有效的用户名。<br />';
    $user_name = '';
  }
 
  if( empty($user_password) ) {
    $error .= '<strong>错误</strong>:请输入密码。<br />';
  }
 
  if($error == '') {
    // If the user wants ssl but the session is not ssl, force a secure cookie.
    if ( !empty($user_name) && !force_ssl_admin() ) {
      if ( $user = get_user_by('login', $user_name) ) {
        if ( get_user_option('use_ssl', $user->ID) ) {
          $secure_cookie = true;
          force_ssl_admin(true);
        }
      }
    }
 
    if ( isset( $_GET['r'] ) ) {
      $redirect_to = $_GET['r'];
      // Redirect to https if user wants ssl
      if ( $secure_cookie && false !== strpos($redirect_to, 'wp-admin') )
        $redirect_to = preg_replace('|^http://|', 'https://', $redirect_to);
    }
    else {
      $redirect_to = admin_url();
    }
 
    if ( !$secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) )
      $secure_cookie = false;
 
    $creds = array();
    $creds['user_login'] = $user_name;
    $creds['user_password'] = $user_password;
    $creds['remember'] = !empty( $_POST['rememberme'] );
    $user = wp_signon( $creds, $secure_cookie );
    if ( is_wp_error($user) ) {
      $error .= $user->get_error_message();
    }
    else {
      unset($_SESSION['mk_token']);
      wp_safe_redirect($redirect_to);
    }
  }
 
  unset($_SESSION['mk_token']);
}
 
$rememberme = !empty( $_POST['rememberme'] );
 
$token = md5(uniqid(rand(), true));
$_SESSION['mk_token'] = $token;
 
 
 
最后进入WordPress管理后台 – 页面 – 创建页面,标题为登录(可以自己起名),内容填上登录说明等,右侧可以选择模板,选择 前台登录 即可。该页面即前台登录页面。
 
代码补充说明
 
1、如果想让用户登录后跳转到指定页面,可以在登录链接后面添加名为 r 的get参数,值为跳转的链接地址,如登录页面地址为http://www.mk.org/login,如果你想让用户登录后跳转到后台的文章列表页,可以把登录地址改成下面的地址再提供给用户即可:http://www.mk.org/login?r=http://www.mk.org/wp-admin/edit.php
 
2、如果想美化一下登录表单,可以在主题的style.css中添加以下代码:
 
<pre lang="php" line="1">
p.mk-error {
  margin: 16px 0;
  padding: 12px;
  background-color: #ffebe8;
  border: 1px solid #c00;
  font-size: 12px;
  line-height: 1.4em;
}
.mk-login label {
  color: #777;
  font-size: 14px;
  cursor: pointer;
}
.mk-login .input {
  margin: 0;
  color: #555;
  font-size: 24px;
  padding: 3px;
  border: 1px solid #e5e5e5;
  background: #fbfbfb;
}

时间: 2024-10-01 20:29:01

WordPress实现前台登录功能的相关文章

WordPress集成豆瓣登录功能例子

对于微博登录和QQ登录来说,豆瓣可能相对冷门,但是对于文艺网站来说还是很有用的.不得不说豆瓣的授权非常逗比,获取token之后居然连使用的地方都没有. 注册应用 注册应用没什么可说的,注意这里的回调地址,要把参数也给写上,要不然会授权失败. 实现方法 repo中是多个oauth方法结合在一起的. Github地址 https://github.com/bigfa/wp-oauth 文件下载方法 豆瓣登录只需要使用douban.php中的代码和functions.php中的代码加入到你的funct

jsp-写了一个用JSP 来实现登录功能,如何实现界面登录.我的登录界面在外面 需要写到eclipse里面吗

问题描述 写了一个用JSP 来实现登录功能,如何实现界面登录.我的登录界面在外面 需要写到eclipse里面吗 写了一个用JSP 来实现登录功能,如何实现界面登录.我的登录界面在外面 需要写到eclipse里面吗``` 需要把HTML 文件弄到eclipse里面吗 解决方案 一个完整的Java web项目,包含前端和后端,前端就用户看到的部分,即你说的登录页面(html),后端是指数据的处理及响应部分(.java文件).你写的登录页面html只是一个静态页面,是不能跟服务器进行交互的.想要跟后端

求一个ssh+json+jquery+ajax 登录功能实现的例子

问题描述 求一个ssh+json+jquery+ajax 登录功能实现的例子 ssh+json+jquery+ajax 登录时action业务处理逻辑是如何实现的 以及前台的js如何处理后台的数据 解决方案 http://bbs.csdn.net/topics/390839699http://download.csdn.net/detail/iamcychan/3635220 解决方案二: http://blog.csdn.net/evankaka/article/details/4702397

ajax-ssh 零配置 采用juery+Ajax如何传递参数到action实现登录功能验证?

问题描述 ssh 零配置 采用juery+Ajax如何传递参数到action实现登录功能验证? ajax应该如何判断逻辑,以及执行action时return应如何处理? 解决方案 首先你登陆的用户名.密码获取之后传到Action,在Action把获取的参数用户名到数据库查询,如果没有提示,有的话返回结果,取出密码比较和前台获取的可以一样.相同就可以登录.否则提示. 解决方案二: ajax success的时候获取返回值 通过后台返回值判断是否登录成功 例如ajax传账号密码到后台.后台执行sql

基于AngularJS+HTML+Groovy实现登录功能_AngularJS

AngularJS是开发基于浏览器的响应式RWD应用程序的一个前端MVC框架,由谷歌最初开发的 开源项目,干净的架构吸引了大量粉丝,适合建立CRUD类型的业务应用程序,并不适合开发游戏等应用, 使用声明性编程的用户界面和命令式编程的逻辑, 支持现代桌面和移动浏览器 Internet Explorer版本8.0及以上. AngularJS是一款客户端MVC的javascript框架,而客户端MVC代表未来架构(为什么要使用MVC+REST+CQRS 架构),如果你有Struts或SpringMVC

快速给WordPress编辑器增强可视化功能

有个客户反应wordpress的编辑器没有字体以及字号的设置,WordPress默认的编辑器并没有字体以及字号等的设置,那么怎么让编辑器可以直接设置字体以及字号等呢?那么很简单,既然没有这个能,再加上不就好了么? 修改当前所用主题下的functions.php,在最后一行?>之前,加入下面的代码:  代码如下 复制代码 //增强编辑器开始 function add_editor_buttons($buttons) { $buttons[] = 'fontselect'; $buttons[] =

Python的Flask框架中实现简单的登录功能的教程

  Python的Flask框架中实现简单的登录功能的教程,登录是各个web框架中的基础功能,需要的朋友可以参考下 回顾 在前面的系列章节中,我们创建了一个数据库并且学着用用户和邮件来填充,但是到现在我们还没能够植入到我们的程序中. 两章之前,我们已经看到怎么去创建网络表单并且留下了一个实现完全的登陆表单. 在这篇文章中,我们将基于我门所学的网络表单和数据库来构建并实现我们自己的用户登录系统.教程的最后我们小程序会实现新用户注册,登陆和退出的功能. 为了能跟上这章节,你需要前一章节最后部分,我们

源码-用javaSSH框架做一个简单的登录功能

问题描述 用javaSSH框架做一个简单的登录功能 用SSH框架做一个简单的登录功能,登录成功则跳转到一个页面,登录失败则跳转到一个失败页面,MySQL数据库.求大神指点,最好能提供源码 解决方案 Spring 3.x 企业应用开发实战的第一个例子就符合你的要求了.Mysql+srping3 解决方案二: 告诉我你的扣扣邮箱,我发你邮箱 解决方案三: 主要还是在struts2 里面,处理业务逻辑,再跳转到指定页面,关键在struts,xml配置文件里面

java struts2-怎样利用Java 中的struts2框架实现数据库中用户登录功能?

问题描述 怎样利用Java 中的struts2框架实现数据库中用户登录功能? 在Action中LoginAction怎样写? 配置文件中怎样写? 总体实现能够使数据库中已经存在的用户凭自己的密码与用户名登录成功呢?数据库是Oracle数据库.