الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

validation with database

بدأه abu.fawzi m في 2 مايو 2012 · 5 رد · 555 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

الموضوع باختصار شديد

اريد عمل نظام دخول يتكون من اسم مستخدم و كلمة مرور

النظام عندي شغال ميه ميه الحمد لله و مربوط بقاعدة بيانات باستخدام odbc وكلو تمام

ولكن عملية التحقق من اسم المستخدم و كلمة المرور لم تنجح معي وانا على هذا الحال منذ اكثر من اسبوعين

و هذه اول مره اشارك في منتدى وارجو ان استفيد من خبراتكم

وهنا سأضع الجزء الذي اريد ان تساعدوني بفكرتكم عن حل هذه المشكلة

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn = DriverManager.getConnection("jdbc:odbc:mr","","");

Statement st = conn.createStatement();

ResultSet rec = st.executeQuery("SELECT MChatID, Password FROM m");

while (rec.next()) {

String x = login.getText();

String y = pwd.getText();

if (x.equals( rec.getString("MChatID"))) {

if (y.equals( rec.getString("Password")))

{

c1 = new client1(this);

//System.out.println("Logged in!");

}

else

{

login.setText("Invalid Login");

//System.out.println("Password did not match username!");

}

}

else {

login.setText("Username did not match the database");

}

}

st.close();

}

catch(SQLException d) {

System.out.println(e.toString());

} catch(ClassNotFoundException f) {

System.out.println(e.toString());

}

#2

هل pwd عبارة عن JPasswordField?

إذا كان كذلك استخدم getPassword بدلاً من getText

أو هكذا أذكر

تحياتي

1
حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

ممكن اقترح التالي

  
try {
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  Connection conn = DriverManager.getConnection("jdbc:odbc:mr", "", "");
  Statement st = conn.createStatement();
  boolean loginOk = false;
  while (!loginOk) {
    	String x = login.getText();
    	String y = pwd.getText();
 		ResultSet rec = st.executeQuery("SELECT MChatID, Password FROM m "
        	+ " where MChatID='" + x + "' and Password='" + y + "'");
    	if (rec.next()) {
    		c1 = new client1(this);
   		loginOk = true;
  	//System.out.println("Logged in!");
 	} else {
  		login.setText("Invalid Login");
	}
  }
  st.close();
  conn.close();
} catch (SQLException d) {
  System.out.println(e.toString());
} catch (ClassNotFoundException f) {
  System.out.println(e.toString());
}

لاحظ انك لم تعط المستخدم فرصة للخروج دون اكمال عملية التسجيل

ممكن ان تضع عملية سؤال ان كان لم يدخل شيء يخرج من ال while

1

عندما تريد أن تتعلم جافا بالفيديو إليك قنوات الYouTube الخاصة بقسم الحاسب الآلي

أ. فاضل خداده

أ. عبدالعزيز الرومي

أ. وحيد الساير

(وَمَا أُوتِيتُمْ مِنْ الْعِلْمِ إِلاَّ قَلِيلاً) [سورة الإسراء: الآية 85]

#4

كما قال الاخ علاء

اقتباس

إذا كان كذلك استخدم getPassword بدلاً من getText

ثم انه يفضل من الاساس ان تعزل كل فئة عن الاخرى

كأن تجعل هذه الدالة تستقبل نصين two string arguments

public bool login(String user_name,String pwd){
}

ResultSet rec = st.executeQuery("SELECT MChatID, Password FROM m "
                + " where MChatID='" + x + "' and Password='" + y + "'");

اخى الساير وقعت فى المحظور :)

اذا قرأت عن عمليات الحقن لقواعد البيانات Sql Injection والمستخدمة فى سرقة المواقع ستعرف ان هذا الكود ما ينتظره ال :ph34r: :ph34r: :ph34r: hackers

لا تستخدم هذا الاسلوب ابدا

يمكنك تعديلها الى

select password from users where user_name = x;

ثم تقارن بين كلمة السر المعادة من الاستعلام مع y

تحياتى

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 3 مايو 2012 في 00:53

2


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#5
MOHAMED FATHEI كتب:

اخى الساير وقعت فى المحظور :)

كلام معقول

جزاك الله خير

اردت ان يبتعد صاحب السؤال عن استرجاع جميع البيانات كما هو في sql ويكتب while للبحث عن النتيجة المطلوبة في جميع السجلات!!

1

عندما تريد أن تتعلم جافا بالفيديو إليك قنوات الYouTube الخاصة بقسم الحاسب الآلي

أ. فاضل خداده

أ. عبدالعزيز الرومي

أ. وحيد الساير

(وَمَا أُوتِيتُمْ مِنْ الْعِلْمِ إِلاَّ قَلِيلاً) [سورة الإسراء: الآية 85]

#6

اول شيء

كل الشكر لكم اخواني انكم لم تخيبو ظني بالمنتدى الرائع :)

مشكورين على مجهودكم :)

اخ علاء pwd هو عباره عن JtextField

pwd.setEchoChar('$');

مشكور اخ وحيد :)

انا درست هذا الموضوع عن طريق بحثي من خلال شبكة الانترنت لاطور نفسي بعيدا عن الجامعة

فمعلوماتي غير قوية كفايه عن الحماية و كيف يفكر الهكر

مشكور اخ محمد على التوضيح

و كل نصائحكم لي حفرت بالذاكرى :)

وقيد التنفيذ

مواضيع مشابهة