رفتن به مطلب
برای استفاده از انجمن و عضـویت کلیک کنید.

AnswerCenter

مرکز پاسخگویی به سوالات برنامه نویسی

  • مرجع پاسخگویی
  • تولید آموزش
  • سفارش پروژه

درخواست سفارش پروژه

اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

 برای استفاده از تمامی امکانات سایت لطفا در انجمن عضو شوید


بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

پست های پیشنهاد شده

mohammad_mahdi    451

کاربر نیمه فعال

سلام.

بعد از گذشت زمان زیادی، دوباره برگشتم تا این آموزش کامل رو براتون بذارم.

 

بله عنوان آموزش ما هست: آموزش کامل ساخت فرم ثبت نام و ورود برنامه آنلاین.

 

از مدیران محترم، خواهشمندم برچسب مهم روی این تاپیک بگذارند!

 

شاید شما بخواهید یک برنامه آنلاین بسازید که دارای فرم ثبت نام و ورود باشه تا بتوانید کاربرانتون رو از طریق همین روش، مجبور به ثبت نام کنید تا مدیریت بهتری روی آنها داشته باشید.

 

دوستان فقط یه نکته ای رو بگم: من خودم اگه بخوام برنامه فرم دار بسازم شک نکنید از همین روش هایی که دارم به شما عزیزان آموزش میدم استفاده میکنم و مطمئن باشید که بهترین روشیه که خودم میشناسم. اگه فکر میکنید اصولی و استاندارد نیست، حتما گوشزد کنید و من دیگه آموزشمو یا تعطیل می کنم و یا اصلاح.

 

به دلیل کمبود وقت و... مجبور شدم این آموزش را به صورت قسمتی بگذارم. چنانچه قسمت جدیدی در تاپیک استارت اضافه شود، به اطلاع همگان میرسانم.

 

 

قسمت اول: تحلیل

----------------------

خب قبل از هر کار دیگری، بیاید چیزی که میخوایم انجام بدیم رو تحلیل کنیم:

 

اولش ما یه فرم برای ثبت نام کاربرمون نیاز داریم. تا کاربر بتونه ثبت نام کنه. این فرم، میتونه شامل ادیت تکست نام کاربری، پسورد، ایمیل و یا حتی شماره موبایل و ... باشه. اما در این آموزش، فقط نام کاربری و پسورد را دریافت میکنیم. در آخر هم یک دکمه برای تائید ثبت نام. و فایل PHP که در سرور خودمون داریم تا بتونیم اطلاعات ثبت نام رو بهش بفرستیم و همونجا اعتبار سنجیشون کنیم. اعتبار سنجی یعنی اینکه ببینیم آیا پسوردی که انتخاب کردن، کمتر از 6 کاراکتره؟ آیا فیلد پسورد، خالی رها نشده؟ آیا نام کاربری، دارای حروف غیر مجاز هست؟ حروف غیر مجاز کدوم ها باید باشند؟ آیا طول کاراکتر نام کاربری، بیشتر یا کمتر از حد مجاز است؟ و سپس در صورت عدم صلاحیت هر کدام از این ها، برنامه، پیغام خطایی به کاربر نشان دهد و کاربر، مجبور به اصلاح باشد. اگر خطایی وجود نداشت، در فایل PHP، اطلاعات کاربر، به بانک اطلاعاتی آنلاین فرستاده شود تا در آنجا ذخیره گردد و پیام تبریک عضویت، به کاربر درون برنامه، ارسال شود.

شاید این سوال برایتان پیش بیاید که چرا اعتبار سنجی اطلاعات، توی خود برنامه صورت نمیگیره تا مجبور نباشیم به فایل PHP وصل بشیم و با زبان PHP این کارو انجام بدیم؟ در جواب باید بگم که اینکار، باعث میشه تا امنیت برناممون بهتر بشه! چون PHP سمت سروره و هک کردنش از هک کردن کدهای خود برنامه بیسیک، سخت تره! البته این فقط نظر منه! اگه بخواید میتونید این اعتبارسنجی هارو خودتون توی بیسیک بنویسید تا برنامه سریعتری داشته باشید!

علاوه بر موارد ذکر شده، پس از تائید ثبت نام، کاربر، به اکتیویتی فرم ورود منتقل شود.

فرم ثبت نام، علاوه بر موارد ذکر شده، باید دارای یک دکمه باشد که اکتیویتی فعلی را از بین ببرد و اکتیویتی فرم ورود را باز کند!(سوئیچ بین دو اکتیویتی ثبت نام و ورود)

 

فرم ورود هم تقریبا شامل همین قضایا میشه! اما تفاوت هایی دارد! باز هم مثل قبل، اطلاعات ورودی، برای فایل PHP ارسال میشوند، بعد از اعتبارسنجی، اگر اعتبارسنجی درست بود و خطایی وجود نداشت(منظور این است که طرف میاد نام کاربریشو در یک ادیت تکست از برنامه وارد میکنه پسوردش هم در ادیت تکست دیگر وارد میکنه. بعدش اینا فرستاده میشن به فایل PHP و در آنجا، ما یه دستور برای اتصال به بانک اطلاعاتی میفرستیم. به بانک اطلاعاتی میگیم که بگرد دنبال کسی که نام کاربریش برابر ادیت تکست نام کاربری باشه و ببین آیا پسوردش همینه که نوشته؟ اگر همچین موردی توی بانک اطلاعاتی وجود داشت، پیام OK_OK را بنویس. بعدش در برنامه میایم بررسی میکنیم اگر نتیجه ای که از فایل PHP میاد مساوی با OK_OK باشه، کاربر مجاز به ورود است و اکتیویتی اصلی باید به او نمایش داده شود و اکتیویتی فعلی باید از بین برود! /پایان پرانتز)، همانطور که داخل پرانتز گفتیم، اکتیویتی اصلی برنامه(اکتیویتی ای که میخواهیم به کاربری که وارد شده نشان دهیم) به او نمایش داده شود و اکتیویتی فرم ورود، از بین برود تا کاربر با Back کردن در اکتیویتی اصلی، نتواند به این اکتیویتی دسترسی داشته باشد! البته همه این کارها، بعد از زدن دکمه ورود انجام میشود.

فرم ورود، باید شامل یک دکمه دیگر نیز باشد، دکمه ای که به کاربر، اجازه رفتن به اکتیویتی ثبت نام میدهد و اکتیویتی فعلی را از بین میبرد!(سوئیچ بین دو اکتیویتی ثبت نام و ورود)

 

علاوه بر اینها، شرایط دیگری نیز وجود دارند تا ما یک فرم ورود کامل و بی نقص داشته باشیم. ساختن فایل کوکی. البته من خودم اسمش رو گذاشتم کوکی. کوکی عبارتیه که توی مرورگرها استفاده میشه و مثلا وقتی میخواین وارد این انجمن بشوید یک گزینه دارد که نوشته: من را به یاد بیاور! اگر تیک این گزینه را بزنید، یک کوکی در تاریخچه مرورگرتان ثبت میشود که دفعات بعد که وارد یکی از صفحات انجمن میشوید، خود انجمن، در بین تاریخچه مرورگرتان، به دنبال یک کوکی میگردد که شناسه اش را قبلا خودش انتخاب کرده است. اگر کوکی پیدا شد، حال میبیند که چه نام کاربری برای این کاربر ذخیره شده است و سپس پسورد او را هم از توی کوکی میبیند. حالا همین اطلاعات را به فایل PHP میفرستد و مثل فرم ورود که کارش را توضیح دادم، به بانک اطلاعاتی رجوع میکند و در آنجا به جستجو میپردازد، سپس اگر همچین کاربری با این رمز پیدا شد، کاربر، به عنوان یک عضو به انجمن شناسانده میشود و دیگر نیازی به پر کردن فرم ورود انجمن نیست! خب چرا اینکار را روی فرم ورود برنامه پیاده نکنیم تا هر بار، کاربر، مجبور نباشد پسورد و نام کاربری خود را وارد کند؟ برای اینکار، نیاز به نوشتن یک فایل درون گوشی داریم تا پسورد و نام کاربری شخص استفاده کننده از این گوشی، درون آن فایل ذخیره شود و پس از ورود اول، این فایل تولید میشود و در ورودهای دیگر، از اطلاعات این فایل برای ورود استفاده شود!

 

 

خب حالا یک شرح کامل از این قسمت فرم ها میدهم و تمام:

ابتدا اکتیویتی main لود میشود. در این اکتیویتی طبق این دستورات شرطی عمل میکنیم: A- اگر فایلی به نام فایل کوکی مورد نظرمان وجود داشت،{ B- اگر اطلاعاتی شامل نام کاربری و رمز عبور داخل فایل کوکی وجود داشت،{ C- اگر پس از اتصال به دیتابیس و دریافت نتیجه از فایل PHP، نتیجه ما، OK_OK بود، {اکتیویتی اصلی برنامه را نمایش بده}}} / C- در غیر اینصورت فرم ورود را نمایش بده / B- در غیر اینصورت، فرم ورود را نمایش بده / A- در غیر اینصورت، فرم ورود را نمایش بده

 

فکر میکنم تا اینجا کافی باشه و توجیه شده باشین که قراره چیکار کنیم.

اگر سوال یا مشکلی داشتین، حتما مطرح کنید

 

پایان قسمت اول / ادامه دارد...

-----------------------------------

 

 

قسمت دوم: سشن

-----------------------

دوباره سلام! با قسمت دوم آموزش ساخت فرم ثبت نام و ورود برنامه آنلاین در خدمت شما هستیم.

ببخشید که یه مقداری دیر شد.

خب در این قسمت میخواهیم درباره سشن صحبت کنیم و از اهمیتش در آموزشمون بگیم.

احتمالا دوست دارید هرچه سریعتر بریم سر اصل مطلب و کدنویسی. ولی باید صبر کنید تا این مفاهیم رو بهتر بدونید و از اهمیتشون خبر داشته باشین تا بتونین از پایه به عمق مطلب پی ببرید!

سشن عبارتیه که در طراحی صفحات وب با PHP کاربرد فراوان داره.

بذارین من برداشت خودم رو از سشن براتون بگم: به نظر بنده، سشن مثل کارت شناسایی کاربر میمونه. به عبارت دیگه، سشن یعنی کد یا کدهایی برای شناسایی هر کاربر که از طرف سرور به اون کاربر داده میشه و فقط از طریق سرور و کدهای برنامه نویس در PHP قابل تغییره!

نکته:

قبلا فکر میکردم سشن فقط توی مرورگرها کاربرد داره و بیرون از اون کار نمیکنه. منظورم توی اپ های اندرویدی و... هستش. اما اشتباه میکردم! همین الآن که دارم این آموزشو براتون مینویسم، داشتم این قضیه رو توی "بیسیک 4 اندروید" و با "لوکال هاست Xampp" امتحان میکردم که متوجه شدم واقعا سشن توی بیسیک هم کار میکنه!

 

بذارید سشن رو بیشتر تحلیل کنیم:

با یک مثال شروع میکنیم.

یک سایت چتروم را در نظر بگیرید. طبق مطالبی که در قسمت قبل گفتم، این چتروم، باید یک فرم ورود و ثبت نام داشته باشه بعلاوه تمام مواردی که در قسمت اول این آموزش گفتم. مثل کوکی، اعتبار سنجی، انتقال به صفحه اصلی و همچنین سشن.

حال سوال این است که یک کاربر پس از انتقال به صفحه اصلی سایت چتروم، چگونه باید شناسایی شود؟ یعنی مثلا یک پیام در کادر "نوشتن پیام" مینویسد سپس بر روی دکمه ارسال کلیک میکند. پیام او برای همه کاربران از جمله خودش نمایش داده میشود. مثلا این متن پیام اوست: "(مدیر)حسین: سلام!" حتما در چتروم ها دیده اید که درجه کاربران هم کنار اسمشان قرار میگیرد. اما درجه و اسم او چگونه شناسایی میشود؟ شاید بعضی ها بگویند اسم او در کوکی وجود داشته. خب برای درجه چه جوابی دارید؟ درجه که در کوکی ذخیره نبوده و من بعید میدونم حتی اسم هم از کوکی فراخوانی شده باشه. من بهتون میگم. آیدی(id) این کاربر در سشن ذخیره شده!

ما فقط آیدی کاربر را داشتیم اما توسط همین آیدی توانستیم اسم و درجه کاربر را هم از دیتابیس آنلاین بیرون بکشیم!

سشن این امکان رو به ما داد تا پس از کلیک کردن بر روی دکمه ورود(در فرم ورود)، آیدی کاربر را در "سمت سرور" ذخیره کنیم و سپس از همان آیدی ذخیره شده، برای "بازیابی" تمامی اطلاعات موجود کاربر در دیتابیس، اقدام کنیم!

در واقع، این همان کارت شناسایی ما بود.

خب شاید بعضیها بپرسند چرا از کوکی برای این قضیه استفاده نکنیم؟! در جواب فقط میتونم بگم امنیت!

فرض کنید ما از کوکی برای این کار استفاده کنیم، یک کاربر به اصطلاح جوجه هــکر میاید و با تغییر دادن آیدی خود در قسمت کوکی ها، خود را به جای مدیر یا... جا میزند و کارت شناسایی را جعل میکند! اما سشن چون در سمت سرور ذخیره میشود، کلاینت(کاربر)، نمیتواند آنرا تغییر دهد، مگر با دستوراتی که خود برنامه نویس PHP آنهارا اعمال کرده باشد! در اینجا صراحتا اعلام کردم که بیشتر باگ های امنیتی، تقصیر خود برنامه نویس است! بگذریم!

 

نکته: در مرورگرها، پس از بستن تمامی صفحات سایت مورد نظر، اطلاعات سشن از بین میرود. در برنامه های اندرویدی، پس از بستن برنامه، یعنی فقط با دستور ExitApplication، سشن از بین میرود. اما با دستوراتی مانند Activity.Finish به احتمال خیلی زیاد، سشن از بین نمیرود و با بازگشت به برنامه، قابل بازیابی است!

البته از بین رفتن سشن اصلا مهم نیست، چون دوباره میتواند به راحتی به وجود آید.

 

برای اطلاعات بیشتر راجع به سشن، به این لینک مراجعه کنید!

http://developer1.ir/php/Session.aspx

 

دیدیم که سشن معجزه میکند و واقعا کاربرد دارد!

از قسمت بعد، قصد داریم به کدنویسی و شروع کار بپردازیم!

پایان قسمت دوم / ادامه دارد...

-----------------------------------

 

 

قسمت سوم: شروع کدنویسی با بیسیک
-----------------------------------------------

با قسمت سوم آموزش ساخت فرم ثبت نام و ورود برنامه آنلاین در خدمت شما هستیم.
خب در این قسمت میخواهیم مستقیم بریم سراغ برنامه نویسی.
اول از همه یه پروژه درست کنید و ذخیرش کنید.
خب حالا کتابخانه JSON و HttpUtils2 را تیک بزنید. درباره جی سان مفصل بحث خواهیم کرد.
کاری که میخواهیم انجام دهیم این است که از "اکتیویتی" Main برای اعتبار سنجی استفاده کنیم. برای همین هیچ "لی اوتی" برایش قرار نمیدهیم.
حالا در اکتیویتی Main در تابع Globals این متغیر هارا تعریف میکنیم:

Sub Globals
	Dim JSON As JSONParser
	Dim cookie As Map
	Dim php_connect As HttpJob
End Sub

سپس در تابع Activity_Create، این دستورات را قرار دهید:

Sub Activity_Create(FirstTime As Boolean)
	If(File.Exists(File.DirInternal, "android_form.abc"))Then
		Try
			JSON.Initialize(File.ReadString(File.DirInternal, "android_form.abc"))
			cookie = JSON.NextObject
			php_connect.Initialize("validation", Me)
			php_connect.PostString("http://www.YourSite.ir/login.php", "username="&cookie.Get("username")&"&pass="&cookie.Get("pass")&"&isInProgram=itIs")
		Catch
			File.Delete(File.DirInternal, "android_form.abc")
			StartActivity("login")
			Activity.Finish
		End Try
	Else
		StartActivity("login")
		Activity.Finish
	End If
End Sub

در دستورات بالا، ابتدا، با اجرای برنامه، یک دستور شرطی پرس و جو میکند که آیا فایل کوکی ما به نام android_form.abc در گوشی کاربر موجود میباشد؟ و سپس سعی کردیم آنرا به فرمت جی سان بخوانیم و متغیرهای از قبل ذخیره شده داخل آنرا به متغیر cookie ربط میدهیم. سپس یک اتصال به فایل PHP داخل سرور میسازیم و برای این اتصالمون نام validation را انتخاب میکنیم. بعد آدرس فایل PHP را مینویسیم و متغیرهای خود را از برنامه، به روش پست، ارسال میکنیم. به جای www.YourSite.ir میتوانید آدرس سایت خود را وارد کنید.
متغیر isInProgram هم برای تشخیص هویت کسی است که به سایت متصل میشود. یعنی با یک سری دستورات در فایل PHP میتوان بررسی کرد که آیا دسترسی کاربر مورد نظر به سایتمون، از طریق برنامه ای که در گوشی نصب کرده داده شده؟ اگر بله، او میتواند محتوای فایل را ببیند و دستورات برایش اجرا میشود و در غیر اینصورت(یعنی اگر با مرورگر سایت را باز کرده باشد) پیغام خطا برای او به نمایش در بیاید.(راجع به این مسئله، بعدا، بیشتر متوجه میشوید)
و بعد گفتیم اگر در آن قسمت از برنامه خطایی ایجاد شد، دستورات داخل Catch انجام شود. یعنی فایل کوکی حذف شود و اکتیویتی لاگین یا ورود برای کاربر نمایش داده شود.
و سرانجام گفتیم که اگر فایل کوکی وجود نداشت، اکتیویتی لاگین نمایش داده شود.
و اما دستورات پس از اتصال به PHP در کجا باید قرار گیرند؟ این دستورات، در تابعی به نام JobDone قرار میگیرند. پس این تابع را در برنامه بنویسید:

Sub JobDone (Job As HttpJob)
	If(Job.Success)Then
		Select Job.JobName
		Case "validation"
			If(Job.GetString = "OK_OK")Then
				StartActivity("dashboard")
				Activity.Finish
			Else
				File.Delete(File.DirInternal, "android_form.abc")
				StartActivity("login")
				Activity.Finish
			End If
		End Select
	Else
		Msgbox("Please Check Your Internet Connection!", "Error!")
		ExitApplication
	End If
   Job.Release
End Sub

این تابع، متغیری از پیش تعریف شده دارد به نام Job و تقریبا همه مقادیر بازگشتی داخل تابع، بر محور Job میچرخند.
در خط دوم از یک دستور شرطی استفاده کردیم که اگر اتصال به فایل PHP موفقیت آمیز بود این دستورات را اجرا کن.
در خط سوم، از سلکت استفاده کردیم چون ممکن است در یک اکتیویتی، بیش از یک اتصال به PHP وجود داشته باشد، پیشنهاد میشود، در این تابع، همیشه از سلکت استفاده شود. درواقع Job.JobName، همان نام اتصالمان است که میشود validation.
سپس گفتیم اگر نتیجه ای که در PHP نوشته میشود یعنی Job.GetString برابر با مقدار OK_OK بود، بدان معنیست که کاربر با موفقیت لاگین شده. برای همین باید به اکتیویتی dashboard منتقل شود. اما اگر برابر با OK_OK نبود، فایل کوکی حذف شود و کاربر، به اکتیویتی لاگین منتقل شود.
در واقع ما میخواهیم در فایل PHP کاری کنیم که اگر کاربر، در دیتابیس ما شناخته شده بود(اعتبار سنجی)، نتیجه OK_OK برگردانده شود و در غیر اینصورت، متن خطای خود را بر میگردانیم.
دقت داشته باشید که تابع JobDone زمانی در برنامه اجرا میشود که اتصالمان انجام شده باشد. یعنی شرط وجود این تابع، در برنامه، بستگی به وجود و اجرای نقطه اتصال validation دارد! یعنی این دو دستور:

php_connect.Initialize("validation", Me)
php_connect.PostString("http://www.YourSite.ir/ login.php", "username="&cookie.Get("username")&"&pass="&cookie.Get("pass")&"&isInProgram=itIs")

خب بگذریم!
در آخر هم گفتیم اگر اتصال موفقیت آمیز نبود، خطایی بده مبنی بر اینکه اتصال اینترنت شما قطع است و باید آنرا چک کنید!

خب این قسمت یکم طولانی شد و من هم خسته شدم!
انشاءالله در قسمت های بعد، راجع به جی سان توضیح خواهیم داد. همچنین به سراغ PHP و نیز بانک اطلاعاتی خواهیم رفت و البته ساخت اکتیویتی های ورود و ثبت نام و دشبورد را به شما عزیزان آموزش خواهیم داد.

پایان قسمت سوم / ادامه دارد...
-------------------------------------

 

 

قسمت چهارم: جادوی PHP و JSON

-----------------------------------------

درود دوستان عزیز!

بخاطر غیبت این چند وقت و دیر شدن قسمت چهارم، جدا شرمنده! یکمی بی نظمی پیش اومده توی کارام که اصلا فراموش کردم براتون قسمت بعدی رو بذارم. البته فکر نکنید آماده هست ها تازه دارم به طور زنده براتون مینویسم. الآن ساعت 11:59 شبه و داریم وارد دوشنبه 16 آذر میشیم که حالا شدیم! :دی

 

خب عزیزان در قسمت قبل اکتیویتی Main رو برنامه ریزی کردیم. با شروع این اکتیویتی، اتصال به فایل پی اچ پی درون سرور، آغاز میشه و نتیجه برگشتی از این فایل، سرنوشت برنامه رو مشخص میکنه!

اما در قسمت قبل، حرفی از کدهای فایل PHP نزدیم! همچنین قرار بود توضیحاتی در رابطه با جی سان ارائه بدیم.

من خودم به طور علمی تعریف جی سان رو نمیدونم ولی طبق تجربه ام، جی سان یک نوع ذخیره سازی اطلاعات با فرمت دقیق و دسته بندی های منظم و سازمان یافته است که اطلاعات{متنی} رو مانند نقشه، علامت گذاری میکنه و خلاصه دسترسی ما رو به اطلاعات آسان تر میکنه. البته برای استفاده از جی سان، شرایطی وجود داره. از مهمترین شرایط و اصول استفاده از جی سان، دانستن فرمت کلی و نقشه بندی جی سان است! بر همین اساس، ما میتوانیم فرمت جی سان را خودمان بنویسیم و خواندنش هم برایمان آسان تر میشود.

قبل از جی سان: قبل از اینکه من جی سان رو بشناسم، همیشه تو این فکر بودم که چطور متغیرهای PHP رو میتوان به متغیر جاوا اسکریپت تبدیل کرد و اطلاعات رو بین این دو زبان، منتقل کرد. چون من طراحی وب کار میکردم، این دو زبان، یعنی پی اچ پی و جاوا اسکریپت، همیشه در تعامل بودند.

بعد از جی سان: وقتی کمی با جی سان آشنا شدم دریافتم جی سان یک پل است برای ارتباط اطلاعات بین تمامی زبان های برنامه نویسی! اغراق نمیکنم. ساختار جی سان به قدری انعطاف پذیر است که در هر زبانی، به راحتی میتوان برایش کتابخانه درست کرد و البته کتابخانه های آماده و حتی الآن دیگر هسته برخی زبان ها نیز به جی سان، مجهز شده اند!

 

فعلا، در این آموزش، ما از جی سان در فایل کوکی که ساختیم استفاده کردیم. احتمالا چون این قرار است یک فرم ساده باشد، برای کارهای دیگر استفاده نشود ولی شما میتوانید برای ارسال و دریافت اطلاعات از طریق Httputils 2، از جی سان به جای جدا سازی با # استفاده کنید.

مثال کلی از فرمت جی سان:

[{'val1':'value1', 'val2':'value2', others...}, {others...}, others...]

با جستجوی آموزشهای جی سان، میتوانید با این فرمت، بیشتر آشنا شوید.

 

خب دوستان عزیز، حال به سراغ فایل پی اچ پی میرویم. در قسمت قبل، از برنامه، فایل login.php را از سرورمان فراخوانی کردیم. در کنار این فایل، فایل دیگری نیز برای تنظیم اتصال به دیتابیس آنلاین، نیاز داریم. اسم این فایل جدید را، db.php میگذاریم. این فایل را در کنار فایل login.php در یک پوشه قرار میدهیم.

محتویات فایل db.php:

<?php
$con = mysqli_connect("localhost","root","your_db_password","your_db_name");
mysqli_set_charset($con,"utf8");
//Check connection
if(mysqli_connect_errno()){
echo "Error: ".mysqli_connect_error();
}
?>

بجای your_db_password و your_db_name، به ترتیب رمز و نام دیتابیس مورد نظر رو وارد میکنیم و به جای root، یوزر نیم دیتابیس رو قرار میدیم. در اتصال به دیتابیس آنلاین چندین روش وجود دارد که ما در اینجا از روش خوب mysqli بهره میبریم.

 

محتویات فایل login.php:

<?php
if(isset($_POST['isInProgram']) && $_POST['isInProgram'] == "itIs"){//&& = and
	require_once("db.php");
	$users_number1 = mysqli_query($con, "SELECT * FROM users where username = '$_POST[username]' and password = '$_POST[pass]'");
	$users_number2 = mysqli_num_rows($users_number1);
	if($users_number2 > 0){
		session_start();
		$_SESSION['logged'] = true;
		$_SESSION['user'] = $_POST['username'];
		//Other sessions can be set in here
		echo "OK_OK";
	}
	else{
		echo "NO_NO";
	}
	mysqli_close($con);
}
else{
	echo "Error 404: Web Page Not Found!";
}
?>

در خط دوم یک دستور شرطی نوشتیم و بررسی کردیم که آیا isInProgram از قبل ارسال شده و درخواستی که از فایل PHP شده، آیا از داخل برنامه اندروید ما صورت گرفته؟ یا اینکه کسی صفحه وب ما را مستقیم باز نموده است؟ اگر صفحه وب را مستقیم باز کرده که این پیغام را نمایش بده: Error 404: Web Page Not Found و در غیر اینصورت، در خط سوم گفتیم که فایل db.php را لازم داریم تا بتوانیم متغیرهای مورد نیازمان را برای اتصال به دیتابیس، فراخوانی کنیم.

در خط چهارم، در دیتابیس گشتیم و تمامی کاربرانی که یوزر نیم و پسوردشان برابر با یوزر نیم و پسورد موجود در کوکی بود، پیدا کردیم.

در خط پنجم، تعداد آنها را در متغیر users_number2 ذخیره کردیم.

نکته: قصد ما این بود که بفهمیم آیا همچین کاربری با نام کاربری یکتا و رمز عبوری که در زمان لاگین در کوکی ذخیره شده بود، در دیتابیسمان، موجود میباشد؟

در خط ششم گفتیم اگر تعداد از صفر بیشتر بود، یعنی همچین کاربری وجود داشت، دستوراتی را برایمان اجرا کن. البته شما میتوانید بر طبق سلیقه و وسواس خود، این دستور شرطی را تغییر دهید.

از خط هفتم، این دستورات خاص، شروع میشوند و تا خط دوازدهم ادامه دارد.

در خط هفتم گفتیم که سشن را برای ما استارت کن. برای هر نوع استفاده از سشن، این دستور استارت، اجباری است و باید قبل از هر دستور سشنی، نوشته شود.

نکته: نوشتن و طراحی سشن ها، به نیاز و خلاقیت شما بستگی دارد!

در خط هشتم، سشنی تعریف کردیم مبنی بر اینکه کاربر در حال استفاده از این برنامه، در حال حاضر، وارد سیستم ما شده است. و این یک مجوز موقت است که ما خودمان به طور دستی، به کاربر درون برنامه اندروید، اعطا کردیم. هر زمان لازم بود، میتوانیم بر اساس این سشن، به کاربر، مجوزهایی برای دسترسی به برخی دستورات و اطلاعات بدهیم.

در خط نهم، نام کاربری او را که برگرفته از کوکی موجود در گوشی اش بود و از قبل، خودمان، صلاحیتش را تائید کرده بودیم، در یک سشن به نام user ذخیره میکنیم.

در خط یازدهم، یک خروجی دادیم با محتوای OK_OK. این خروجی، همان Job.GetString است که در برنامه، دریافت میشود. یک بار دیگر به کدهای قسمت سوم آموزش مراجعه کنید تا بیشتر، هماهنگی بین این کدها را متوجه شوید.

خروجی خط چهاردهم، چنان اهمیتی ندارد. فقط نمایشی است!

در خط شانزدهم، اتصال به دیتابیس را قطع کردیم.

 

امیدوارم این قسمت، چیزهای جدید یاد گرفته و به طور کامل، هماهنگی و ارتباط بین کدها را درک کرده و متوجه شده باشید.

 

احتمالا در قسمت بعد، به ساختن دیتابیس آنلاین و جداول و تشریح آن بپردازیم.

فکر کنم یه چند سالی باید صبر کنید :دی

ساعت 2 بامداد دوشنبه 16 آذر 94

پایان قسمت چهارم / ادامه دارد...
--------------------------------------

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
msajad    501

کاربر فعال

بسیار عالی منتظر قسمت بعد می مونم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
MahdiHD    1,748

مدیر بخش

آموزش بسیار مفید و کاربردی و مورد نیاز برای اکثر دوستان ! مشتاقانه منتظر قسمت بعدی! خسته نباشید

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
hamedgn    30

کاربر عادی

خوبه چرا وقطي کاربر داره توی آپ میکرده در هنگام ارسال اطلاعات ايدي و پس رو هر دفعه می فرستیم این آسون تر به نظر ميرسه

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
مهدی ایزدی    9,174

موسس و بنیان گذار

فايل php رو بايد از كجا بياريم؟

یا دانش php یا گوگل  :fekr:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
mohammad_mahdi    451

کاربر نیمه فعال

فايل php رو بايد از كجا بياريم؟

در قسمت های بعد، فایل PHP هم کداشو مینویسیم!

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
shahab.msb    324

کاربر نیمه فعال

پس بي زحمت فايل phpرو هم پيوست كنيد چون الان آموزشتون ناقص به حساب مياد

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
mohammad_mahdi    451

کاربر نیمه فعال

قسمت چهارم اضافه شد!

 

احتمالا بعد از پایان تمامی قسمت ها، این آموزش، به صورت کتاب در بیاید!

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
mohammad_mahdi    451

کاربر نیمه فعال

پس بي زحمت فايل phpرو هم پيوست كنيد چون الان آموزشتون ناقص به حساب مياد

در قسمت چهارم، کد PHP، اضافه شد!

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
mohammad_mahdi    451

کاربر نیمه فعال

دوستان واقعا شرمنده.

الآن سه ماهه از آخرین قسمتی که گذاشتم میگذره.

امیدوارم درک کنید. گرفتاری و مشکلات و ...

راستی خیلی وقته که بیسیک فور اندروید رو کنار گذاشتم و در حال حاضر با یونیتی دارم کار میکنم. بنظرم طبیعیه که بعضی از کداشو یادم رفته باشه و باید به نمونه هایی که قبلا ایجاد کردم یه نگاهی بندازم تا دوباره راه بیفتم.

 

فعلا درگیر یه پروژه طاقت فرسای یونیتی هستم. اگر عمری بود و باز تقاضای ادامه آموزش شد، سعی میکنم و سعی میکنم دریغ نکنم.

 

فین فین فین! نصف شبی بوی سوختنی میاد ... نکنه پی سیم سوخت!! آی کمک!!!

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

×
×
  • جدید...