2017-09-26 264 views
-4

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

创建会话上的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 [email protected] 
    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

应用程序的其余部分如何知道某人是否已登录?什么会话变量被设置?你需要模仿。 – waterloomatt

+0

你没有向我们展示所有相关的代码。到目前为止,我看到一位创建会话,另一位创建数据库中的用户。既然你没有向我们展示(或者你没有?)你的登录代码,我们不知道为什么它没有这样做。但是 - 很明显,您不会从您的create-user-method调用*任何登录方法。也许你应该尝试一下。 – Antares42

回答

1

使用$ inseted_id = $ mysqli-> insert_id可以获得插入的ID和您以前拥有的所有其他信息。现在创建用户SESSION和标题位置更改