Bu TEMEL Auth oturumları kavramı yok olduğu doğrudur. Ancak oturumları kullanıcıların kimliğini doğrulamak için, veya kullanıcıların Aslında oturum kaç izlemek için tek yol değildir, HTTP vatansız olduğunu, ve bu yüzden HTTP Sessions olduğunu. Sadece aktif son sayısında (son değiştirildiği) oturumları aracılığıyla kaydedilir kaç tahmin edebilirsiniz.
PHP ile TEMEL Yet uygulayabilirsiniz. http://php.net/manual/en/features.http-auth.php
Sadece Bu HTTP oturumları kadar doğru olurdu son 5 dakika ya da 10 dakika gibi yapılan kimlik doğrulama sayısını sayarak oturum kaç tahmin edebilirsiniz.
Örn:
Temel-auth.php veya benzer adlı bir dosya oluşturun. Bu PHP.net gelen temel bir örnektir
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>
You can then require() this file from every file/directory you want to protect. However, all downloads will have to be validated by PHP now.
Remove your .htaccess basic authentication. Since you'll have PHP do it.
Şimdi kullanıcıları autheticate için değiştirebilirsiniz.
Unutulmaması gereken bir şey TEMEL Kimlik Doğrulama HTTP kimlik doğrulaması için tek bir şartname olmasıdır. Bu kimlik doğrulaması için nasıl belirtmiyor. Apache kullanıyorsanız bu yana, size kimlik doğrulaması nasıl Apache özgüdür. Siz benzer Apache için bir şifre dosyası, yaratmış olmalıdır Burada sözü: http://httpd.apache.org/docs/1.3/howto/auth.html#basicconfig
Apache üç karma işlevlerini kullanır. Crypt, md5 veya SHA1 ya. Eğer aynı şifre dosyasını kullanmak istiyorsanız, o zaman kullanmakta olduğunuz karma bilmek gerekir.
İşte SHA1 için bir örnek:
Temelde sadece şifre dosyasının her satırında geçmesi ve kullanıcı varsa verilen şifre eşleşirse, kontrol edeceğiz. Dosya gibi bir şey görünüyor:
user1:passwordhash1
user2:passwordhash2
":" Hangi ile ayrılmış satıra sadece bir kullanıcı ve parola hash vardır.
See here for how the hash is generated:
http://httpd.apache.org/docs/trunk/misc/password%5Fencryptions.html
Sizin kodu (denenmemiş) bu gibi bir şey olacaktır:
<?php
$authenticated = false;
// a user and password was supplied
if (isset($_SERVER['PHP_AUTH_USER'])) {
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
$hash = '{SHA}' . base64_encode(sha1($password, TRUE));
$password_file = '/path/to/your/passwords/file';
$lines = file($password_file);
// find the user in the password file
foreach($lines as $line) {
list($_user, $_hash) = explode(":", $line);
if ($_user == $user) {
// if the hash matches, then their password was correct
if ($hash == $_hash) {
$authenticated = true;
}
break;
}
}
}
if (!$authenticated) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'You need to log in to access the downloads';
exit;
}
// log file
$log_file = '/path/to/authentication/logs.log';
$lines = file($log_file);
$time = time();
$mins = 5; // last 5 mins
// write this user to log
$lines[] = $user.":".time();
// remove log entries older then $mins
// also count unique user entries
$unique_users = array();
foreach($lines as $i=>$line) {
list($_user, $_time) = explode(":", $line);
if ($time > $_time + 60*$mins) unset($lines[$i]);
else $unique_users[$user] = isset($unique_users[$user]) ? $unique_users[$user]+1 : 0;
}
// write log file to disk
file_put_contents($log_file, implode("\n", $lines));
// users online
$users_online_count = count($unique_users);
?>
Tabii ki, herhangi bir kimlik doğrulama yöntemi uygulayabilirsiniz. Eğer bir veritabanı kullanmak, ya da kendi dosya biçimleri, vb yazabilirsiniz