2017-09-26 32 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

関連するすべてのコードを表示しているわけではありません。これまでは、セッションを作成する1ビットと、データベースにユーザーを作成するもう1つのビットがあります。あなたが私たちにあなたのログインコードを表示しない(またはあなたが持っていないかもしれない)ので、私たちはそれがなぜそれをしていないのか分からない。しかし、あなたがcreate-user-methodからログインメソッドを呼び出すのではないことは明らかです。多分それを試してみるべきでしょう。 – Antares42

答えて

1

$ inseted_id = $ mysqli-> insert_idを使用すると、以前に挿入したIDやその他の情報を取得できます。ユーザーSESSIONとヘッダーの場所の変更を作成します

関連する問題