这个简单的脚本不需要数据库,用户名和密码将在脚本中定义
我如何构建脚本来定义每个用户名和密码的日期,以便在日期到期后,使用这些凭据登录的能力也将到期?
像这样:
$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><?php include("' . __FILE__ . '"); ?></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函数时间