0

ユーザーのログイン資格情報を保存するために独自のテーブルをセットアップするWordpress Webサイトがあります。人々は問題なく登録できますが、ログインしてセッションを作成するときが来ると、うまくいかないようです。

これは私のヘッダーにあります:

<?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();
    }
}

ありがとう。

4

2 に答える 2

0

人々が助けではなく、このような質問をするのは本当に迷惑だと思いますが、WordPress の wp_users テーブルだけを使用しないのはなぜですか? 次に、1行の関数で誰かをログインさせることができます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 にアクセスするのを防ぎます (これを行う多くの簡単な方法の 1 つ): http://pento.net/2011/06/19/preventing-users-from-accessing-wp-admin/

現時点でこれを行う方法について実際にブログ投稿を書いているので、それがアップしたらお知らせします。

于 2012-11-15T15:31:03.373 に答える
0

私はこれが今では途方もなく時代遅れであることを知っていますが、私はついにあなたがやろうとしていると思うことをするためのハウツーを作成しました. ユーザー メタを追加するなど、肉付けできる部分がいくつかありますが、フィードバックをお待ちしております。

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

これはブログへの最初の投稿ですので、他の考えがあれば大歓迎です。

乾杯、

ジャック

于 2013-01-25T01:29:47.670 に答える