在PHP脚本中创建登录限制日期


Create limit date for login in PHP Script

这个简单的脚本不需要数据库,用户名和密码将在脚本中定义
我如何构建脚本来定义每个用户名和密码的日期,以便在日期到期后,使用这些凭据登录的能力也将到期?

像这样:

$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("");
  }
}
?>

您可以将setcookie更改为:

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

然后cookie将在1小时后过期,用户将不再登录。如果您希望cookie/登录持续更长时间,则可以将expire参数更改为更长时间。

您可以使用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函数strtotime

php函数时间