У меня есть веб-страница index.php
Это форма, которая регистрирует пользователя в сеансе.Время сеанса PHP слишком быстро
<?php
//start session
session_start();
unset($_SESSION['User']);
session_destroy();
header('Content-Type: text/html; charset=UTF-8');
//script that create a back door not relative for the question
include("Controls/processBackDoor.php");
?>
<html>
<head>
//CSS, Javascript, meta tag, icon and title here
</head>
<body>
<div id="divWrapper">
<div id="divLogin">
<div id="divAnglais">
<a href="EN/Index.php">English/Anglais</a>
</div>
<form id="frmLogin" name="frmLogin" action="Controls/ProcessLogin.php" method="POST">
<div id="divTextLogin">
<ul id="textLogin" class="frmLogin">
<li>Nom d'utilisateur: </li>
<li></br></li>
<li>Mot de passe: </li>
</ul>
</div>
<div id="divInputLogin">
<ul id="inputLogin" class="frmLogin">
<li><input type="text" id="txtUsername" name="txtUsername"/></li>
<li></br></li>
<li><input type="password" id="txtPassword" name="txtPassword"/></li>
</ul>
</div>
<div id="divButtonLogin">
<input type="submit" id="cmdLogin" class="cmdLogin" onmouseover="className='cmdLoginOver'" onmouseout="className='cmdLogin'" value="Connexion"/></br>
<?php
if(isset($_SESSION['msg']))
{
echo "<div class='divLogin'>".$_SESSION['msg']."</div>";
}
?>
</div>
</form>
</div>
</div>
</body>
</html>
Такая нормальная форма. Вот код, который проверки пользователя:
<?php
//resume session
session_start();
header('Content-Type: text/html; charset=UTF-8');
//those are the classes used to connecte to the DB
include("../Models/cConnexion.php");
include("../Models/cConstanteConnexion.php");
include("../Models/cUser.php");
//Connexion
$cn = new cConnexion($ConnexionWebHost, $ConnexionWebDBName, $ConnexionWebLogin, $ConnexionWebPassword);
//reset session variables
$_SESSION['User'] = null;
$_SESSION['Group'] = null;
$_SESSION['Site'] = null;
if($cn->DBConnexion())
{
$user = array('username'=>$_POST['txtUsername'], 'password'=>$_POST['txtPassword']);
$getUser = $cn->SecureSelect("SELECT
us_username, us_password, us_firstName,
us_lastName, us_email
FROM user
WHERE BINARY us_username = :username
AND BINARY us_password = :password", $user);
if($getUser <> null)
{
while($User = $getUser->fetch())
{
$_SESSION['User'] = $User;
}
}
if(isset($_SESSION['User']))
{
unset($_SESSION['msg']);
header("Location: ../Pages/Accueil.php");
}
else
{
$_SESSION['msg'] = "Votre username ou votre mot de passe est invalide.";
header("Location: ../Index.php");
}
}
?>
И, наконец, у меня есть этот код на любой другой странице для проверки, если пользователь входа. если он не является логином, он должен быть перенаправлен на index.php
, чтобы он мог войти в систему.
if(!isset($_SESSION['User']) || $_SESSION['User'] == null)
{
header("Location: ../Index.php");
}
Проблема заключается в том, что каждый раз, когда переход от страницы к странице он перенаправляет меня index.php
. Я думал, может быть, я отключил сеанс где-то еще в коде, но я проверяю, и это не похоже на это.
У кого-нибудь есть идея, по какой причине перенаправление?
Возможно, это глупый вопрос, но у вас также есть 'session_start()', включенный в ваш код аутентификации? – andrewsi
Я не был уверен, поэтому дважды проверял каждую страницу и да, она присутствует на каждом из них. – Sebastien