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

ادخال قيم صحيحه ضمن مجال معين

بدأه زهرة الشتاء في 21 يونيو 2012 · 8 رد · 1,521 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

صممت نموذج تعبئه بيانات اسم المستخدم و الرقم السري و الايميل

هذا هو الكود

<html dir="rtl">



<form method="POST" action="view.php">

<table border="1" width="100" height="100" align="center" style="font-family: Tahoma; font-size: 8pt">

		<tr>

			<td width="130" align="center"   > <font size="2">اسم المستخدم</font></td>

			<td width="181" align="center">

			<input type="text" name="_Name" size="20"></td>

		</tr>

		<tr>

			<td width="130" align="center"> <font size="2">االرقم السري   </font></td>

			<td width="181" align="center">

			<input type="text" name="_No" size="20"></td>

		</tr>


		<tr>

			<td width="130" align="center"> <font size="2">البريد الكتروني  </font></td>

			<td width="181" align="center">

			<input type="text" name="_No" size="20"></td>

		</tr>




		</table>

</form>

</html>

أريد تخزين هذه القيم في الداتا بيس لكن كيف ممكن أتحقق من ان اسم المستخدم فقط عباره عن حروف بطول معين و كذلك الرقم السري كيف أتحقق انه عباره عن ارقام فقط و أيضا الايميل كيف أضبظ انو يكون بصيغة ايميل يعني ------ @hotmail.com

ممكن المساعده انا جديده في مجال php

تم تعديل هذه المشاركة بواسطة زهرة الشتاء في 21 يونيو 2012 في 17:08

#2

السلام عليكم

بالنسبة لعملية التحقق من المدخلات تتم من جهتين إما من جهة المستخدم على المتصفح وهذا يتم من خلال لغة javaScript أو من خلال لغة السرفر وهنا طبعاً نستخدم php , والأفضل طبعاً عمل عمليتى التحقق معاً من خلال javaScript لسهوله وسرعة عملية التحقق وعدم الإنتظار حتى يتم مخاطبة السرفر ثم الرد وأيضاً التحقق من خلال لغة السرفر "php" حتى نضمن عدم التلاعب أو حتى فى حالة تعطيل الـ javaScript من قبل المستخدم .

ولكن الآن بما أنك تريدين هذا على لغة PHP فـلها طرق عديدة من خلالها يمكن التحقق من المدخلات ومن أفضلها إستخدام الـتعابير المنتظمة "regular expression" وهى مشتركة فى أغلب لغات البرمجة وبالتالى لن يكون هناك صعوبة لأنك ستستخدمى نفس التعابير المنتظمة على php و javaScript .

إذاً عليك بدراسة التعابير المنتظمة وهذه بعض الروابط :

http://perldoc.perl....lar-Expressions

وهذا رابط أخر به شرح ويمكنك تجربة التعابير مباشراً عليه

http://www.zytrax.co...h/web/regex.htm

بالنسبة لإستخدامها فى لغة php فيوجد دوال مخصصة لها وتسمى دوال التحقق والإستبدال وما نحتاجها هنا هى دالة preg_match وهى تأخذ مدخلين الأول عبارة عن التعبير المنتظم والأخر هو السلسة النصية المراد تطبيق التعبير عليها وللتحقق من أن القيمة المدخلة هى فى شكل بريد إلكترونى يكون الكود كالتالى :

preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,5})$/",$mail)

وهذه الدالة تعود بقيمة true إذا كانت القيمة الموجودة فى المتغير mail$ هى عبارة عن بريد إلكترونى وتعود بالقيمة false إذا لم تتحقق شروط البريد الإلكترونى الموضوعة .

وللتحقق من اسم المستخدم وليكن نحن نريده يتكون من 10 من الأرقام والحروف الإنجليزية الكبيرة والصغيرة فقط لا غير, يكون الكود كالتالى :

preg_match("/^[a-zA-Z0-9]{10}$/",$username)

طبعاً تعود بالقيمة true إذا حققت شرط التعبير النظامى وتعود بـ false إن لم يتحقق .

وأيضاً الرقم السرى ولنفرض أننا نريده أرقام فقط بطول من 6 إلى 14 رقم يكون الكود كالتالى :

preg_match("/^[0-9]{6,14}$/",$password)

وعلى هذا يمكن إستخدام التعابير النظامية كيفما نشاء فى التحقق من المدخلات وبنفس التعابير أيضاً يمكن إستخدامها للتحقق فى لغة javaScript بإستخدام دوال التحقق والإستبدال فى تلك اللغة.

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#3

شكرا جزيلا و رح أدرس الموضوع لكن انا اريد اسم المستخدم باللغة العربيه هل يوجد لها حل ؟

#4

السلام عليكم

إن شاء الله يوجد لها عده حلول وهذا أحد الحلول بإستخدام التعابير المنتظمة وطبعاً سنعمل على ترميز utf-8 الداعم للغة العربية .

وهذا الكود يقبل جميع حروف و رموز وأرقام اللغة العربية :

preg_match("/^[\x{0600}-\x{06FF}]+$/u",$username)

ومدى رموز اللغة العربية فى الترميز utf-8 يبدأ من 0600 إلى 06FF وإن أردنا الإختيار من بينها يمكن الإطلاع على هذا الرابط لنتعرف على كود الأحرف والرموز التى نريدها .

وعلى سبيل المثال نحن نريد فى اسم المستخدم أن يكون بالحروف العربية المعتادة فقط فيكون الكود كالتالى :

preg_match("/^[\x{0621}-\x{063A}\x{0641}-\x{064A}]+$/u",$username)

طبعاً لم أقم بإضافة التشكيل والأرقام العربية والرموز الأخرى المتبقية من رموز اللغة , إذا أردنا حروف أخرى غير هذه الحروف يجب الإطلاع على جدول الرموز فى الرابط أعلاه ثم إضافة أو حذف رموز من التعبير المنتظم .

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#5

أخي الكريم الداله

preg_match("/^[\x{0621}-\x{063A}\x{0641}-\x{064A}]+$/u",$username)

لا تعمل بشكل مظبوظ ؟

#6

السلام عليكم

اقتباس
لا تعمل بشكل مظبوظ ؟
ياريت أخى تشرح لنا حتى نستطيع إفادتك .

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#7

انا فهمت بعض الرموز

\x{}

تطابق النص ب نظام الهكسا

و الرمز هذا

^

مطابقة أول النص

و الرمز

$

مطابقة اخر النص

الرمز

u

هوي الترميز utf-8

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

أنا صممت فورم نموذج تسجيل و استخدمت للتحقق من الاسم باللغة العربيه استخدمتها هكذا

else if(!preg_match("/^[\x{0621}-\x{063A}\x{0641}-\x{064A}]+$/u",$studentname)){
echo "
<script language='javascript'>
alert('الاسم يجب ان يتكون من حروف عربية فقط');
</script>
";

}

دخلت الاسم باللغة العربيه في الفورم لكن هذه جملة if else يدخل عليها و تظهر مسج انو الاسم يجب ان يتكون من حروف عربية فقط' مع انو الاسم أدخلته باللغة العربيه

ماذا افعل ؟

#8

السلام عليكم

بالفعل عاودت إختبار الكود فوجدته لا يعمل إن كان هناك مسافة خالية space بين كلمتين لأنى وضعت المجال لحرف اللغة العربية فقط ولتعديل الكود فقط سنضيف كود hexdec للـ للمسافة الخالية space وهو 0020 ضمن مجال اللغة الإنجليزية ويصبح الكود على الشكل التالى :

	if(!preg_match("/^[\x{0600}-\x{06FF}\x{0020}]+$/u",$studentname)){
		echo "
		<script language='javascript'>
		alert('الاسم يجب ان يتكون من حروف عربية فقط');
		</script>
		";
		}

وأيضاً لاحظت فى إستخدام الـ hexdec لمجال اللغة العربية حتى من 0600 إلى 06FF لا يدعم الحرف "ﻵ" والحرف "ﻷ" , لا أعلم لماذا حقيقاً , وأيضاً لم أجده فى هذا الرابط لمدى رموز اللغة العربية بالترميز utf-8

1

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#9

شكرا جزيلا أخي :)

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