ログイン全体の作成と PHP でのシステムの登録が完了しましたが、まだセッションを使用していないことが問題です。私はPHPの初心者で、セッションを使用したことがありません。私がやりたいことは、ユーザーが登録してログインフォームに記入した後も、同じページにとどまることです。そのため、セッションがlogged_inの場合の部分とそうでない場合の部分があります(ユーザーがログインしていないため、ログインフォームを表示します)。始める方法を誰か教えてもらえますか?
9 に答える
お役に立てれば :)
セッションを開始する場合、ページの上部またはセッション コードを呼び出す前にこれを言う必要があります
session_start();
誰がログインしているかを追跡するためにセッションにユーザーIDを入れます
$_SESSION['user'] = $user_id;
誰かがログインしているかどうかを確認する
if (isset($_SESSION['user'])) {
// logged in
} else {
// not logged in
}
ログインしたユーザーIDを見つける
$_SESSION['user']
だからあなたのページで
<?php
session_start();
if (isset($_SESSION['user'])) {
?>
logged in HTML and code here
<?php
} else {
?>
Not logged in HTML and code here
<?php
}
これは、php を使用した最も単純なセッション コードです。3つのファイルを使用しています。
login.php
<?php session_start(); // session starts with the help of this function
if(isset($_SESSION['use'])) // Checking whether the session is already there or not if
// true then header redirect it to the home page directly
{
header("Location:home.php");
}
if(isset($_POST['login'])) // it checks whether the user clicked login button or not
{
$user = $_POST['user'];
$pass = $_POST['pass'];
if($user == "Ank" && $pass == "1234") // username is set to "Ank" and Password
{ // is 1234 by default
$_SESSION['use']=$user;
echo '<script type="text/javascript"> window.open("home.php","_self");</script>'; // On Successful Login redirects to home.php
}
else
{
echo "invalid UserName or Password";
}
}
?>
<html>
<head>
<title> Login Page </title>
</head>
<body>
<form action="" method="post">
<table width="200" border="0">
<tr>
<td> UserName</td>
<td> <input type="text" name="user" > </td>
</tr>
<tr>
<td> PassWord </td>
<td><input type="password" name="pass"></td>
</tr>
<tr>
<td> <input type="submit" name="login" value="LOGIN"></td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
home.php
<?php session_start(); ?>
<html>
<head>
<title> Home </title>
</head>
<body>
<?php
if(!isset($_SESSION['use'])) // If session is not set then redirect to Login Page
{
header("Location:Login.php");
}
echo $_SESSION['use'];
echo "Login Success";
echo "<a href='logout.php'> Logout</a> ";
?>
</body>
</html>
logout.php
<?php
session_start();
echo "Logout Successfully ";
session_destroy(); // function that Destroys Session
header("Location: Login.php");
?>
まず、PHP のドキュメントにはセッションに関する優れた情報がいくつかあります。
次に、Web サイトの各ユーザーの資格情報を保存する何らかの方法 (データベースなど) が必要になります。パスワードを人間が読める暗号化されていないプレーン テキストとして保存しないことをお勧めします。パスワードを保存するときは、PHP のcrypt()
ハッシュ関数を使用する必要があります。これは、資格情報が侵害された場合、パスワードをすぐに利用できないことを意味します。
ほとんどのログイン システムは、ユーザーが入力したパスワードをハッシュ/暗号化し、その結果を、対応するユーザー名のストレージ システム (データベースなど) 内のハッシュと比較します。入力したパスワードのハッシュが保存されているハッシュと一致する場合、ユーザーは正しいパスワードを入力しています。
セッション変数を使用して、ユーザーの現在の状態に関する情報を保存できます。つまり、ログインしているかどうか、ログインしている場合は、一意のユーザー ID またはすぐに利用できる必要があるその他の情報も保存できます。
PHP セッションを開始するには、 を呼び出す必要がありますsession_start()
。同様に、セッションとそのデータを破棄するには、次のように呼び出す必要がありますsession_destroy()
(たとえば、ユーザーがログアウトするとき)。
// Begin the session
session_start();
// Use session variables
$_SESSION['userid'] = $userid;
// E.g. find if the user is logged in
if($_SESSION['userid']) {
// Logged in
}
else {
// Not logged in
}
// Destroy the session
if($log_out)
session_destroy();
こちらもご覧になることをお勧めします。そこには、簡単なログイン システムの作成に関する優れたわかりやすい情報がいくつかあります。
私は常に OOP を実行し、このクラスを使用してセッションを維持するので、関数 is_logged_in を使用して、ユーザーがログインしているかどうかを確認し、ログインしていない場合は、やりたいことを実行できます。
<?php
class Session
{
private $logged_in=false;
public $user_id;
function __construct() {
session_start();
$this->check_login();
if($this->logged_in) {
// actions to take right away if user is logged in
} else {
// actions to take right away if user is not logged in
}
}
public function is_logged_in() {
return $this->logged_in;
}
public function login($user) {
// database should find user based on username/password
if($user){
$this->user_id = $_SESSION['user_id'] = $user->id;
$this->logged_in = true;
}
}
public function logout() {
unset($_SESSION['user_id']);
unset($this->user_id);
$this->logged_in = false;
}
private function check_login() {
if(isset($_SESSION['user_id'])) {
$this->user_id = $_SESSION['user_id'];
$this->logged_in = true;
} else {
unset($this->user_id);
$this->logged_in = false;
}
}
}
$session = new Session();
?>