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

حفظ البيانات في Form خلال التصفح

بدأه NamiRobin في 7 مايو 2011 · 12 رد · 924 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي السيناريو التالي :

عندي الcomponents التالية : صفحتين و زر "التالي " وزر "السابق"

في الصفحة الأولى عندي Form و عليه فالمطلوب أن يتم تعبئة هذا الفورم و النقر على زر التالي, للذهاب للصفحة الثانية.

المشكلة :

عند النقر على زر السابق للعودة للتحقق من البيانات في الصفحة الأولى أو القيام بتعبئة حقل ما ... أجد أن الحقل تم تنظيفه بالكامل :)

المطلوب : في حالة التصفح من خلال bread crumbs أو من خلال الNavigation المطلوب و العودة لتلك الصفحة أن يبقى الForm

محتفظ بالقيم السابقة بدون "تنظيف" ريثما تتم الخطوة النهائية بحفظ البيانات في قاعدة البيانات أو الخروج من الsession

ملاحظة : أن لا أريد الحلول باستخدام الكوكيز أو السيشن ... أريد حلا أكثر أمانا ...

بخصوص الكود للذي سيطلب مني الكود شوي صعب لاني بشتغل على Ibm webSphere portlet factory

أريد حل يتسم بأنه Generic عام و انا سأسقطه على عملي و شكرا لكم

Senior JEE Developer

IBM WebSphere Speccialist

logo_ibm_certified.gif

#2

بسيطة جدا فى زر الرجوع الى الخلف لا تعطيه عنوان الصفحة السابقة حتى لا يعيد تحميلها من جديد

ولكن اربطه بالحدث back فى javascript

على كل هذا مثال يوضح الطريقة

test.html

<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
	<title></title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
  	<h1> welcome </h1>
  	<br/>
  	<form action="page2.html">
      	<input type="text" name="name"/>
      	<input type="submit" value="next"/>
  	</form>
  </body>
</html>

page2.html

<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
	<title></title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
  	<p> welcome in page2</p>
  	<form name="frm">
      	<input type="button" name="back" value="BACK" onclick="javascript: history.back(0)"/>
  	</form>
  </body>
</html>

بالتوفيق

1


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

الأنفال ۳۳                                  
 

#3

جزاك الله خيرا أخي الكريم ..

لكن السؤال الذي أطرحه الآن ..

الحل الذي ذكرته أنت ... client -side

ماذا لو قام "user" أفندي ... بتعطيل الجافا سكربت مثلا من البرواسر .. الأ يوجد حل ممكن في server - side ؟

Senior JEE Developer

IBM WebSphere Speccialist

logo_ibm_certified.gif

#4
NamiRobin كتب:

جزاك الله خيرا أخي الكريم ..

لكن السؤال الذي أطرحه الآن ..

الحل الذي ذكرته أنت ... client -side

ماذا لو قام "user" أفندي ... بتعطيل الجافا سكربت مثلا من البرواسر .. الأ يوجد حل ممكن في server - side ؟

يتحمل نتيجة غلطه ويعيد ادخال البيانات مرة اخرى :)

الطريقة الاولى انت تعرفها وهى حفظ البيانات فى session or cockies واعادة ملأ الحقول عند العودة الى الصفحة مرة اخرى

واظنها مكلفة لك انت او للخادم server مما يؤثر على اداء الموقع عموما

اظن لا توجد مشكلة بحلى فهو فى نظرى افضل الحلول المتاحة (مع خبرتى القليلة طبعا)

ولك حرية الاختيار فى النهاية موفق باذن الله

تحياتى


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

الأنفال ۳۳                                  
 

#5

بارك الله فيك ...

و جزاك الله خيرا أخي ..

عندي سؤال في نفس السياق ..

على هناك طريقة تجعلني أحتفظ بالبيانات في الform بعد refresh لل page ؟

Senior JEE Developer

IBM WebSphere Speccialist

logo_ibm_certified.gif

#7
NamiRobin كتب:

ملاحظة : أن لا أريد الحلول باستخدام الكوكيز أو السيشن ... أريد حلا أكثر أمانا ...

بخصوص الكود للذي سيطلب مني الكود شوي صعب لاني بشتغل على Ibm webSphere portlet factory

أريد حل يتسم بأنه Generic عام و انا سأسقطه على عملي و شكرا لكم

للتوضيح فقط

جميع الحلول غير آمنة بنفس المقدار:

* cookies

* url

* javascript

فكلها يتم ارسالها plaintext

اذا اردت ان تشفر تلك المعلومات فستخدم https

اذا استخدمت ال cookies في تخزين بيانات الفورم مباشرة ربما ستنصدم بالسقف الاقصى لعدد وحجم الكوكيز

لذا ستجد نفسك مضطرا لإستخدام GET requests والذي يحتوي على محدودية في بعض المتحصفات.. لكن المتصفحات لا تضع اي محدودية الآن لانه حسب معيار URI لا يوجد أي سقف اقصى او ادنى.

قديما كان ممكن تستخدم POST request حتى تتجنب مشكلة السقف الاقصى الذي كان يستخدمه بعض المتصفحات فيما يتعلق ب GET (والذي كان اجتهادا من عندهم. مثلا حسبما اذكر IE6 كان حدها الاقصى 1024 لكن لست متاكدا من الرقم بالتحديد)

افضل حل هو اذا كانت بياناتك كبيرة ان تخزنها في قاعدة بيانات على الخادم، وتربط بينها وبين المستخدم بواسطة session ID بواسطة الcookies او URI parameters

واذا كانت صغيرة تمررها بالURL وحتى تتجنب الكوكز لانه المستخدم ممكن يقوم بdisable للكوكيز وهكذا ربما تواجه مشكلة توافقية معهم.. بعض الناس يضعه في الكوكيز لانه اسهل في البرمجة (لا تحتاج تمريره في جميع الURLs)

اضافة: الربم 1024 هو عدد الحروف characters في الURL

2

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#8

@password123

بالنسبه لموضوع ال HTTPS ... أظن أنها شئ مبالغ فيه مع السيناريو قيد السؤال..

@NamiRobin

اقتباس
ماذا لو قام "user" أفندي ... بتعطيل الجافا سكربت مثلا من البرواسر .. الأ يوجد حل ممكن في server - side ؟

laugh.gif صعب جدا هذا الإفتراض ... لأن هناك Framwroks كاملة تعتمد على الجافاسكريبت بنسبة 100% مثل GWT و أخواتها و كذلك Wt ...

#9

هويدي

اسهل طريقة لجعل الsessions آمنة هي https

بينما جميع الطرق الاخرى التي تم عرضها غير آمنة اطلاقا بالتساوي

وسؤال المستخدم هو عن الامان

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#10

لو أن المعلومات التي يريد إرسالها من صفحه للثانيه تتطلب إرسالها عبر ال HTTPS .. مثل المعلومات البنكيه أو CreditCard info .. فليس هناك غبار ..

أما إذا كان الموضوع مجرد إرسال بيانات من صفحة للأخري فإن حقا موضوع ال HTTPS سيكون عبء على الخادم و في التطوير و الإعداد

#11

السائل يطلب معرفة طريقة لزيادة الأمان... ونحن نعطيه الطريقة

سواء يريد:

* حماية معلومات بنكية

* حماية صور شخصية

* ... الخ

فهذا ليس عملنا. الذي يحدد مستوى الأهمية للشيء المحميّ هو صاحب الشيء. ولسنا نحن.

السائل كان يظن ان النقل بالكوكيز اقل امانا.. ووجب علينا تنبيهه ان الكوكيز او url او javascript كلها غير محمية بالتساوي.

ومسألة عبئ على الخادم ولا غيرو فهذا خارج عن سؤال السائل.

بالنسبة للعبئ على الخادم فليس ملحوظا.. العبئ يكون فقط عندما تتم عملية التشفير الأولية لكلمات السر التي تم توليدها عشوائيا. لانها تتم بواسطة asymmetric ciphers

لكن بعدها جميع التشفير وفك التشفير يكون symmetric ciphers وهذا خفيف. بل أن سرعته اسرع بكثير من سرعة القراءة من الديسك (عنق الزجاجة ليس المعالج وصعوبة التشفير)

بالنسبة للعبئ في التطوير فلا اختلاف اطلاقا... البرامج تعمل بشفافية تامة 100%. بل و حتى الـhttps ليس إضافة ملحوظة على http

لأن الـhttps هو فقط HTTP يعمل فوق طبقة TLS... لا اكثر ولا اقل

يعني ممكن تشغل stunnel وثم تدخل فيه ترافك HTTP ويكون الناتج == HTTPS

بالنسبة للإعداد فليس صعبا كذلك... كلها على بعضها ثلاث خطوات:

* انشئ private key + signing request

* احصل على signed key والذي هو x509 certificate

* ضع الملفات في خادم الويب.... وانتهى

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#12

شكرا على المعلومات يا حج password..

و ياريت تحاول تضع درس تشرح فيه الموضوع ده بالتفصيل عشان الأعضاء تستفيد .. ( و ألهم أنا laugh.gif)

#13

بلاش فضايح انا سرقت نقلت من ويكي بيديا ومنتديات ثانية :ph34r:

خليها تعدي على خير ونقف عند هذا الحد ونا مبسوط قليلا ونا نافخ في صدري :D

ممكن ناخص صورة ونا في هذه الوضعية.. بسرعة قبل مايفلت الزرار ونا نافخ في نفسي :cool:

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…