2013-10-27 3 views
0

Я новичок в Php.Я разрабатываю веб-сайт, и я использовал сеанс для входа и выхода из системы. Я просто пытаюсь узнать, как истечь мой сеанс после определенного времени. минут неиспользуемого использования. Мой код Логин:session expire on time in php

<?php 
ob_start(); 
include("config.php"); 

session_start(); 

// set timeout period in seconds 
$inactive = 1200; 

// check to see if $_SESSION['timeout'] is set 
if(isset($_SESSION['timeout'])) { 
    $session_life = time() - $_SESSION['start']; 
    if($session_life > $inactive) { 
     session_destroy(); header("Location: logout.php"); 
    } 
} 

$_SESSION['timeout'] = time(); 

if($_SERVER["REQUEST_METHOD"] == "POST") { 
    $myusername=addslashes($_POST['username']); 
    $mypassword=addslashes($_POST['password']); 
    $sql="SELECT rid FROM register WHERE rname='$myusername' and rpass='$mypassword'"; 
    $result=mysql_query($sql); 
    $row=mysql_fetch_array($result); 
    @$active=$row['active']; 
    $count=mysql_num_rows($result); 
    if($count==1) { 
     $_SESSION['myusername']=$myusername; 
     $_SESSION['login_user']=$myusername; 
     echo "<script language=\"javascript\"> 
     window.location.assign('Home.php')</script>"; 
    } 
    else { 
     $error="Your Login Name or Password is invalid"; 
    } 
} 
?> 
<html> 
<head> 

<title>Login Page</title> 


</head> 
<body>  
<div style="margin:30px">  
<form action="" method="post"> 
<label>UserName :</label><input type="text" name="username" required="required" class="box"/><br /><br /> 
<label>Password :</label><input type="password" name="password" required="required" class="box" /><br/><br /> 
<input type="submit" value=" Submit "/>&nbsp;&nbsp;<input type="reset" value="Reset"/><br /> 
<br /> 
Not a member yet..? &nbsp;&nbsp; <a href="register.php">Register</a></li> 

</form> 
<div style="font-size:11px; color:#cc0000; margin-top:10px"><?php echo @$error; ?></div> 
</div> 
</div> 


</body> 
</html> 

и выход из системы код:

<?php 
session_start(); 
if(session_destroy()) { 
    header("Location: home.php"); 
} 
?> 

Этот код работает нормально, но пользователь не может войти в систему.

+2

** Не храните пароли в текстовом формате **. – SLaks

+2

У вас есть уязвимость в SQL-инъекции. – SLaks

+1

У вас нет реальной безопасности. – SLaks

ответ

1

Вы никогда не устанавливаете $_SESSION['start']. Эта линия

$session_life = time() - $_SESSION['start']; 

, вероятно, следует

$session_life = time() - $_SESSION['timeout']; 

не так ли?

+0

С помощью своего кода я могу войти в систему, но все же не выходить из системы после простоя. Любая помощь для этой части. – user2125727

+0

Является ли проверка '//, чтобы проверить, установлен ли $ _SESSION ['timeout'] '-блочный блок, включенный в каждый скрипт, или это просто на странице входа? – Geier

+0

Мой плохой ... Я просто забыл обновить страницу. Он отлично работает. Но было бы лучше, если бы код выполнил после простоя его выход из системы в любом случае бездействующий или нет. Что-нибудь сказать? – user2125727