2013-10-27 68 views
0

我是新來的Php.I正在開發一個網站,我用會話登錄和登出代碼。我只是想知道如何在特定的時間後過期我的會話。例如20閒置數分鐘。 我的登錄代碼:會話到期時間在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']是否設置了每個腳本中包含的block,還是隻在登錄頁面上? – Geier

+0

我的不好...我只是忘了刷新頁面。它工作正常。但它會更好,如果代碼將執行後空閒時間它的註銷無論如何閒置或不。無論如何說? – user2125727