2012-01-10 48 views
0

這個簡單的腳本不需要數據庫,用戶名和密碼將在腳本中定義。
如何構建腳本來爲每個用戶名和密碼定義一個日期,以便在日期到期之後,使用這些憑據登錄的功能也會過期?在PHP腳本中創建登錄限制日期

像這樣:

$LOGIN_INFORMATION = array( 
'you' => 'yourpassword' => '12-03-2012' 
'username2' => 'yourpassword2' => '12-05-2012' 
); 

腳本演示:http://demos.savasplace.com/password/

<?php 
################################################################## 
##   Sava's Place.com Password Protect     ## 
##  Visit http://savasplace.com for more scripts   ## 
################################################################## 
$LOGIN_INFORMATION = array(
    'sava' => 'sava', 
    'you' => 'yourpassword' 
); 

// Require username or not 
// If you want to use username and password login leave this true. 
// If you want only to request a password set it for false. 

define('USE_USERNAME', true); 

// To password protect your pages you need to include this file in them 
// To get the correct code for inclusion open password.php?code in your broswer 

if(isset($_GET['code'])) { 
    die('<center><font face="Verdana" size="2">Include following code into every page you would like to protect, at the very beginning (first line):<br><br><strong>&lt;?php include("' . __FILE__ . '"); ?&gt;</strong></center></font>'); 
} 
if(isset($_GET['logout'])) { 
    setcookie("verify", ''); // clear password; 
    die('<center><font face="Verdana" size="2">Logged out.</font></center>'); 
} 
if(!function_exists('showLoginPasswordProtect')) { 
function showLoginPasswordProtect($error_msg) { 
?> 
<!-- And this is the output --> 

<html> 
<head> 
<title>Login to access this page</title> 
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
<style> 
* { 
font-family:Verdana; 
font-size:12px; 
} 
a { 
color: #000000; 
text-decoration: none; 
} 

a:hover { 
color: red; 
text-decoration: none; 
} 

input { 
border: 1px solid black; 
background-color: #FFFFFF; 
} 
.bodyform { 
border-color: #000000; 
border-style:solid; 
border-width: 3px; 
width:400px; 
} 
.title { 
color: #FFFFFF; 
background: #000000; 
padding: 5px; 

} 
</style> 
</head> 
<body> 
<center><br /><br /> 
<div class="bodyform" align="center"> 
<form method="post"> 
<div class="title"> 
<strong>Access restricted - Login Below:</strong> 
</div> 
<div style="padding-right:10px;padding-left:10px;"> 
<font color="red"><strong><?php echo $error_msg; ?><strong></font><br /><br /> 
<?php if (USE_USERNAME) echo '<table> 
<tr> 
<td align="left">Login:</td> 
<td align="right"><input type="input" name="access_login" /></td> 
</tr> 
<tr> 
<td>Password:</td>'; ?> 
<td><input type="password" name="access_password" /></td> 
</tr> 
</table> 
<p></p> 
<input type="submit" name="Submit" value="Submit" /> 
</form> 
</div> 
</div> 
<br /> 
Powered by <a href="http://savasplace.com" target="_blank">Sava's Place Password Protect Script</a> 
</center> 
</body> 
</html> 
<?php 
    die(); 
} 
} 
if (isset($_POST['access_password'])) { 
    $login = isset($_POST['access_login']) ? $_POST['access_login'] : ''; 
    $pass = $_POST['access_password']; 
    if (!USE_USERNAME && !in_array($pass, $LOGIN_INFORMATION) 
    || (USE_USERNAME && (!array_key_exists($login, $LOGIN_INFORMATION) || $LOGIN_INFORMATION[$login] != $pass)) 
) { 
    showLoginPasswordProtect("Incorrect password."); 
    } 
    else { 
    setcookie("verify", md5($pass)); 
    unset($_POST['access_login']); 
    unset($_POST['access_password']); 
    unset($_POST['Submit']); 
    } 

} 
else { 
    if (!isset($_COOKIE['verify'])) { 
    showLoginPasswordProtect(""); 
    } 
    $found = false; 
    foreach($LOGIN_INFORMATION as $kay=>$val) { 
    if ($_COOKIE['verify'] == md5($val)) { 
     $found = true; 
     break; 
    } 
    } 
    if (!$found) { 
    showLoginPasswordProtect(""); 
    } 
} 
?> 
+4

''tags?真的嗎?它們已被棄用**年**! – ThiefMaster 2012-01-10 13:24:56

回答

0

您可以使用strtotime您轉換日期時間數值,並將其與您當前的數據也轉換爲數值,並且如果它大於指定的值,則在登錄時返回false。

$LOGIN_INFORMATION = array( 
    'you' => array('pass' => 'yourpassword', 'date' => '12-03-2012'), 
    'username2' => array('pass' => 'yourpassword2', 'date' => '12-05-2012') 
); 


if(strtotime($LOGIN_INFORMATION['you']['date']) > time()) 
{ 
    exit(); 
    // show error message or anything 
} 
else 
{ 
    // login or whatever you would like to happen here in case the date did not expired 
    // check password, etc 
} 

php function strtotime

php function time

+0

如何將** strtotime如果命令**包含到此腳本中? 哪一部分必須放這個命令? – Amirreza 2012-01-13 02:36:06

+0

@Amirreza你只需將上面給出的代碼示例寫入你的.php文件中,如果這是你知道的東西,那麼你可以在開頭或者在哪裏做實際的登錄。可能最好的辦法是把它放在'$ pass = $ _POST ['access_password']; ',但我知道什麼?也許你試圖至少做到這一點,如果其他事情困擾你。 – khael 2012-01-14 00:35:55

+0

如何正確編輯此代碼以便放入主腳本中? ** if(strtotime($ LOGIN_INFORMATION ['you'] ['date'])> time())** – Amirreza 2012-01-14 10:28:44

0

你可以改變setcookie到:

setcookie("verify", md5($pass), time()+3600);

,然後該cookie將在1小時後過期,用戶將不再被記錄。如果你想要cookie /登錄持續時間更長,那麼你會改變exp ire參數的時間更長。