Создать предельную дату для входа в 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("");
  }
}
?>

person Amirreza    schedule 10.01.2012    source источник
comment
<font> теги? Серьезно? Они устарели на лет!   -  person ThiefMaster    schedule 10.01.2012


Ответы (2)


Вы можете изменить setcookie на:

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

а затем срок действия файла cookie истекает через 1 час, и пользователь больше не будет входить в систему. Если вы хотите, чтобы файл cookie/логин длился дольше, вы должны изменить параметр срока действия на более длительное время.

person Dan    schedule 10.01.2012

Вы можете использовать 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

person khael    schedule 10.01.2012
comment
как я могу включить команду strtotime if в этот скрипт? В какую часть надо поставить эту команду? - person Amirreza; 13.01.2012
comment
@Amirreza, вы просто записываете пример кода, который я дал вам выше, в свой файл .php в начале или там, где вы выполняете фактический вход в систему, если вы это знаете. Вероятно, лучше всего поставить его после $pass = $_POST['access_password']; , но откуда мне знать?. Может быть, вы пытаетесь умудриться сделать хотя бы это, если вас что-то еще озадачивает. - person khael; 14.01.2012
comment
Как я могу исправить этот код, чтобы поместить его в основной скрипт? if(strtotime($LOGIN_INFORMATION['вы']['дата']) › время()) - person Amirreza; 14.01.2012