ウェブサイトを開発していますが、ログイン システムに問題があります。user1 と user2 の 2 人のユーザーを考えてみます。user1 が自分のアカウントにアクセスし、同じブラウザで user2 が自分のアカウントにアクセスした場合、user1 はセッションからログアウトする必要がありますが、これは私のシステムでは発生しません。さらに、システムは user1 が user2 であると見なします。つながっている。これは、ログイン ページと認証の次のコードです。
ログインコード
<html>
<body>
<div class="wrap">
<div id="content">
<div id="main">
<div class="full_w">
<form action="login_oficial.php" method="post" autocomplete="off">
<label for="login">Usuario:</label>
<input id="login" name="login" class="text" />
<label for="pass">Contraseña:</label>
<input id="pass" name="pass" type="password" class="text" />
<input type="submit" class="ok" name="acceso_cuenta" value="Acceder"></button>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
認証コード (login_oficial.php)
<?php
session_start();
require('incluye.php');
$usuario = $_POST['login'];
$_SESSION['user']=$usuario;
$error = '';
$form = $_POST['acceso_cuenta'];
$password = $_POST['pass'];
$query1 = "SELECT user FROM data1 WHERE user='$usuario' and passwort='$password'";
$result=pg_query($conn,$query1);
if( isset($form) ) {
if( isset($usuario) && isset($password) && $usuario !== '' && $password !== '' ) {
if(pg_num_rows($result) != 0 ) { //success
$_SESSION['logged-in'] = true;
header('location: http://localhost/public_html/website/normal_user.php');
exit;
}else { $error = "Your information is wrong."; }
} else { $error = 'Please, do not leave blank spaces.';}
}
?>
<html>
<body>
<div class="wrap">
<div id="content">
<div id="main">
<div class="full_w">
<form action="<?php $PHP_SELF; ?>" method="post">
<label for="login">Usuario:</label>
<input id="login" name="login" class="text" autocomplete="off" />
<label for="pass">Contraseña:</label>
<input id="pass" name="pass" type="password" class="text" />
<div class="sep"></div>
<input type="submit" class="ok" name="acceso_cuenta" value="Acceder"></button>
</form>
</div><!--END OF FULL-->
<?php echo "<br /><span style=\"color:red\">$error</span>";?>
</div><!--END OF MAIN-->
</div><!--END OF CONTENT-->
</div><!--END OF WRAP-->
</body>
</html>
incluye.php のコード
<?
if($_POST['acceso_cuenta']){
$strconn="dbname=postgres port=5432 host=127.0.0.1 user=xxxxxx password=*****";
$conn=pg_Connect($strconn);
}
if(!$conn){
// echo "Error connection!!!";
}else{
//echo "Connection succesful!!!";
}
?>
ユーザーページ
<?php
session_start();
require('incluye.php');
// is the one accessing this page logged in or not?
if ( !isset($_SESSION['logged-in']) || $_SESSION['logged-in'] !== true) {
// not logged in, move to login page
session_destroy();
header('Location: login_oficial.php');
exit;}
?>
<html lang="en">
<body class="">
<div class="navbar">
<div class="navbar-inner">
<ul class="nav pull-right">
<li id="fat-menu" class="dropdown">
<li ><a href="logout.php">Logout</a></li>
<i class="icon-user"></i> <? echo "Welcome user {$_SESSION['user']} " ; ?>
</a>
</li>
</ul>
</div>
</body>
</html>
Logout.php
session_start();
// if the user is logged in, unset the session
if (isset($_SESSION['logged-in'])) {
unset($_SESSION['logged-in']);
}
// now that the user is logged out,
// go to login page
header('Location: login.html');
?>
すべての提案を歓迎します。他に適切と思われる提案があれば、遠慮なくお寄せください。乾杯。