Hướng dẫn how can i get online user in php? - làm cách nào để có được người dùng trực tuyến trong php?

10

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang xây dựng một trang web cộng đồng. Người dùng sẽ đăng nhập và đăng xuất như thường lệ.

Tôi sử dụng trạng thái thuộc tính trực tuyến/ngoại tuyến để đặt trạng thái của người dùng. Nhưng điều gì sẽ xảy ra nếu người dùng chỉ nhấp vào nút X hoặc ngắt kết nối khác mà không đăng xuất?

Gần đây máy tính của tôi bị sập, khi tôi mở trang web bằng máy tính xách tay của mình, tôi không thể đăng nhập vì tôi không cho phép đăng nhập ở hai nơi. Tôi đến phpmyadmin và tôi thấy trạng thái của tôi vẫn còn trực tuyến. Có bất kỳ sửa chữa cho điều này.

Tôi đã thử điều Activitiy Last_Time nhưng điều đó không hoạt động trong trường hợp gặp sự cố máy tính! Và không có gì không tương tác hoặc làm mới để cập nhật bảng.

Hướng dẫn how can i get online user in php? - làm cách nào để có được người dùng trực tuyến trong php?

Neoophyte

6.4742 Huy hiệu vàng27 Huy hiệu bạc43 Huy hiệu đồng2 gold badges27 silver badges43 bronze badges

Đã hỏi ngày 6 tháng 11 năm 2011 lúc 9:50Nov 6, 2011 at 9:50

Bạn không cần cờ trực tuyến/ngoại tuyến, bạn chỉ cần lưu thời gian hoạt động cuối cùng. Khi hiển thị trạng thái người dùng, nếu thời gian hoạt động cuối cùng ít hơn bây giờ+15 phút thì người dùng đang trực tuyến, ngoại tuyến.

Đã trả lời ngày 6 tháng 11 năm 2011 lúc 10:01Nov 6, 2011 at 10:01

Hướng dẫn how can i get online user in php? - làm cách nào để có được người dùng trực tuyến trong php?

Do tính chất của web, bạn không thể biết khi người dùng ngắt kết nối, truyền cáp hoặc tắt máy tính của anh ta mà không có lịch sự nói với bạn.you can't know when a user disconnects, yanks the cable or shuts down his computer without politely telling you.

Bạn có thể có một tập lệnh (AJAX) kiểm tra cứ sau mỗi phút x xem liệu trình duyệt có còn phản hồi không và nếu không, hãy chuyển ngoại tuyến - nhưng điều đó sẽ tiêu tốn thêm tài nguyên. Đây là cách ví dụ như một IRCD hoạt động: Họ ping bạn, bạn trở lại. Nếu bạn không quay lại, bạn hết thời gian và bị ngắt kết nối với máy chủ.

HTTP là không quốc tịch, không có giải pháp tích hợp nào khác. Có thể HTML5 và ổ cắm, nhưng đó sẽ là nguyên tắc tương tự như chỉ đơn giản là Ajax.

Đã trả lời ngày 6 tháng 11 năm 2011 lúc 10:14Nov 6, 2011 at 10:14

KonerakkonerakKonerak

38.6K12 Huy hiệu vàng96 Huy hiệu bạc117 Huy hiệu đồng12 gold badges96 silver badges117 bronze badges

3

CREATE TABLE `user_online` (
`session` char(100) NOT NULL default '',
`time` int(11) NOT NULL default '0'
) TYPE=MyISAM;


Đã trả lời ngày 20 tháng 6 năm 2013 lúc 7:15Jun 20, 2013 at 7:15

Sun yêu tình yêuSun Love

7245 Huy hiệu bạc9 Huy hiệu Đồng5 silver badges9 bronze badges

Bạn có thể chạy một chức năng trên mỗi yêu cầu cập nhật một hàng trong cơ sở dữ liệu của bạn với ID người dùng của bạn và dấu thời gian được tính toán cho tương lai (ví dụ: time()+(60*5); - năm phút). Sau đó, bất cứ khi nào người dùng khác cố gắng kiểm tra xem người dùng đầu tiên đang trực tuyến, bạn có thể kiểm tra nó so với cơ sở dữ liệu bằng cách sử dụng kiểm tra 'xung':

$time = time();
$query = mysql_query("SELECT user_id, timestamp FROM online_users WHERE user_id = '$user_id' AND timestamp > '$time'");

Nếu truy vấn này trả về hơn 0 hàng, người dùng được coi là trực tuyến.

Đã trả lời ngày 6 tháng 11 năm 2011 lúc 10:31Nov 6, 2011 at 10:31

SeralizeSeralizeSeralize

1.10711 huy hiệu bạc26 Huy hiệu đồng11 silver badges26 bronze badges

Giải pháp xa.

Sử dụng máy chủ Node.js với socket.io. Có máy khách kết nối với máy chủ thông qua phía máy khách ổ cắm.io. Máy chủ chịu trách nhiệm phát ra các sự kiện cho khách hàng và mong đợi một phản hồi. Trên ngắt kết nối hoặc phản hồi trễ đánh dấu người dùng ngoại tuyến.

Nó sẽ hoạt động và có thể sẽ hoạt động ngay cả khi ngắt kết nối cáp/đóng trình duyệt nhưng nó có đáng để nỗ lực không?

Đã trả lời ngày 6 tháng 11 năm 2011 lúc 11:23Nov 6, 2011 at 11:23

Mobiusmobiusmobius

5.0642 Huy hiệu vàng27 Huy hiệu bạc40 Huy hiệu đồng2 gold badges27 silver badges40 bronze badges

Bạn có thể sử dụng phương pháp này 1. Kiểm tra trạng thái người dùng nếu đó là kiểm tra trực tuyến hoạt động cuối cùng nếu nó là hơn 10 phút được đặt trạng thái ngoại tuyến nếu nó dưới 10 phút hiển thị cho đến người dùng trực tuyến nếu nó tắt dòng người dùng ngoại tuyến

  1. Khi người dùng sử dụng bản cập nhật trang web này hoạt động cuối cùng trong mỗi "x" tối thiểu với ajax
  2. Khi người dùng nhấp vào trạng thái đăng nhập, Tắt dòng. Đây có thể là cấu trúc cơ sở dữ liệu của bạn.

Hướng dẫn how can i get online user in php? - làm cách nào để có được người dùng trực tuyến trong php?

Hướng dẫn how can i get online user in php? - làm cách nào để có được người dùng trực tuyến trong php?

Sandeep

1.5107 Huy hiệu vàng21 Huy hiệu bạc32 Huy hiệu Đồng7 gold badges21 silver badges32 bronze badges

Đã trả lời ngày 4 tháng 5 năm 2016 lúc 6:23May 4, 2016 at 6:23

Hướng dẫn how can i get online user in php? - làm cách nào để có được người dùng trực tuyến trong php?

Bạn đang đi đúng đường: Lưu thời gian UNIX hoạt động cuối cùng của người dùng trong cơ sở dữ liệu và khi ai đó truy cập trang web, hãy đặt trạng thái ngoại tuyến cho người dùng không hoạt động trong 15 phút (hoặc ít hơn). Nếu người dùng được đăng nhập và trạng thái của anh ta được đặt thành ngoại tuyến trong cơ sở dữ liệu, hãy buộc anh ta phải đăng xuất (phá hủy phiên).offline status for users that were not active for 15 minutes (or less). If the user is logged in and his status is set to offline in the database, force him to logout (destroying the session).

Tuy nhiên, câu hỏi thực sự là: nó có đáng không? Tôi chưa thấy bất kỳ hệ thống xác thực tương tự.

Đã trả lời ngày 6 tháng 11 năm 2011 lúc 9:54Nov 6, 2011 at 9:54

9

Tôi sẽ sử dụng kết hợp các phiên thời gian ra mà chưa có hoạt động gần đây và hết hạn các phiên cũ khi đăng nhập thành công trong nỗ lực được thực hiện.

Vì Konerak đã đề cập đến HTTP là không quốc tịch và không có cách nào để biết nếu ai đó đã rời khỏi trang web của bạn. Bạn có thể tìm ra nó với một số loại kỹ thuật bỏ phiếu dựa trên JavaScript, nhưng điều này sẽ gây ra rất nhiều chi phí mà không cần thiết trong hầu hết các tình huống.no built-in way of telling if someone has left your site. You could figure it out with some sort of JavaScript based polling technique, but this would cause a lot of overhead that just isn't necessary in most situations.

Thay vào đó, bạn nên theo dõi lần cuối cùng có bất kỳ hoạt động nào từ người dùng và lưu trữ thời gian đó trong cơ sở dữ liệu của bạn hoặc tốt hơn là một cái gì đó giống như Memcache. Nếu người dùng thời gian hoạt động cuối cùng dài hơn khoảng thời gian chờ bạn quyết định giả sử họ không còn trên trang web nữa.

Phần thứ hai sẽ là thay vì từ chối đăng nhập khi ai đó cố gắng đăng nhập sau khi rời khỏi trang web mà không đăng xuất, hãy để họ đăng nhập và vô hiệu hóa bất kỳ phiên cũ nào liên quan đến tài khoản của họ.let them log in and invalidate any old sessions associated with their account.

Đã trả lời ngày 7 tháng 11 năm 2011 lúc 8:01Nov 7, 2011 at 8:01

Mã không mã hóa vô dụngUseless Code

11.7K4 Huy hiệu vàng34 Huy hiệu bạc40 Huy hiệu đồng4 gold badges34 silver badges40 bronze badges

Đợi đã, tôi nghĩ rằng tôi có câu trả lời đúng vì tôi đã phải đối mặt với cùng một vấn đề! Cố gắng sử dụng sự kiện chuột [nhấp, Movemouse ..] Nhưng với độ trễ để không tạo ra sự cố trong điều hướng, bạn sẽ sử dụng SetInterVal trên XX Sec hoặc vài phút sau khi bạn lưu sự kiện trả lời DB của bạn trong cột Hoạt động nhưng Với thời gian UNIX để phân biệt nó sau này đến thời điểm bây giờ .. Nó thực sự hữu ích, tôi đã sử dụng nó để ghi nhật ký các thành viên để biết những gì họ thực sự làm trong thời gian thực và nhận được người dùng trực tuyến/ngoại tuyến. Đây là các chức năng JS đã sử dụng:

var body = document.getElementById('body');
var url = './member-activity.php?loggedUser=&curl=';
if(document.addEventListener) {
  document.addEventListener("click", _EventLogging, false);
    document.addEventListener("mousemove", _EventLogging, false);
}else{
  document.attachEvent("onclick", _EventLogging);
}
function _EventLogging(){
//call it after a delay of 
setTimeout(AjaxUrl(url), 2000); //delay of 2 sec after every move of cursor
}
//AjaxUrl is a js function that calls a php file to perform the activity logging via AJAX

Div ở trên là để thông báo cho bạn về các lỗi trong mã, bạn xóa nó khi ổn! Tôi hy vọng rằng câu trả lời của tôi là đúng cho trường hợp của bạn //

Đã trả lời ngày 22 tháng 1 năm 2013 lúc 0:53Jan 22, 2013 at 0:53

Vâng, câu trả lời thực sự cho câu hỏi của bạn "Tôi sẽ cập nhật bảng như thế nào mà không có sự tương tác của người dùng?"

Trình lập lịch sự kiện MySQL, bạn lên lịch một sự kiện (truy vấn) sẽ được thực hiện tại bất cứ khi nào bạn muốn ngay cả khi người dùng ngoại tuyến, hãy đọc về nó ở đây (http://dev.mysql.com/doc/refman/5.1/en/ sự kiện-overview.html)

Đã trả lời ngày 4 tháng 5 năm 2013 lúc 13:33May 4, 2013 at 13:33

EvilthinkerevilthinkerEvilThinker

7201 Huy hiệu vàng9 Huy hiệu bạc13 Huy hiệu đồng1 gold badge9 silver badges13 bronze badges

Trên thực tế, cách chính xác duy nhất để làm điều đó là sử dụng WebSocket, nó sẽ liên lạc với người dùng với giao tiếp thời gian thực, hãy thử Ratchet.websocket, it will communicate with the user with real-time communication, try Ratchet.

Đã trả lời ngày 6 tháng 2 năm 2020 lúc 17:26Feb 6, 2020 at 17:26

Hướng dẫn how can i get online user in php? - làm cách nào để có được người dùng trực tuyến trong php?

Shamaseenshamaseenshamaseen

1.7892 huy hiệu vàng18 Huy hiệu bạc31 Huy hiệu đồng2 gold badges18 silver badges31 bronze badges

Theo kịch bản của bạn, bạn có thể sử dụng logic dưới đây để kiểm tra trạng thái của người dùng:

Thay vì kiểm tra xem người dùng đang trực tuyến hay ngoại tuyến chỉ có giá trị của cột bảng, hãy sử dụng biến phiên. Ví dụ: hãy xem xét mã bên dưới:

 

Bạn có thể nâng cao nó hơn nữa, nhưng bạn có được quan điểm của tôi, tôi hy vọng.

Đã trả lời ngày 6 tháng 11 năm 2011 lúc 10:11Nov 6, 2011 at 10:11

Hướng dẫn how can i get online user in php? - làm cách nào để có được người dùng trực tuyến trong php?

Ghost-ManGhost-ManGhost-Man

2.1591 Huy hiệu vàng21 Huy hiệu bạc25 Huy hiệu đồng1 gold badge21 silver badges25 bronze badges

2

Làm thế nào kiểm tra người dùng trực tuyến trong PHP?

Trang PHP thực hiện ba công việc.Đầu tiên, nó cập nhật trạng thái của người dùng đã đăng nhập với thời gian mới và đặt trạng thái thành BẬT.Đây là mã của bước đầu tiên này.$ tm = ngày ("y-m-d h: i: s");$ q = mysql_query ("update plus_login set status = 'ON', tm = '$ tm' trong đó id = '$ session [id]'");$tm=date("Y-m-d H:i:s"); $q=mysql_query("update plus_login set status='ON',tm='$tm' where id='$session[id]'");

Làm thế nào tôi có thể nhận được đăng nhập PHP?

Mục lục..
Bước 1- Tạo biểu mẫu đăng nhập PHP HTML ..
Bước 2: Tạo mã CSS để thiết kế trang web ..
Bước 3: Tạo bảng cơ sở dữ liệu bằng MySQL ..
Bước 4: Mở kết nối với cơ sở dữ liệu MySQL ..
Bước 5 - Tạo phiên đăng xuất ..

Làm cách nào để kết nối cơ sở dữ liệu trực tuyến trong PHP?

Tạo nên cơ sở dữ liệu..
Tạo một thư mục trong htdocs ..
Tạo tệp kết nối cơ sở dữ liệu trong PHP ..
Tạo tệp PHP mới để kiểm tra kết nối cơ sở dữ liệu của bạn ..
Chạy nó ..

Làm thế nào tôi có thể kiểm tra xem người dùng có được đăng ký trong PHP không?

$ query = mysql_query ("Chọn tên người dùng từ người dùng WHERE userName = $ username", $ con);if (mysql_num_rows ($ query)! = 0) {echo "tên người dùng đã tồn tại";} khác { ... } 0) { echo "Username already exists"; } else { ... }