2017-09-26 134 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和標題位置更改