PDA

View Full Version : سوال: مشخص بودن کاربر on



tahoma
یک شنبه 21 اسفند 1390, 13:55 عصر
با سلام در یک پروزه asp.net که کاربران عضو دارد زمانی که یک کاربر لاگین می کند چطور می توان نشان داد که این کاربر on است >دقیقا مانند همین سایت که با on شدن یک کاربر یک آیکن سبز رنگ کنار نام کاربریش قرار میگیره و در صورت off بودن یک آیکن سفید ؟من می خواهم این قابلیت در صفحه پروفایل هر کاربر باشد یعنی وقتی بقیه کاربران به صفحه پروفایل یک کاربر رفتند اگر on بود این آیکن سبز رنگ را کنار تصویرش ببینند.
با تشکر

fakhravari
یک شنبه 21 اسفند 1390, 14:11 عصر
اگر ممبرشیپ استفاده میکنید با کد زیر میشود.
MembershipUser user = Membership.GetUser(TextBox1.Text.Trim());
chkOnlineNow.Checked = user.IsOnline;

برای مثال
<asp:CheckBox ID="chkOnlineNow" runat="server" Enabled="false"
style="font-weight: 700" />

tahoma
یک شنبه 21 اسفند 1390, 15:53 عصر
با تشکر من از membership استفاده نمیکنم و تا به حال باهاش کار نکردم اگر امکانش هست لطف کنید و طرز استفادشو بگید .من از ارتباط با دیتا بیس username کاربر را هنگام لاگین به دست میارم و می خواهم با ورود به صفحه پروفایل کاربر آیکن سبز کنار تصویرش نمایش داده بشه.دو خط کد اول باید پشت دکمه لاگین قرار بگیرند؟

fakhravari
یک شنبه 21 اسفند 1390, 16:16 عصر
خوب ببنید شما باید از اول همه تصمیم گیری ها رو بگیرید.
ممبرشیپ خودش یه سمپل قوی که همه چیزو از قبل چک کرده.
باید یه فیلد وضعیت تعریف کنی که موقع ورود اون فیلد مقدار true بشه.

maxpayn2
یک شنبه 21 اسفند 1390, 16:32 عصر
استفاده از ممبرشیپ (با نادیده گرفتن نواقصی که داره) خیلی بهتر از روش شماست ، ولی اگه باز هم بر استفاده نکردن از اون اصرار دارید میتونید یه لیست از یوزر هایی که لاگین هستند رو در Application نگه داری کنید ، یعنی هر کاربری که لاگین شد (Session استارت شد) ID اون رو توی او لیست اضافه کنید و وقتی از سایت خارج شد (Session منقضی شد) ID رو از لیست پاک کنید ، هر جا هم که لازم داشتین آنلاین بودن یوزر رو مشخص کنید چک کنید ببینید توی اون لیست هست یا نه

tahoma
دوشنبه 22 اسفند 1390, 10:10 صبح
با سلام و تشکر من فرصت زیادی ندارم که بخواهم یادگیری membership را شروع کنم اگر دوستان لطف کنند و نمونه کد و یا سایتی را معرفی کنند که من بتوانم از ان استفاده کنم ممنون می شوم . پروژه اصلی من چت دو نفره است به این صورت که وقتی یک کاربر عضو وارد پروفایل یک کاربر عضو دیگر شد و آیکن سبز کنار نام کاربری آن بود به این معنی باشد که این کاربر on است و با او چت کند . در مورد کدهای چت مشکلی ندارم فقط مشکل من در مورد نشان دادن آنلاین بودن کاربر است . با تشکر

mahsa.n
دوشنبه 22 اسفند 1390, 10:51 صبح
اگر ممبرشیپ استفاده میکنید با کد زیر میشود.
MembershipUser user = Membership.GetUser(TextBox1.Text.Trim());
chkOnlineNow.Checked = user.IsOnline;

برای مثال
<asp:CheckBox ID="chkOnlineNow" runat="server" Enabled="false"
style="font-weight: 700" />


من یه مشکلی دارم ، وقتی روی دکمه sign out (کنترل LoginStatus) کلیک میکنم و خارج میشم بازم توی صفحه وضعیت کاربرا اون کاربری که خارج شده هنوز وضعیتش online

mohsen.nsb44
دوشنبه 22 اسفند 1390, 19:02 عصر
اگر ممبرشیپ استفاده میکنید با کد زیر میشود.
MembershipUser user = Membership.GetUser(TextBox1.Text.Trim());
chkOnlineNow.Checked = user.IsOnline;

برای مثال
<asp:CheckBox ID="chkOnlineNow" runat="server" Enabled="false"
style="font-weight: 700" />
دوست عزیز من میخوام همه کاربران انلاین رو نمایش بده البته به این صورتی که خدمتتون میگم
من از membership استفاده کردم و یه جدول دیگه ساختم مثب پروفایل که اطلاعات اون شخص مثل عکس سن و ... درون اون جدولم ذخیره میشه البته تو جدول پروفایل یک فیلد به نام userName گرفتم که همون نام کاربری در membership که ذخیره میشه در این جدولم ذخیره بشه تا قابل شناسایی باشه اطلاعاتش
حالا میخوام بدونم چطور میتونم عکس همه کاربران انلاین رو نمایش بدم

mahsa.n
دوشنبه 22 اسفند 1390, 19:24 عصر
دوست عزیز من میخوام همه کاربران انلاین رو نمایش بده البته به این صورتی که خدمتتون میگم
من از membership استفاده کردم و یه جدول دیگه ساختم مثب پروفایل که اطلاعات اون شخص مثل عکس سن و ... درون اون جدولم ذخیره میشه البته تو جدول پروفایل یک فیلد به نام userName گرفتم که همون نام کاربری در membership که ذخیره میشه در این جدولم ذخیره بشه تا قابل شناسایی باشه اطلاعاتش
حالا میخوام بدونم چطور میتونم عکس همه کاربران انلاین رو نمایش بدم

از یک گریدویو برای نمایش کاربران آنلاین استفاده کن و توی رویداد RowDataBound میتونی از کد زیر استفاده کنی



protected void grdOnlineUsers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string UserName = (((Label)e.Row.FindControl("lblUserName")).Text).Trim();

ProfileCommon p = this.Profile.GetProfile(UserName);

Image imgAvatar = (Image)e.Row.FindControl("imgAvatar");

if (!string.IsNullOrEmpty(p.Image))
imgAvatar.ImageUrl = p.Image;

else
imgAvatar.ImageUrl = "~/userfolder/images/profile/default-avatar.png";


p.image تصویر کاربر هستش که نام تصویر در بانک ذخیره شده

fakhravari
دوشنبه 22 اسفند 1390, 19:37 عصر
خوب باید نام یوزرها را بگیری و اسم عکس هم باید هم نام باشه. حالا این روش من شاید دوستان روش بهتری داشتند.
نمونه
http://www.fakhravary.somee.com/Members_All.aspx

<asp:DataList ID="DataList1" runat="server"
RepeatDirection="Horizontal" CaptionAlign="Top"
HorizontalAlign="Center" RepeatColumns="4" ShowFooter="False"
ShowHeader="False" Width="352px" DataSourceID="SqlDataSource1"
style="font-family: Tahoma; font-size: 10pt" CellPadding="4"
ForeColor="#333333" >
<AlternatingItemStyle BackColor="White" />
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<ItemStyle BorderStyle="Solid" HorizontalAlign="Center" VerticalAlign="Top"
BackColor="#E3EAEB" />
<ItemTemplate>

نام کاربری :&nbsp;&nbsp;<asp:Label ID="UserNameLabel" runat="server" Font-Bold="true" Text='<%# Eval("UserName") %>' />
<a target="_blank" href='<%# Eval("UserName", "../Img/Profile_User/{0}"+".jpg")%>'>
<img src='<%# Eval("UserName", "Img/Profile_User/{0}"+".jpg")%>' Height="150px" Width="150px" style="border-style:none;" /> </a>

</ItemTemplate>
<SelectedItemStyle BackColor="#C5BBAF" BorderStyle="Solid" Font-Bold="True"
ForeColor="#333333" HorizontalAlign="Center" VerticalAlign="Top" />
<SeparatorStyle BorderStyle="Solid" />
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:ConnectionString1.ProviderName %>"
SelectCommand="SELECT distinct [UserName] FROM aspnet_Users order by UserName desc ">
</asp:SqlDataSource>

mohsen.nsb44
دوشنبه 22 اسفند 1390, 19:51 عصر
من یه مشکلی دارم ، وقتی روی دکمه sign out (کنترل LoginStatus) کلیک میکنم و خارج میشم بازم توی صفحه وضعیت کاربرا اون کاربری که خارج شده هنوز وضعیتش online
منم دچار وضعیتی مشابه شدم با اینکه شرط هم گذاشتم اما پس از sign out کاربر انلاین دیده میشه

tahoma
سه شنبه 23 اسفند 1390, 10:46 صبح
دوستان عزیز از بحث و سوال اصلی من خیلی منحرف شدید من گفتم از membership استفاده نمیکنم و نمی خواهم استفاده کنم من از دیتا بیس و session استفاده می کنم لطفا سوال منو یک بار دیگه بخوانید و اگر از دوستان کسی می تونه لطفا کمک کنه با تشکر

neda555
سه شنبه 23 اسفند 1390, 11:22 صبح
سلام دوست عزیز شما از همون session استفاده کن و idکاربر را در session ذخیره کن بعد بیا یه دیتالیست برای نشان دادن نام و عکس و ... کاربر بزار هر جور خواستی طراحیش کن بعد جلوی نام کاربر خارج از دیتالیست یه مالتی ویو یا دوتا پنل بزار اگر از مالتی ویو استفاده کردی داخلش دوتا ویو بزار و داخل یک ویو یک عکس دایره طوسی و داخل دیگری دایره سبز بعد بگو اگر session==null بود ویویی را نشون بده که داخلش دایره طوسی هست و ... اگر درست نشد بگو تا نمونه کد بزارم
این را هی هست که من به ذهنم رسید و مطمئنا راه های بهتری هم هست

tahoma
سه شنبه 23 اسفند 1390, 11:29 صبح
با سلام و تشکر میشه یه نمونه کد برام بگذاری خیلی ممنون میشم. با توجه به این که این عکس ها حالا در هر کنترلی که استفاده بشوند باید برای همه کاربران باشند در صورتی که اگر بیرون دیتا لیست باشند فقط یک بار نمایش داده می شوند.

maryam_vb
سه شنبه 23 اسفند 1390, 15:14 عصر
استفاده از ممبرشیپ (با نادیده گرفتن نواقصی که داره) خیلی بهتر از روش شماست ، ولی اگه باز هم بر استفاده نکردن از اون اصرار دارید میتونید یه لیست از یوزر هایی که لاگین هستند رو در Application نگه داری کنید ، یعنی هر کاربری که لاگین شد (Session استارت شد) ID اون رو توی او لیست اضافه کنید و وقتی از سایت خارج شد (Session منقضی شد) ID رو از لیست پاک کنید ، هر جا هم که لازم داشتین آنلاین بودن یوزر رو مشخص کنید چک کنید ببینید توی اون لیست هست یا نه

اگر Session با بسته شدن صفحه کاربر از بین بره، چطوری میشه اطلاعات کاربر رو از لیست حذف کرد؟

neda555
سه شنبه 23 اسفند 1390, 21:11 عصر
با سلام و تشکر میشه یه نمونه کد برام بگذاری خیلی ممنون میشم. با توجه به این که این عکس ها حالا در هر کنترلی که استفاده بشوند باید برای همه کاربران باشند در صورتی که اگر بیرون دیتا لیست باشند فقط یک بار نمایش داده می شوند.
اینکه بیرون باشه مشکلی نیست چون همه کاربر ها را که با هم نمی خوای نشون بدی آنلاین یا آفلاین هستن قراره وقتی وارد پروفایل کسی میشی وضعیتش معلوم بشه
فقط من خودم چیزی که گفتم تست کردم جواب نمیده
از دوستان می خوام اگر کسی در این مورد میدونه راهنمایی کنه

tahoma
چهارشنبه 24 اسفند 1390, 09:56 صبح
یک راه حل میتونه این باشه که در فیلدهای جدول یوزر یک فیلد با عنوان status از نوع bit با مقدار پیش فرض false تعریف کنیم که زمانی که کاربران لاگین میکنند یعنی سشن آن ها yes میشود این فیلد true شود و زمانی که از سایت خارج می شوند این فیلد falseشود حالا در لیست کاربران آنلاین می توان همه افرادی را که فیلد status ان ها برابر true است نمایش داد.و وقتی به صفحه پروفایل آن ها مراجعه میشود آیکن سبز رنگ نمایش داده شود چون آن کاربران on هستند.

neda555
چهارشنبه 24 اسفند 1390, 11:34 صبح
کدشو نوشتید؟
تا اینجاش درسته بعد موقع پیاده سازی واسه نشون دادن اون آیکن سبز یا توسی در پروفایل مشکل هست :متفکر:

tahoma
چهارشنبه 24 اسفند 1390, 14:04 عصر
تا اینجاش درسته بعد موقع پیاده سازی واسه نشون دادن اون آیکن سبز یا توسی در پروفایل مشکل هست :متفکر:[/QUOTE]
اتفاقا خیلی ساده است وقتی بقیه کاربران به پروفایل این کاربر مراجعه می کنند چون کاربر را از لیست کاربران on انتخاب کرده اند بنابراین همیشه چراغ سبز نمایش داده می شود.

neda555
چهارشنبه 24 اسفند 1390, 14:13 عصر
یعنی چی!ما که نمی خوایم فقط پروفایل کاربر آنلاین را باز کنیم!

fakhravari
چهارشنبه 24 اسفند 1390, 14:51 عصر
دوستان با کد توضیح دهید .
همه میتونند بیان یه تفسیری کنند

tahoma
جمعه 26 اسفند 1390, 22:55 عصر
من یک صفحه گذاشتم به نام صفحه کاربران آنلاین و در این صفحه از یک دیتا لیست برای نمایش آن ها استفاده کردم و شرط نمایش را trueبودن فیلد status جدول کاربران قرار دادم حالا کاربرانی که on هستند در این لیست نمایش داده می شوند و بقیه کاربران با کلیک بر روی نام کاربری ان ها به صفحه ان ها هدایت میشود و می توانند چت کنند تا این جاشو حل کردم از یک سری کلاس های اماده هم برای چت استفاده کردم حالا مشکل این جاست که چطوری به کاربران در خواست شروع گفتگو را ارسال کنیم یعنی کاربر دوم چطور متوجه بشه و قبول کنه و وارد اتاق گفتگو بشه؟