簡體   English   中英

注冊后自動登錄

[英]Auto-Login After Registration

我希望用戶在注冊后自動登錄,已經嘗試了幾個小時,但到目前為止沒有任何效果。

index.php 上創建會話的代碼:

        <?php
    session_start();
    require("inc/user.functions.php");

    $sessionkey = "";
    if(isset($_SESSION['sessionkey']))
        $sessionkey = $_SESSION['sessionkey'];

    $account = new Account($sessionkey);

user.funtions.php:(登錄、注冊等)

    <?php 
require("config.php");
require("global.functions.php");

class Account {
    public $LoggedIn = false;
    public $Username;
    public $level;
    public $uid;
    public $Avatar;
    public $admin;
    public $Email;
    public $Bio;

    public function __construct($sessionkey) {
        if($sessionkey != "" && $this->session_check($sessionkey) == true) {
            $this->LoggedIn = true;
        }
    }

    private function session_check($sessionkey) {
        global $mysql;

        $query = $mysql->query("SELECT * FROM table_users WHERE sessionkey = '$sessionkey'");
        $check = $query->num_rows;
        if($check > 0) {
            while($row = $query->fetch_assoc()) {
                $this->uid = $row['uid'];
                $this->Username = $row['username'];
                $this->level = $row['level'];
                $this->Avatar = $row['avatar'];
                $this->admin = $row['admin_access'];
                $this->Email = $row['email'];
                $this->Bio = $row['bio'];
            }
            return true;
        }

        return false;
    }
}

function login_account($username, $password) {
    global $mysql;

    $query = $mysql->query("SELECT * FROM table_users WHERE username = '$username' OR email = '$username'");
    $check = $query->num_rows;
    if($check > 0) {
        while($row = $query->fetch_assoc()) {
            $uid = $row['uid'];
            $hash = $row['password'];
        }

        if(verifyPassword($password, $hash) == true) {
            UpdateSession($uid);
            return true;
        } else
            return false;

    } else
        return false;
}

function register_account($firstname, $lastname, $gender, $email, $username, $password) {
    global $mysql;

    //If email is not in correct format e.g example@example.com
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return "Vääränlainen sähköpostiosoite!";
    }

    //If email exists in the database
    if(email_exists($email) == true) {
        return "Sähköposti on jo rekisteröity!";
    }

    //If username exists in the database
    if(username_exists($username) == true) {
        return "Käyttäjänimi on jo rekisteröity!";
    }

    $date = date("Y-m-d H:m:s");

    //Create a row into table_users 
    $mysql->query("INSERT INTO table_users (username, password, email, fullname, gender, level, avatar, admin_access, views, date_registered) VALUES ('$username', '".hashPassword($password)."', '$email', '$firstname $lastname', '$gender', 0, 'default.png', 0, 0, '$date') ");


    return "Käyttäjätilisi on nyt rekisteröity!";

}

function email_exists($email) {
    global $mysql;

    $query = $mysql->query("SELECT * FROM table_users WHERE email = '$email'");
    $check = $query->num_rows;
    if($check > 0)
        return true;

    return false;
}

function username_exists($username) {
    global $mysql;

    $query = $mysql->query("SELECT * FROM table_users WHERE username = '$username'");
    $check = $query->num_rows;
    if($check > 0)
        return true;

    return false;
}

function hashPassword($password) {
    return password_hash($password, PASSWORD_BCRYPT, [ 'cost' => 15 ]);
}

function verifyPassword($password, $hash) {
    if (password_verify($password, $hash))
        return true;
    else
        return false;
}

function UpdateSession($uid) {
    global $mysql;

    $sessionkey = base64_encode(randomString(35));
    $_SESSION['sessionkey'] = $sessionkey;
    $query = $mysql->query("UPDATE table_users SET sessionkey = '$sessionkey' WHERE uid = '$uid'");
}

function sessionkey_check($sessionkey) {
    global $mysql;

    $query = $mysql->query("SELECT * FROM table_users WHERE sessionkey = '$sessionkey'");
    if($query->num_rows > 0) 
        return true;

    return false;
}

?>

使用 $inseted_id=$mysqli->insert_id 獲取插入的 id 和您之前擁有的所有其他信息。 現在創建用戶會話和標題位置更改

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM