السلام عليكم
اريد في بعض صفحات موقعي انا يسمح فقط للاعضاء الذين سجلوا وتم حفظ بياناتهم في قاعدة البيانات بالدخول فقط.....كيف؟
ارجو منكم المساعدة لأن تسليم مشروعي بعد اسبوع إن شاء الله :(
انا استخدم #VS.NET 2003 asp.net c
السلام عليكم
اريد في بعض صفحات موقعي انا يسمح فقط للاعضاء الذين سجلوا وتم حفظ بياناتهم في قاعدة البيانات بالدخول فقط.....كيف؟
ارجو منكم المساعدة لأن تسليم مشروعي بعد اسبوع إن شاء الله :(
انا استخدم #VS.NET 2003 asp.net c
طيب يا metsy مو لازم نتناقش شوي قبل ما نقلك هادا هوي الحل
المنطق بيقول ... في عملية تسجيل دخول بالموضوع
والمنطق بيقول انو في متحولات عم تتخزن قيمتها بمكان ما
والمنطق بيقول (يحرق حريشو هالمنطق) انو في شي اسمو عملية ابعاد للغير مسجيلن ...
والمنطق بيقول كتير شغلات بس هدول أهم شي رح نشوف كيف رح نحققهم
هلأ شوف معي يا metsy كيف رح نحقق هالموضوع والأهم هو فهم الفكرة وليس الحل دجني دجتك العافية (على قولة ستي)
أول شي في صفحة اسمها تسجيل دخول من خلالها منشوف أنا وانت يا metsy مين هالمستخدم بكودنا
يا ترا هوي موجود في النظام (بظن انو لازم ناخد اسم المستخدم وكلمة المرور من المستخدم)
هلأ اذا بالفعل الزلمة موجود في النظام منبعتو على صفحتو الرئيسية حسب نوع دخولو (هادا الكلام علاك ما بيفيد)
اللي بيفيد هوي انو حفظنا (بياناتوولتكن رقمو المعرف)في متحولات دائمة بدوام الصفحة (يفضل Session)
هلأ في الصفحة اللي ما بدنا يوصللها غير الأعضاء لازم نشوف المتحول اللي فيه رقم المعرف للمستخدم
هل المتحول يحتوي قيمة سالبة أو خالية أو شي غير موجود في النظام (معناها ما سجل دخول الله يصلحو)
منبعتو على صفحة تسجيل الدخول
واذا كان في المتحول قيمة تعني أنه عضو وقتها منخليه يتجول في الصفحة على كيفو لحد ما تتنهي صلاحية المتحول (بترك الصفحة من دون أحداث فترة من الزمن) أو لحتى يغلق المتصفح
هلأ هي فكرة تسجيل الدخول وهالعلاك المصدي تبعها بس الفكرة الأساسية انو بدي شوف المتحول الموجود في Session
شكرا لك Arwany للمساعدة للمرة الثانية :) في الواقع انا لا ادري كيف اعمل ال session لأني بحثت في الموقع واغلب مواضيع ال session عللى مشاريع VB وليس c# وانا لا اعرف اتعامل مع VB
كل الذي اعرفه عن session ان اعمل حاجة في web.conf وبعد كدة اعمل حاجة تانية في الفورم نفسها
بس انا عايزة مش كل المشروع يكون بالتسجيل....انا اريد بعض الصفحات
وكمان عايزة يعمل check على الداتا بيز يشوف المستخدم قام بالتسجيل ام لا ؟
شكرا لك
طيب رح اشرح بشكل سريع ومختصر كيف تعمل Session ونفهم كيف منحقق الموضوع
هلأ لكل عضو مسجل شي اسمو ID في جدول قاعدة البيانات صح ولا لأ ؟؟؟
اذا صح اذا تابع وإلا ... بدي انتف شعري
لساتنا معتبرين انو منعرف شو هادا ID
هلأ شو الفكرة الأساسية ...
انو لكل شخص بيطلب موقعنا العزيز بتنفتحلو Session خاصة فيه لالو بس وبالأصح للمتصفح الخاص فيه بس هوي
طيب ...
أول ما بيطلب الشخص الموقع (أول مرة فقط) رح يتنفذ كود Session_Start واللي فيه رح نضيف بيانات افتراضية لمتحولات ال Session
هلأ مكان كتابة كود الاضافة هو في ملف Global.asax
فقط أضف هذا الملف من اضافة ملف جديد وسترى الكود مكتوب وجاهز لكتابة الكود التالي ضمن الحدث الآنف الذكر
Session.Add("ID",-1);وفي حدث نهاية صلاحية ال Session في نفس الملف Session_End نكتب :
Session["ID"]=-1;
هلأ هيك ضفنا متحول في ال Session وهي قيمة -1 أي أنه ليس مسجل
هلأ في صفحة تسجيل الدخول عند حدث الضغط على زر تسجيل الدخول وبعد اضافة اسم المستخدم وكلمة السر اذا كانتا صحيحتين يجب علينا اسناد
قيمة لهذا المتغير ليصبح العضو صالح لعرض الصفحات الآمنة له
بالكود التالي:
Session["ID"] = id;
حيث id هو متحول أخذناه من استعلام التحقق من صحة المستخدم
هلأ في الصفحة الآمنة رح نحط الكود البسيط هادا:
if(int.Parse(Session["ID"])!=-1)
{
//Kick him out of my secure pages
Response.Redirect("Login_Page.aspx");
}
else
{
//Welcome him as registred user
Title="Welcome as registerd member";
}بتمنى تكون الفكرة العامة وصلت بطريقة استخدام هالمتحولات الخطيرة
لا ننسى اعداد ال Session في ملف الاعدادات web.config كالتالي:
<system.web> <sessionState mode="InProc" cookieless="true" timeout="30"/> </system.web>
حيث قصدنا من ذلك أن معرف ال Sessionالحالية لكل متصفح ستخزن ضمن ال Cookie في ذلك المتصفح فعليه دعمها
وأنها ستنتهي بمدة 30 دقيقة من توقف المستخدم على استخدام تلك الصفحة أو باغلاق المتصفح (تنتهي بعد 30 دقيقة من اغلاق المتصفح ولكن لا تبقى صالحة لشيء)
هذا والله أعلم
تم تعديل هذه المشاركة بواسطة Arwany في 18 يونيو 2007 في 16:26
دلوقتي انا عندي سؤال ( بس من غير ما تنتف شعرك لو سمحت :D ازاي اعمل ال Global.asax دة؟ مفيش حاجة .asax اصلا..... ولا انت قصدك .aspx؟؟؟؟؟؟؟؟؟؟؟؟
وانا معلش اول مرة اتعامل مع موضوع ال session دة .........
اسفة للازعاج :(
بالامكان الاستعانة أيضاً بالكوكيز
وغالباً تستعمل أكثر من ال sessions في ادارة المستخدمين ....
بالتوفيق
يا عم مش محتاج global
بمجرد تسجيل الدخول ... في الأيفينت تبع زرار التسجيل روح اكتب الكود وريح دماغك
وموضوع ال state management سهل جدا وممكن تقراه في عشر دقائق بالضبط من أي مرجع
ادخل الموقع التالي
www.codeproject.com
واعمل بحث عن الموضوع اللي تحب ... واختصر تنتصر
المشكلة ان انتو بتقولو كلام كبير اوي مش قادرة افهم .... انا اول مرة اتعامل مع session ومش عارفة ازاي اعمل كوكيز والحاجات دي
وكمان انا عندي شكوة صغيرة ياريت ادارة الموقع تهتم بيها ....
انا لما ببحث في جزء asp.net بيطلع عيني ....عشان مش مقسمينو c# , VB.net بجد بتعب اوي
ياريت يكون فيه# asp.net Vb , asp.net c ارجوكم
ياريت يا Arwany تكمل معايا الي شرحتو وياريت حد كمان يساعدني .... ومشكور يا the_shadow على مشركتك وانا حشوف السايت الي قولت عليه
طيب انا حاحاول اوضحلكوا انا عايزة ليه ...
انا عندي فورم اسماها Guide.aspx
الفورم دي مش عايزة حد يدخل عليها الا لو مسجل بياناته في فورم
فانا عايزة لو حد حاول يدخل على الفورم guide من غير ما يسجل تظهرله فورم login.aspx
طيب مثلا لو كان واحد مسجل بياناته وكان اسمه Ahmed والباسورد 1234 وعمل تسجيل فعلا ...يبقى الصفحة ممكن يشوفها
دلوقتي انا لما بحثت في السايت لقيت ناس بيتكلوما عن انهم يحوّلوا شوية حاجات في ال web confg. يعني مثلا بدل كلمة windows تبقى froms وبدل allow user يعمل deny بس اللي فهمته ان كدة حيتعمل على كل الفورمات مش بس الفورم الي انا عايزاها ....و مفهمتش باقي الحاجات عشان كانوا بيتكلوما عن vb :(
يارييييييييييييييتتتتتتتتتتتتت حد يساعدني ارجوكوووووووووووووووووووو
Arwanyyyyyyyyyyyyyyyyyyyyyyyyyy
انا عملت ال Global.asax :D وعملت كل الي قلت عليه الحمدلله بس ماعدا شىء واحد
(بس ارجوك من عير ما تنتف شعرك لوسمحت :D)
انا مش عارفة ازاي اتأكد من ان الاسم والرقم السري صحيح زي اللي موجود في الداتا بيز ( زي اللي المستخدم ادخلهم في مرحلة SIGNUP! )
ممكن تقوللي ازاي عشان برده اللي لقيته في السايت هنا vb مش C#
طيب لما المستخدم يدخل اسمه والباسوورد ويعمل تسجيل دخول
اعملي sqlDataConnetion بعدين اعملي منه sqlCommand
ثم اعملي داتا ريدير sqlDataReader
والكوماند يكون بيعمل
select username,password from yourdb where username='usernametextbox.text'
بعدين اعملي مقارنة اللباسورد اللي في الفورم مع محتويات الكولم الثاني في الداتا ريدر
طبعا الداتا ريدر لو رجعت null من البياناتمعناها ان المستخدم مش موجود وتملي ريديركت للصفحة اللي تريديها
response.redirect("yourpage.aspx")
سلام
ايوة انا عارفة اني لاز اعمل ريد للداتا الي داخلها اليوزر .... وكمان اعمل ريد لكل الداتا في قاعدة البيانات .... لكن ازاي المقارنة ...؟..... هي اكيد if بس مش عارفة اكتبها صح ...انا بحاول اعملها لكن مش بتيجي معايا :(
اقتباسايوة انا عارفة اني لاز اعمل ريد للداتا الي داخلها اليوزر .... وكمان اعمل ريد لكل الداتا في قاعدة البيانات .... لكن ازاي المقارنة ...؟..... هي اكيد if بس مش عارفة اكتبها صح ...انا بحاول اعملها لكن مش بتيجي معايا
لو افترضنا ان ال textbox للمستخدم وكلمة السر هي بالترتيبtextboxuser ,,,textboxpass
وافترضنا انك عملتي الداتا ريدير بشكل صحيح واسمه rd
على اساس انه سيستعلم فقط عن اسم المستخدم وكلمة السر
ببسطاة الكود كالتالي
rd.read();
if (rd[0].toString()!=""&&rd[1].toString()==textboxpass.text)
//يعني اسم المستخدم موجود ومش فاضي وكلمة السر في التكست بوكس تساوي ما قرأه الريدر من قاعدة البيانات
// هنا نكتب الكود المراد تنفيذه بعد نجاح التحقق من المستخدم
else
{
// هنا نكتب الكود الذي ينفذ في حالة عدم صحة كلمة السر أو عدم وجود اسم المستخدم أصلا
}
شكرا لك يا شادو بس طلع error
'object' does not contain a definition for 'toString'
دة في الجزء rd[0].toString
وكمان في الكود الخاص ب Arwany
The best overloaded method match for 'int.Parse(string)' has some invalid arguments
ودة في جزء الصفحة الامنة int.parse
وكمان بيقولي ان id مش متعرفة في السايت مع اني عملت جزء الويب كنفج.
انا اسفة انا عارفة اني مزعجة بس معلش ساعدوني لأنه مشروع تخرجي
يجعله في ميزان حسناتكوا إن شاء الله
طيب هلأ اذا بدنا نحكي بشكل منطقي شوي لازم (متل ما اتفقنا) يكون في معرف لكل زائر يخزن في متحولات ال Session اللي كمان اتفقنا انو هي المتحولات رح تضل متوفرة طيلة فترة زيارة المستخدم للصفحة
والهدف من Global.asax هي أنه لما تنتهي صلاحية هي المتحولات تعطى قيما افتراضية
هلأ بالنسبة لعملية التحقق قوم بالتالي:
SqlConnection conn = new SqlConnection("Connection String Here....");
string SQL="SELECT ID FROM User_Tbl Where UserName='"+txt_Username.Text.Replace("'","''")+" AND Pasword='"+txt_Password.Text.Replace("'","''");
SqlDataAdapter da= new SqlDataAdapter(conn,SQL);
int id=0;
try
{
conn.Open();
Dataset ds=new Dataset();
da.Fill(ds);
if(ds.Tables[0].Rows.Count>0)
id=int.Parse(ds.Tables[0].Rows[0].ItemArray[0].ToString());
if(id>0)
{
Session["ID"]=id;
//User OK
}
else
{
Session["ID"]=-1;
//Login Error
}
}
finally
{
conn.Close();
}هادا كود التحقق من اسم المستخدم وكلمة السر (متضمنا تفادي تجاوز كلمة السر بحقن SQL وهي الطريقة الأولى لمحاولة اختراق أي موقع)
هلأ الموضوع التاني هو وضع كود ارساله الى صفحة تسجيل الدخول اذا لم يكن مسجل يذهب لصفحة تسجيل الدخول
هلأ اذا راح لصفحة تسجيل الدخول فيك تبعت معو باراميتر في الرابط كالتالي مشان يرجع للصفحة الآمنة بعد تسجيل الدخول وكل هالشي اختياري
Response.Redirect("Login.aspx?URL=Guide.aspx");
هلأ في صفحة تسجيل الدخول وبعد التحقق من صحة دخوله يمكنك فحص قيمة المتحول URL من الرابط اذا لم تكن خالية فيمكنك ارساله إليها مرة اخرى وهكذا يتم تحقيق أفضل نتيجة
صباح الخير يا Arwany
انا جربت الكود لكن عندي errors
الاول : The best overloaded method match for 'int.Parse(string)' has some invalid arguments
ودة في جزء الصفحة الامنة int.parse
الثاني انه مش راضي يعمل creat ل dataset مش عارفة ليه ..... مع اتي عاملة using system.data.sqlclient
ياريت طيب اي حد يتابع الموضوع ويشف الكود ليه مش شغال :(
غريبة ... ممكن ارفاق ملف صفحة الدخول للتأكد بالله...
ها ايه الاخبار ؟
طيب اي حد بالله عليكوا يشوف الملف ويقول ايه الغلط لأنه مهم اوي
Arwany انا ارفقت الملف زي ما طلبت ..... عرفت تصلّح اي حاجة ولا لأ ....ياريت ترد عشان لو مفيش امل احاول ادور على اي بديل
طيب شو الخطأ اللي عم يواجهك.
انت مستخدم 2003 صح ؟
بس ممكن صورة عن الخطأ وان شاء الله بتنحل المشكلة
انا كل ما اعمل run بيطلع اخطاء :
'object' does not contain a definition for 'toString'
دة في الجزء rd[0].toString
وكمان فيThe best overloaded method match for 'int.Parse(string)' has some invalid arguments
ودة في جزء الصفحة الامنة int.parse
وكمان بيقولي ان id مش متعرفة في السايت مع اني عملت جزء الويب كنفج.
انا استخدم #VS.NET 2003 asp.net c
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…