2013-07-23 2 views
0

У меня есть веб-страница 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. Я думал, может быть, я отключил сеанс где-то еще в коде, но я проверяю, и это не похоже на это.

У кого-нибудь есть идея, по какой причине перенаправление?

+0

Возможно, это глупый вопрос, но у вас также есть 'session_start()', включенный в ваш код аутентификации? – andrewsi

+0

Я не был уверен, поэтому дважды проверял каждую страницу и да, она присутствует на каждом из них. – Sebastien

ответ

0
// server should keep session data for AT LEAST 1 hour 
ini_set('session.gc_maxlifetime', 3600); 

// each client should remember their session id for EXACTLY 1 hour 
session_set_cookie_params(3600); 

session_start(); // ready to go! 
+0

Это похоже на хороший ответ, но поскольку проблема решена, и я не хочу возвращаться и менять что-то, что отлично работает (в случае, если я что-то еще), я не могу подтвердить, что ваш ответ правильный , Но лучше изменить его, а не напрямую в php.ini. Поэтому я дам вам ответ, но для будущей справки ЭТО ОТВЕТ НЕ ПРОВЕРЕН! Если кто-то случайно споткнется по одной и той же проблеме, пожалуйста, проверьте этот ответ и ответьте нам, чтобы мы знали, что он работает. Спасибо! – Sebastien

Смежные вопросы