عرض قائمة بالمستخدمين المتواجدين حاليا

my-first-website5

لعرض قائمة بالمستخدمين المتواجدين حاليا ضمن موقعك هناك عدة طرق كالتالي :

1- قم بوضع الكود الحالي ضمن ملف الـ Web.Config داخل المقطع <membership>

<membership userIsOnlineTimeWindow="5">


حيث يمكنك تغيير الرقم 5 كما تريد وهو عبارة عن رقم يمثل كم من الوقت (بالدقائق) تعتبر أن المستخدم أونلاين منذ آخر نشاط قام به.

2- قم بوضع الكود الحالي في صفحة الـ Master Page لموقعك أو في الصفحات التي تريد معرفة المستخدمين المتواجدين فيها فقط

(MembershipUser currentUser = Membership.GetUser(true)


3- الآن الخطوة الأخيرة هي عرض المستخدمين المتواجدين حاليا، يمكنك استخدام أداة مثل GridView أو أي أداة أخرى تريدها وتقوم بجلب بيانات كافة المستخدمين من قاعدة البيانات.

باستخدام دالة  Membership.GetAllUsers

نقوم باضافة اداة GridView  كما في المثال التالي :

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Users</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>User List</h3>

  Number of Users Online: <asp:Label id="UsersOnlineLabel" runat="Server" /><br />

  <asp:Panel id="NavigationPanel" Visible="false" runat="server">
    <table border="0" cellpadding="3" cellspacing="3">
      <tr>
        <td style="width:100">Page <asp:Label id="CurrentPageLabel" runat="server" />
            of <asp:Label id="TotalPagesLabel" runat="server" /></td>
        <td style="width:60"><asp:LinkButton id="PreviousButton" Text="< Prev"
                            OnClick="PreviousButton_OnClick" runat="server" /></td>
        <td style="width:60"><asp:LinkButton id="NextButton" Text="Next >"
                            OnClick="NextButton_OnClick" runat="server" /></td>
      </tr>
    </table>
  </asp:Panel>

  <asp:GridView id="UserGrid" runat="server"
                CellPadding="2" CellSpacing="1"
                Gridlines="Both">
    <HeaderStyle BackColor="darkblue" ForeColor="white" />
  </asp:GridView>

</form>

</body>
</html>

كود #C :

int pageSize = 5;
int totalUsers;
int totalPages;
int currentPage = 1;

public void Page_Load()
{
  if (!IsPostBack)
  {
    GetUsers();
  }
}

private void GetUsers()
{
  UsersOnlineLabel.Text = Membership.GetNumberOfUsersOnline().ToString();

  UserGrid.DataSource = Membership.GetAllUsers(currentPage-1, pageSize, out totalUsers);
  totalPages = ((totalUsers - 1) / pageSize) + 1;

  // Ensure that we do not navigate past the last page of users.

  if (currentPage > totalPages)
  {
    currentPage = totalPages;
    GetUsers();
    return;
  }

  UserGrid.DataBind();
  CurrentPageLabel.Text = currentPage.ToString();
  TotalPagesLabel.Text = totalPages.ToString();

  if (currentPage == totalPages)
    NextButton.Visible = false;
  else
    NextButton.Visible = true;

  if (currentPage == 1)
    PreviousButton.Visible = false;
  else
    PreviousButton.Visible = true;

  if (totalUsers <= 0)
    NavigationPanel.Visible = false;
  else
    NavigationPanel.Visible = true;
}

public void NextButton_OnClick(object sender, EventArgs args)
{
  currentPage = Convert.ToInt32(CurrentPageLabel.Text);
  currentPage++;
  GetUsers();
}

public void PreviousButton_OnClick(object sender, EventArgs args)
{
  currentPage = Convert.ToInt32(CurrentPageLabel.Text);
  currentPage--;
  GetUsers();
}

بعدها تقوم بعمل اختبار لكل سطر للتأكد من الشرط التالي:

if (Membership.GetUser(username).IsOnline
//User Is Online, Do What You Want

بذلك نكون قد حصلنا على قائمة بالمستخدمين المتواجدين أونلاين في موقع الـASP.NET .

هناك عدة طرق أخرى لعرض المستخدمين المتواجدين أونلاين نكملها في المقالة القادمة ان شاء الله أنتظرونا 🙂