Web CD
Ý tưởng:
- Người dùng mở một trang thì có nghĩa là đang online.
- Người dùng không mở trang nào sau một quảng thời gian nhất định thì xem như ra khỏi trang
1. User online:
Ý tưởng:
- Người dùng mở một trang thì có nghĩa là đang online.
- Người dùng không mở trang nào sau một quảng thời gian nhất định thì xem như ra khỏi trang
Giả mã:
Mỗi khi người dùng mở một trang thì
- Ghi vào CSDL thời điểm ghi, IP, trang đang mở
- Xóa bớt những record quá hạn tính từ thời điểm hiện tại
- Đếm số người đang xem trang theo IP
PHP:
1. $server = "localhost";
2. $db_user = "root";
3. $db_pass = "";
4. $database = "test";
5. $table = "userOnline";
6. $timeoutseconds = 300;
7. $timestamp=time();
8. $timeout=$timestamp-$timeoutseconds;
9. mysql_connect($server, $db_user, $db_pass) or die (mysql_error());
10. mysql_select_db($database);
11. mysql_query("INSERT INTO $table VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')")
or die (mysql_error());
12. mysql_query("DELETE FROM $table WHERE timestamp<$timeout") or die (mysql_error());
13. $result=mysql_query("SELECT DISTINCT ip FROM $table WHERE file='$PHP_SELF'") or die
(mysql_error());
14. $user =mysql_num_rows($result);
15. mysql_close();
- Người dùng phải có user name và password hợp lệ.
- Không cho đăng nhập tự động hay đăng nhập nhiều lần liên tiếp.
Giải pháp:
1. Dùng HTTP Authentication.
2. Dùng Form đăng nhập tự tạo.
PHP:
1. Dùng HTTP Authentication.
1. $user="guest"; $password="password";
2. function authenticate() {
3. header('WWW-Authenticate: Basic realm="Đăng nhập"');
4. header('HTTP/1.0 401 Unauthorized');
5. echo "Vui lòng nhập tên và mật khẩu hợp lệ";
6. exit;
7. }
8. if (!isset($_SERVER['PHP_AUTH_USER'])