-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;
}
?>
それがどのように見える」というメッセージを取得してくださいあなたの投稿は主にコードであり、もっと詳しく記入してください。」、私は本当に何を追加するのか分かりません。
ログインしている場合、他のアプリケーションはどのようにして知りますか?どのセッション変数が設定されていますか?あなたはそれを模倣する必要があります。 – waterloomatt
関連するすべてのコードを表示しているわけではありません。これまでは、セッションを作成する1ビットと、データベースにユーザーを作成するもう1つのビットがあります。あなたが私たちにあなたのログインコードを表示しない(またはあなたが持っていないかもしれない)ので、私たちはそれがなぜそれをしていないのか分からない。しかし、あなたがcreate-user-methodからログインメソッドを呼び出すのではないことは明らかです。多分それを試してみるべきでしょう。 – Antares42