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

مشكله تسجيل الدخول لليوزرات العربيه

بدأه empror9 في 2 نوفمبر 2012 · 13 رد · 1,447 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عملت سكربت بسيط لتسجيل الدخول، واجهت مشكله بالبدايه في عرض اللغه العربيه لكن الان كل شئ تمام.. اذا كتبت اسم اليوزر باللغه الانجليزيه يسجل دخول بشكل ممتاز، لكن اذا سجلت دخول بأي يوزر عربي يخبرني بأنه لايوجد عضو بهذا الاسم مع العلم اني سجلت حساب جديد بنفس اليوزر العربي.

خلاصة المشكله اليوزرات الانجليزيه تعمل عند تسجيل الدخول لكن اليوزرات العربيه لا تعمل، ايضا اليوزرات العربيه لا استطيع عرض بياناتها مثل العمر والدوله .. الخ عكس اللغه الانجليزيه

قمتب حفظ جميع الملفات بهذه الصيغه

utf-8 without bom

الكلوكشن تبع الداتا بيس utf8_general_ci

بعض الملفات ماتقبل تكون utf-8 without bom لانها دوال فقط بدون وجود اي حرف عربي، هل المشكله من هنا؟ يكون ترميزها ANSI

شكرا لكم

ملاحظه: هذي المشكله غير موجوده ابدا على السيرفر المحلي لكن عندما نقلت الملفات الى استضافتي الخاصه ظهرت هذه المشكله بجانب العديد من المشاكل مثل طباعه احصائيه اليكسا وغيرها من الدوال التي تعمل بشكل ممتاز على السيرفر المحلي.

تم تعديل هذه المشاركة بواسطة empror9 في 2 نوفمبر 2012 في 21:30

#2

السلام عليكم

بشكل عام عليك ضبط الترميز في الأشياء التالي ذكرها لحل أي مشكلة تواجهك في الترميز مع اللغة العربية :

- محرك قواعد البيانات .

- قواعد البيانات .

- لغة البرمجة التي تستخدمها .

- لغة الهيكلة HTML أي تعريف ترميز الوثيقة .

- ترميز الملفات .

بالنسبة للمشكلة التي طرحتها بما أن السكريبت يعمل معك بشكل جيد على الإستضافة المحلية فالمشكلة فى الغالب فى ترميز محرك قواعد البيانات

- أضف الإستعلام التالي قبل إنشاء إستعلام على قاعدة البيانات :

"SET NAMES 'utf8'"

عليك التحقق من الآتي :

- أن يكون ترميز قاعدة البيانات وترميز الجدول وترميز الحقل كلهم هو utf8_general_ci

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

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

#3

استضافتك مجانية او مدفوعة ؟؟

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#4

وعليكم السلام

اشكرك على كلامك الجميل، محرك قاعده البيانات على السيرفر المحلي والاستضافه المشتركه UTF-8 Unicode (utf8)

بالنسبه لقاعده البيانات قمت بالتاكد من جميع الترميزات للقاعده والجداول والحقول، لغة HTML صحيحه وقد تأكدت منها

	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

، ترميز الملفات ا ستخدمت utf-8 without bom لكن يوجد بعض الملفات مثل ملف خاص للدوال لا يقبل الترميز هذا وعندما اقوم بتغييره يعود كما كان (ANSI). استخدم notepad++

بالنسبه للكود

"SET NAMES 'utf8'"

جربته من قبل لكن لم يعمل معي ابدا، بالمناسبه عندما اتخرج جميع الحقول تظهر بالعربي بشكل ممتاز وعند التسجيل ايضا يظهر مرحبا بك ثم اسم المستخدم بالعربي لكن عند تسجيل الخروج ومعادوة تسجيل الدخول لا يعمل اما باليوزر الانجليزي يعمل

هذا الميثود تبع تسجيل الدخول

	public function login($username, $userpass)
	{
		$userpass = md5($userpass);

		if(empty($_POST) === false)
		{
			if(empty($username) or  empty($userpass))
			{
				echo '<div class="search_field"><b>معلومات الدخول خاطئه</b></div>';
			}else{
				$result = @mysql_query("SET NAMES 'utf8'");
				$result = mysql_query("SELECT * FROM users WHERE username='$username' AND userpass='$userpass'");

				while($row = mysql_fetch_assoc($result))
				{
					$user = $row['username'];
					$pass = $row['userpass'];
				}

				if($username == $user and $pass == $userpass)
				{

					echo '<div class="search_field"><b>تم تسجيل الدخول بنجاح .. الانتقال الى الصفحه الرئيسيه</b></div></ br>';
					echo'<meta http-equiv="REFRESH" content="3;url=index">';
					$_SESSION['username'] = $username;
					$_SESSION['userpass'] = $userpass;

				}else{
					echo '<div class="search_field"><b>لا يوجد عضو بهذا الاسم الرجاء تأكد من معلومات الدخول</b></div>';
				}
			}
		}
	}

تحديث: استضافتي مدفوعه اخي الكريم

تم تعديل هذه المشاركة بواسطة empror9 في 3 نوفمبر 2012 في 01:42

#5

طيب جرب تعمل طباعة لمتغير اسم المستخدم وشوف كيف ينطبع

echo $username

تم تعديل هذه المشاركة بواسطة M.B.O في 3 نوفمبر 2012 في 02:40

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#6

السلام عليكم

- الملف الذي لا يقبل أن يكون utf-8 without bom قم بتحويله إلى utf-8 وإن كان الملف يحتوي على أكواد تتعارض من ترميز utf-8 كـ namespace فعليك عمل ملف جديد بترميز utf-8 without bom ونقل الكود له .

- إطلع على كيفية عرض البيانات من خلال phpmyadmin وهل تظهر اللغة العربية بشكل جبد أم لا .

- الأمر التالي :

"SET NAMES 'utf8'"

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

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

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

#7

احبتي الكرام لاحظت شئ جديد، اليوزرات التي قمت بتسجيلها على السيرفر المحلي استطيع تسجيل الدخول بها على موقعي حتى لو كانت عربيه، لكن الحسابات الجديده العربيه التي اقوم بأنشائها عبر الموقع لا استطيع تسجيل الدخول بها، لا استطيع الحصول على اسم اليوزر نيم من قاعده البيانات، هذا الكود لدي

	public function addUser($username, $userpass, $useremail, $country, $contact, $registerdate, $rate)
	{
		if(empty($_POST) === false)
		{

			$match = @mysql_query("select username,useremail from users where username='$username' or useremail='$useremail'");
			$rows  = @mysql_num_rows($match);

			if(empty($username) or empty($userpass) or empty($useremail) or empty($country)
			   or empty($contact) or empty($registerdate))
			{
				echo '<div class="search_field"><b>المعلومات غير كامله ، رجاءا قم بإكمال جميع الحقول</b></div>';

			}elseif(strlen($username) > 50 or strlen($userpass) > 50 or strlen($useremail) > 50){
				echo '<div class="search_field"><b>لقد ادخلت قيمه كبيره .. رجاء قم بخفضها</b></div>';
				}elseif($rows > 0){
				echo '<div class="search_field"><b>اسم المستخدم او الايميل الالكتروني مسجل لدينا رجاء قم بتغييرها</b></div>';			
			}else{
				$insert = @mysql_query("INSERT INTO users(username,userpass,useremail,country,contact,registerdate,rate)
						VALUES ('$username','$userpass','$useremail','$country','$contact','$registerdate','$rate')");
					echo '<div class="search_field"><b>تم تسجيل حساب جديد بإسم '.$username.' .. الانتقال الان الى اضافة موقع جديد</b></div>';
					echo'<meta http-equiv="REFRESH" content="3;url=newsite">';
					$_SESSION['username'] = $username;

			}

		}

	}

	public function login($username, $userpass)
	{

		$userpass =md5($userpass);

		if(empty($_POST) === false)
		{
			if(empty($username) or  empty($userpass))
			{
				echo '<div class="search_field"><b>معلومات الدخول خاطئه</b></div>';
			}else{
				$result = mysql_query("SELECT * FROM users WHERE username='$username' AND userpass='$userpass'");

				while($row = mysql_fetch_assoc($result))
				{
					$user = $row['username'];
					$pass = $row['userpass'];
				}

				if($username == $user and $pass == $userpass)
				{
					echo 'user is '.$user;
				echo '</br>';
				 echo ' and username is '. $username;
					echo '<div class="search_field"><b>تم تسجيل الدخول بنجاح .. الانتقال الى الصفحه الرئيسيه</b></div></ br>';
					echo'<meta http-equiv="REFRESH" content="3;url=index">';
					$_SESSION['username'] = $username;
					$_SESSION['userpass'] = $userpass;

				}else{
				echo 'user is '.$user;
				echo '</br>';
				 echo ' and username is '. $username;
					echo '<div class="search_field"><b>لا يوجد عضو بهذا الاسم الرجاء تأكد من معلومات الدخول</b></div>';
				}
			}
		}
	}

$user لايعرض اي قيمه. من المفترض ان يجلب اسم اليوزر الموجود بقاعده البيانات ومن هنا اساس المشكله

$useername هنا عرض اسم اليوزر المدخل في فورم تسجيل الدخول

اذن يوجد مشكله في طريقة الادخال او في قاعده البيانات، هذه صورة من قاعده البيانات

http://upload.traidnt.net/upfiles/aqL52256.jpg

ايضا جميع الحقول بنفس الترميز

#8

السلام عليكم

أخي الكريم إطلع على هذا المقال

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

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

#9

الله يعطيك العافيه على المقال لكن اكتشفت من اين الخطا

المشكله من ملف ا سمه functions.php وهذا يحتوي على دوال بدون اي حرف عربي على الاطلاق وترميز الملف ANSI، اي صفحه بها انكلود لهذا الملف تظهر لدي المشكله، وعند حذف الملف يعمل كل شئ بشكل سليم، كيف اقوم بتغيير هذا الترميز؟ لان عند محاولتي تغييره لا يتغير، مالعمل؟

#10

حاولت اطبق ماقلت

اقتباس
الملف الذي لا يقبل أن يكون utf-8 without bom قم بتحويله إلى utf-8 وإن كان الملف يحتوي على أكواد تتعارض من ترميز utf-8 كـ namespace فعليك عمل ملف جديد بترميز utf-8 without bom ونقل الكود له .

لكن لا يعمل ولاثبات ذلك قمت باستخراج الملف مره اخرى من الموقع وتبين لي انه ANSI

#11

السلام عليكم

اقتباس
لكن لا يعمل ولاثبات ذلك قمت باستخراج الملف مره اخرى من الموقع وتبين لي انه ANSI
أخي هل قمت بتحويل الملف للترميز utf-8 فقط بدلاً من تحويله لـ utf-8 without bom ؟

عموماً قم بوضع أي نص عربي كتعريف للوثيقة بوجود تعدد للغات داخلها لتقبل التحويل .

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

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

#12

اخواني تم حل المشكله

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

اشكركم على الافاده وياريت احد يوضح لنا لماذا الداله هذي غيرت ترميز اللغه على الموقع دون السيرفر المحلي

تحياتي وعتذر على ازعاجكم

#13

طبعا اخي الدالة لها علاقة بالترميز

لانها تأخذ باراميتر اختياري خاص بالترميز وهو في PHP. 5.4 فما فوق يكون افتراضيا UTF8

ومن المفضل دائما تمرير هذا البارميتر حتى تتأكد من ان الترميز موحد .

ما هو اصدار PHP لديك لانها ادا كانت اقل من PHP 5.4 سوف تحدث مشكلة لان الترميز لن يكون UTF8

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

ملاحظات لدالة htmlentities

تأخذ ثلاثة براميتر

الاول هو النص المراد تطبيق الدالة عليه

الثاني هو Flag وهو خاص بتحديد كيفية التعامل مع علامات التنصيص ومعايير لغة HTML

الثالث خاص بالترميز

طبعا الاول اجباري والثاني والثالث اختياري .

ملاحظة اخرى : يوجد دالة مشابهة تماما لها وهي htmlspecialchars ويجب ايضا ملاحظة انها تطلب الترميز هي الاخرى بشكل اختياري ، هذا للعلم فقط .

اعتقد ان الموضوع قيم ووصلنا لنتيجة ممتازة قد تعالج نفس المشكلة لآخرين .

وشكرا ,

1

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#14

الله ينور عليك، فعلا الاصدار على استضافتي

PHP Version:

5.3.13

يعني اقل من 5.4 وهنا حدثت المشكله اما بالسيرفر المحلي محدث الاصدار الى الاخير

ومشكور كثير على المعلومات :)

تم تعديل هذه المشاركة بواسطة empror9 في 6 نوفمبر 2012 في 04:34

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