注册后自动登录

时间:2017-09-26 19:16:20

标签: php mysql sql

我希望用户在注册后自动登录,尝试了几个小时但到目前为止没有任何工作。

创建会话的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;
}

?>

1 个答案:

答案 0 :(得分:1)

使用$ inseted_id = $ mysqli-&gt; insert_id获取插入的ID以及之前的所有其他信息。现在创建用户SESSION和标题位置更改