Wordpress和Sessions,只接受Wordpress

时间:2012-11-15 15:21:37

标签: php wordpress

我有Wordpress网站,我在其中设置自己的表来存储用户登录凭据。人们可以注册正常,但是当需要登录并创建会话时,它似乎不起作用。

这是我的标题:

<?php
// Initialize session
session_start();
// Initialize DB
include("functions/connect.php");
<span class="login">
      <?php  
        if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username']))  
        { 
      ?>
        <p>Welcome, <?php echo $_SESSION['Username']?></p>
      <?php 
        }
        else
        {
      ?>
        <p>Login</p><p>|</p><p>Signup</p>
      <?php } ?>
</span>

这是在我的登录页面上。

<?php 
    if(isset($_POST['name']) && !empty($_POST['name']) AND isset($_POST['password']) && !empty($_POST['password']) AND isset($_POST['name']) && !empty($_POST['name'])){
                $username = mysql_escape_string($_POST['name']);
                $password = mysql_escape_string(md5($_POST['password']));

                $search = mysql_query("SELECT username, password, active FROM wp_thread_users WHERE username='".$username."' AND password='".$password."' AND active='1'") or die(mysql_error()); 
                $match  = mysql_num_rows($search);

                if($match > 0){
                    $msg = 'Login Complete! Thanks';
                    //$email = $row['EmailAddress'];  
                    $_SESSION['Username'] = $username;  
                    //$_SESSION['EmailAddress'] = $email;  
                    $_SESSION['LoggedIn'] = 1;  
                }else{
                    $msg = 'Login Failed!<br /> Please make sure that you enter the correct details and that you have activated your account.';
                }
            }


        ?>
        <!-- stop PHP Code -->

        <!-- title and description -->  
        <h2>Login Form</h2>
        <p>Please enter your name and password to login</p>

        <?php 
            if(isset($msg)){ // Check if $msg is not empty
                echo '<div class="statusmsg">'.$msg.'</div>'; // Display our message and add a div around it with the class statusmsg
            } ?>

        <!-- start sign up form --> 
        <form action="" method="post">
            <label for="name">Username:</label>
            <input type="text" name="name" value="" />
            <label for="password">Password:</label>
            <input type="password" name="password" value="" />

            <input type="submit" class="submit_button" value="login" />
        </form>

我的代码在没有Wordpress的常规php页面上工作,但是当我在Wordpress网站上登录时,它会将我重定向到“wp-login.php”,它也从不存储会话。有什么帮助吗?

编辑:

忘了添加,这是我的functions.php

add_action('init', 'initEverything');

function initEverything() {
    if(!session_id()) {
        session_start();
    }
}

感谢。

2 个答案:

答案 0 :(得分:0)

我知道当人们提出这样的问题而不是帮助时,这真的很烦人,但为什么你不只是使用WordPress的wp_users表?然后,您可以使用一行函数wp_signon

来记录某人

http://codex.wordpress.org/Function_Reference/wp_signon

您可能不会使用WordPress开箱即用的用户管理功能为自己创造额外的工作。

编辑:鉴于我们在下面的评论,这里有一些关于使用WordPress的wp_users做你正在尝试做的事情的简单方法的一些指示。我已经完成了您在其他网站上尝试实现的目标,我强烈建议您不要创建自定义用户表。

自定义用户元: http://codex.wordpress.org/Function_Reference/add_user_meta

阻止用户访问wp-admin(许多简单方法之一): http://pento.net/2011/06/19/preventing-users-from-accessing-wp-admin/

我实际上正在写一篇关于如何做到这一点的博客文章,所以一旦它出现我就会通知你。

答案 1 :(得分:0)

我知道这现在已经过时了,但我终于创造了一个如何去做我认为你想做的事情。有一些我可以充实的内容,比如添加用户元,但我很乐意反馈并知道它是否对你有所帮助:

http://haveposts.com/2013/01/how-to-create-a-really-simple-custom-wordpress-login-and-sign-up-without-plugins/

这是博客的首次发布,所以欢迎您提出任何其他想法。

干杯,

杰克