-1

我在客户区使用 fuction.php 中的自定义登录功能。但问题是用户只登录一个页面。如果用户转到另一个页面。他必须再次登录等等。

如何保持所有页面而不是一个页面的用户登录?

另外,请检查我的登录功能。如果我做得对吗?

请帮助。

function login(){

     global $wpdb;

  if(isset($_POST['loggingg'])  AND  !empty($_POST['loggingg'])) {

    $email = $wpdb->escape ($_REQUEST['email']);
    $pass = $wpdb->escape ($_REQUEST['pass']);

    $sql = $wpdb->get_results ("SELECT * FROM wp_users where user_email='$email'");
    $numrows = $wpdb->num_rows;

    foreach ($sql as $fsql) {
        $password = $fsql->user_pass;
        $user_id = $fsql->ID;
        $username = $fsql->fname;
        $remember = $fsql->remember;

    }
    if($password) {
        $login_data = array();
        $login_data[] = $username;
        $login_data[] = $password;
        $login_data[] = $remember = TRUE;

        $wpdb->query ("UPDATE  wp_users  SET useronline='1' WHERE ID='$user_id'");

        $user_verify = wp_signon ($login_data, FALSE);
        wp_set_auth_cookie ($user_verify, 0, 0);


        wp_set_current_user ($user_id, $username);
        do_action ('wp_set_current_user');


    }
    else {
        echo "username r password is wrong.If you forgot ur password click <a href='#'>here</a>";
    }
}
 }
4

2 回答 2

1

可以使用wp signon函数:函数参考/wp signon

正如你在这里看到的:

<?php wp_signon( $credentials, $secure_cookie ) ?> 

它获取数组 ($credentials) 和一个布尔值(可选)。

在这里你可以看到它使用的示例代码:

$creds = array();
$creds['user_login'] = 'username';
$creds['user_password'] = 'password';
$creds['remember'] = true;
$user = wp_signon( $creds, false );
if ( is_wp_error($user) )
   echo $user->get_error_message();

此功能是 wp 的核心功能,这意味着当它被使用时,它将完成 wordpress 需要它做的所有事情,以使其正常工作。

接下来,您需要使用WordPress Cookies

在您的情况下,我看到您使用过:Function Reference/wp set auth cookie ,它采用以下参数:

<?php wp_set_auth_cookie( $user_id, $remember, $secure ) ?>

$user_id是一个整数并且$remember是一个布尔值(真/假)。

$user_id你试图放置一个不是整数的变量。更改它,$user_verify->ID它应该可以工作。

于 2013-06-23T13:39:32.633 回答
0

我为一个类似的项目构建了一个自定义函数:http: //cferdinandi.github.io/web-app-starter-kit/

它使用 WordPress 使用的内置登录过程,但来自自定义页面。

于 2013-06-26T03:12:13.067 回答