جلسه دهم PHP : فرم ها در پی اچ پی + GET POST SESSION COOKIE

خانه » مقالات اموزشی » جلسه دهم PHP : فرم ها در پی اچ پی + GET POST SESSION COOKIE
جلسه دهم PHP

نویسنده:

سجاد حسین زاده

Statistics-rafiki

تعداد بازدید:

3204

Calendar-amico (2)

تاریخ به‌روزرسانی:

۱۴۰۰-۰۹-۱۰

Work time-rafiki

زمان مطالعه:

5 دقیقه

جلسه دهم PHP: آموزش کامل زبان برنامه نویسی پی اچ پی مقدماتی تا پیشرفته

مقدمه

در این مقاله از آموزش پی اچ پی با جلسه دهم PHP در خدمت شما هستیم. در قسمت قبل در جلسه نهم PHP مبحث “متغیرهای از پیش تعریف‌شده” را بررسی کردیم. همچنین مبحثی تحت عنوان “مرتب کردن آرایه‌ها” در تکمیل جلسه چهارم PHP یعنی “آرایه‌ها در PHP” مطرح شد. در این جلسه با 2 متغیر سوپر گلوبال دیگر کار را پیش خواهیم برد. بنابراین فهرست مطالب زیر در این جلسه بررسی خواهد شد.

  1. یادآوری فرم در HTML
  2. فرم ها در PHP
  3. سوپرگلوبال‌های GET_$ و POST_$
  4. اعتبارسنجی فرم در PHP
  5. چه زمانی از POST استفاده کنیم؟
  6. سوپر گلوبال session در PHP
  7. سوپر گلوبال cookie در PHP

یادآوری فرم در HTML

پیشنهاد می‌شود که قبل از شروع این جلسه مبحث فرم‌ها در HTML را فراگیرید. سپس به ادامه‌ی مبحث توجه کنید. بااین‌حال، در مثال جامع زیر تقریباً تمامی بخش‌های یک فرم در HTML را بررسی می‌کنیم.
فرم‌هایی که توسط HTML نوشته می‌شوند، می‌توانند از کاربر مقادیری را دریافت کنند. این فرم‌ها شامل یک یا چندین کنترل کادرِ متن، دکمه‌های انتخابی و منوهایی برای انتخاب گزینه‌ی موردنظر می‌باشند. همان‌طور که می‌دانید فرم زیر یک فرم HTML می‌باشد.

به مثال زیر از جلسه دهم PHP توجه نمایید.
خروجی کد بالا از جلسه دهم PHP :
register form in html
register form in html

نکته 1: فرم بالا بخش‌های زیادی دارد. سعی کنید تک‌به‌تک بخش‌های آن را بررسی کنید تاکمی برایتان یادآوری شود. اما اگر جایی از آن را مشکل‌دارید می‌توانید در پایین همین بخش کامنت بگذارید.

فرم ها در PHP‌

فرم HTML بالا را ملاحظه نمودید. این فرم اطلاعات متعددی از کاربر دریافت می‌کند. اما:
اطلاعات دریافت شده از فرم کجا می‌روند؟
ذخیره داده‌ها از فرم چگونه است؟
پی اچ پی چه نقشی خواهد داشت؟
و سر آخر کار با فرم‌ها در PHP چگونه است؟

آشنایی با متدهای GET_$ و POST_$

هر دو متغیر superglobal، در جلسه نهم PHP معرفی شدند. هدف سوپر گلوبال‌های POST_$ و GET_$ جمع‌آوری اطلاعات از درون فرم‌های HTML می‌باشد.
کمی بالاتر مثالی از یک فرم آورده شد. که تقریباً همه کار انجام می‌داد. اگر توجه کنید ما در آن مثال از متد POST استفاده کردیم. زمانی که کاربر تمامی کادرها را پرکرده و بر روی Submit کلیک می‌کند، اطلاعات پرشده برای پردازش به فایل بانام 27.form.php ارسال می‌شوند. این در حالی است که این ارسال به وسیله‌ی متد HTTP POST ارسال‌شده است. این متد اطلاعات را در URL نمایش نمی‌دهد. ضمناً دلیل ارسال اطلاعات به فایل 27.form.php این است که آدرس این فایل را در مقابل action قرارداده‌ایم. تمامی بخش‌های یک فرم در HTML دارای name می‌باشند. حال در فایل 27.form.php ، این اطلاعات با استفاده از name ها قابل دسترسی هستند.
نکته 1: مثال بالا را یک بار دیگر با متد GET اجرا کنید. ملاحظه می‌کنید که تمامی این اطلاعات در URL به نمایش درآمده‌اند.

اعتبارسنجی فرم در PHP

یک مثال ساده از نحوه‌ی کار با فرم

ابتدا مثالی که در ابتدای جلسه آورده شد را در نظر بگیرید. قطعه کد زیر را هم در فایلی با پسوند .php وارد کنید. من نیز فایلی با نام 27.form.php ساخته‌ام. حال، مثال زیر از جلسه دهم PHP‌ را در نظر بگیرید. با استفاده از آرایه‌ی متناظر POST_$ می‌توان ب اطلاعات موجود در فرم دسترسی پیدا کرد.

در هرکجای فرم، name برابر “fname” و “mail” باشد، مقدار آن چاپ می‌شود. درواقع در آرایه‌ی متناظر POST_$ مقادیر به‌صورت key/value ذخیره‌شده‌اند. key ها، همان name هستند و value ها، همان مقدار input درون ِ فرم HTML هستند که توسط کاربر واردشده‌اند.
برای مثال من fullname را sajjadhosseinzadeh و mail را sajjadhosseinzadeh1997@gmail.com وارد کرده‌ام.

خروجی کد بالا از جلسه دهم PHP

Welcome sajjadhosseinzadeh
Your email address is: sajjadhosseinzadeh1997@gmail.com

نکته 1: توجه داشته باشید که هر دو فایل، با پسوندهای .html و.php در کنار هم باشند. و برای اجرای فایل از قسمت localhost، فایل با پسوند.html را بازکنید.
نکته 2: برای نمایش همچین خروجی‌ای تنها پر کردن fullname و mail کافی است.
نکته 3: توجه داشته باشید که اگر مقدار متد عبارت POST نبود. و مقدار GET را اختیار کرده بود، باید قطعه کد زیر اجرا می‌شد.

مثال زیر از جلسه دهم PHP‌ را در نظر بگیرید.

جمع بندی

توجه داشته باشید که: GET_$ یک آرایه از متغیرهایی است که از طریق پارامترهای URL به اسکریپت فعلی منتقل می‌شود. و POST_$ یک آرایه از متغیرهایی است که از طریق روش HTTP POST به اسکریپت فعلی منتقل‌شده است. بنابراین هرگز از GET برای ارسال پسوردها و یا دیگر اطلاعات مهم استفاده نکنید.

چه زمانی از POST استفاده کنیم؟

توجه داشته باشید اطلاعاتی که با روش POST ارسال می‌شوند، به دیگران نشان داده نمی‌شوند. (یعنی تمامی مقادیر درون بدن ِ HTTP تعبیه‌شده‌اند.) و همچنین هیچ محدودیتی برای مقدار اطلاعاتی که ارسال می‌شوند وجود ندارد. علاوه بر این، POST از قابلیت‌های پیشرفته مانند پشتیبانی از ورودی باینری چند بخش در هنگام آپلود فایل‌ها به سرور پشتیبانی می‌کند. ما نیز POST را برای ارسال اطلاعاتتان پیشنهاد می‌کنیم.

تمرین کار با فرم‌ ها در PHP

تمرین: به‌عنوان یک تمرین در جلسه دهم PHP شما نیز مانند من، کدِ فرمی را بنویسید که از دو کادر username و password تشکیل‌شده باشد. و فقط زمانی که کاربر دکمه‌ی submit را می‌زند، متنی دلخواه را نمایش دهد. در غیر این صورت هیچ‌گونه متنی وجود نداشته باشد. (از عبارت‌های شرطی if….else….elseif استفاده کنید.)
توجه کنید اگر کاربر حتی یکی از دو کادر ِ فرم را پر کرد و submit را زد، اِروری مبنی بر کار نادرست کاربر نمایش دهید.

جواب تمرین
فایل HTML
فایل PHP

اگر سؤالی از تمرین بالا داشتید میتونید در کامنت ها بپرسید.

سوپر گلوبال session در PHP

با استفاده از سشن ها می‌توانیم اطلاعاتی را در متغیرها ذخیره کنیم و در چندین صفحه از آن‌ها استفاده کنیم. این اطلاعات در سرور ذخیره می‌شوند. و نه در سیستم کاربر، که آن بخش مربوط به کوکی‌ها می‌باشد. سشن ها تا زمانی که کاربر صفحه‌ی مرورگر را ببندد کار می‌کنند. یک سشن با استفاده از تابع session_start() آغاز می‌شود. همچنین با استفاده از سوپر گلوبال SESSION_$ می‌توان به متغیرهای سشن دسترسی پیدا کرد.

به مثال زیر از جلسه دهم PHP توجه کنید. من مثال زیر را در فایلی با نام index.php ایجاد کرده‌ام.

نکته 1: حال متغیر‌های سشن، name و age در سراسر سشن ِ موردنظر، قابل دسترسی هستند.
نکته 2: حال در صفحات دیگر می‌توانیم از این مقادیر استفاده کنیم.
نکته 3: تابع session_start() باید در ابتدای پروژه و قبل از هرگونه تگ HTML قرار بگیرد.
نکته 4: من در فایل زیر که با نام info.php در پروژه تستی ِ خودم ذخیره دارم، از متغیرهای سشن استفاده می‌کنم.

نکته 1: متغیر‌های سشن شما تا زمانی‌که session را ببندید، دردسترس هستند.
نکته 2: تمامی متغیرهای سشن می‌توانند به‌صورت دستی با استفاده‌از تابع session_unset() پاک شوند.
نکته 3: همچنین خود سشن را هم نیز به صورت کلی می‌توانید با استفاده از تابع session_destroy() از بین ببرید.

مثال زیر را از جلسه دهم پی اچ پی مشاهده کنید.

سوپر گلوبال cookie در PHP

کوکی‌ها اغلب برای شناسایی کاربر مورداستفاده قرار می‌گیرند. کوکی یک فایل کوچک است که سرور آن را روی مرورگر کاربر ذخیره می‌کند. حال هر زمان که کاربر مجدداً وارد سایت شود، سرور از آن متغیرها درون فایل کوکی ِ مرورگر استفاده می‌کند. این متغیرها معمولاً اطلاعاتی مانند رمز عبور، ایمیل، نام کاربری و غیره می‌باشد. حال با استفاده از PHP می‌توانیم کوکی‌ها را بسازیم و در زمان مناسب آن‌ها را باز پس گیریم. با استفاده از تابع setcookie کوکی ها را تنظیم کنید.

name: نام کوکی را مشخص می‌کند.
value: مقدار value را مشخص می‌کند.
expire: زمان منقضی شدن کوکی (به ثانیه) را مشخص می‌کند. مقدار time()+86400*20، زمان منقضی شدن کوکی را 20 روز تعیین می‌کند. اگر عدد 20 را به صفر تغییر دهیم، بعد از بسته شدن session، عمر کوکی هم به‌پایان می‌رسد. که در حالت پیش‌فرض، همین 0 تنظیم است.
path: مشخص‌کننده‌ی مسیر سرور کوکی می‌باشد. برای مثال اگر آن را بر روی “/” تنظیم کنیم، بر روی تمام دامنه اعمال می‌شود. و اگر آن را بر روی “/admin/” تنظیم کنیم، بر روی دایرکتوری admin و تمام زیرمجموعه‌هایش اعمال می‌شود.
domain: مشخص‌کننده‌ی نام دامنه‌ی کوکی می‌باشد. برای آن‌که کوکی در تمام ساب دامنه‌های سایت فعال باشد، باید آن را روی “yourdomain.com” تنظیم کنید. همچنین بخش domain اختیاری می‌باشد.
secure: مشخص می‌کند که آیا کوکی فقط باید از یک اتصال امن ِ HTTPS منتقل شود یا خیر. مقدار TRUE نشان می‌دهد که فقط اگر اتصال امن وجود داشته باشد، کوکی تنظیم می‌شود. همچنین مقدار پیش‌فرض آن FALSE می‌باشد.
httponly: اگر مقدار TRUE تنظیم شود، کوکی فقط از طریق پروتکل HTTP قابل‌دسترسی خواهد بود.
نکته: تنها مقدار name ضروری می‌باشد. بقیه موارد اختیاری می‌باشند.

مثال زیر از جلسه دهم پی اچ پی را مشاهده نمایید.

نکته 1: در مثال بالا یک کوکی با name ِ
username که مقدار value آن، متغیر ِ fName_$ است را تنظیم کردیم. مقدار value ِ متغیر fName را پیش‌تر برابر sajjad قرار دادیم.
نکته 2: این کوکی در 20 روز منقضی خواهد شد.
نکته 3: همچنین این کوکی در تمامی domain قابل دسترسی می‌باشد.
نکته 4: با استفاده از دستور شرطی if و تابع isset() و همچنین آرایه‌ی سوپر گلوبال COOKIE_$ بررسی کردیم که آیا مقدار username ست و یا تنظیم شده‌است یا خیر. ازآن‌جایی‌که مقدار شرط TRUE است، خروجی مدنظر تولید شد.
نکته 5: تابع setcookie باید قبل از هرگونه تگ HTML ساخته شود.
نکته 6: مقدار کوکی به‌طور خودکار زمانی که کوکی فرستاده می‌شود، رمزگذاری می‌شود و همچنین زمانی که دریافت می‌شود، به‌صورت خودکار رمزگشایی خواهد شد. بااین‌وجود، هرگز اطلاعات حساس را در کوکی‌ها ذخیره نکنید.


تبریک میگم شما موفق شدید تا جلسه دهم پی اچ پی ، مبحث ” کار با فرم‌ها در PHP ” را پشت سر بگذارید.
همچنین جلسات پی اچ پی مقدماتی در این جلسه به اتمام رسید. از جلسات آینده با پی اچ پی پیشرفته در خدمت شما خواهیم بود.

سجاد حسین زاده

سجاد حسین زاده

سجاد حسین زاده هستم متولد کرج, بنده از سال ۹۴ سابقه حضور در حوزه وب را دارم. و روزبه‌روز در حال رشد و ارتقای خودم تو این زمینه هستم. از علایقم که بخوام به گم: خب واضحه که عاشق کدنویسی هستم. و همچنین من از معدود افراد برنامه‌نویس ورزشکار هم به‌حساب میام.

تا کنون 264 نفر در کدپز ثبت نام کرده اند.

18 Comments

Join the discussion and tell us your opinion.

  • سایت زیبایی دارین و مطالب رایگان مفیدی هم دارین. دیزاین سایت رو تحسین میکنم خیلی تکراری نیست و خاصه

  • سلام
    تو این برنامه ای که فرستادین کاربر میتونه دکمه های Male و Famle رو به صورت همزمان بزنه. چکار میتونم بکنم که نتونه این کار رو بکنه؟
    در ضمن نتونستم تو سایت ثبت نام کنم

  • سلام
    تو این برنامه‌ای که فرستادین اگر کاربر میزان تحصیلاتش رو وارد کنه برنامه php باید از کجا میزان تحصیلاتش رو بفهمه؟

    • سلام
      برای اینکار باید تمام تاییدیه ها به سمت پایگاه داده ارسال شود و برای مرور پایگاه داده چک شود

  • سلام، خسته نباشید ببخشید واس طراحی فرم در php توضیحی بیشتری هست چون ما تو دانشگا امتحان داریم نصف برنامه هامون هم همینطوری، میخواستم اگ امکانش هست نحوه کدنویسی رو ارائه بدید ممنون 🙏🙏

    • سلام…
      برای طراحی فرم در PHP شما به دو تا فایل نیاز دارید. یک فایل برای دریافت اطلاعات از کاربر است که می‌توانید آن را به پسوند.html ذخیره کنید. برای مثال: form.html
      .
      و یک فایل دیگر برای پردازش اطلاعات دریافت شده از کاربر و ثبت مقادیر در بانک اطلاعاتی، که باید آن را با پسوند.php ذخیره کنید. برای مثال file.php

      باقی موارد هم در همین آموزش توضیح داده‌ام.
      اگر سؤال دیگری داشتید درخدمتم.

  • سلام ممنون از وقتی که گذاشتی بابت تمرین ها
    فقط یک سری مطالب خوب توضیح داده نشده و سریع از کنارش رد شدی _ موضوع بعدی شفافیت موضوع هست (شما ساده و روان توضیح دادین اما موضوع برای یک فرد مبتدی شفافیت ندارد)
    البته من خودم از مثال هاتون بیشتر استفاده کردم اما بخاطر دانش خودم مطالب شما رو تا اخر دارم میخونم .

  • با سلام
    واقعا از زحماتتون ممنونم.
    تو همین تمرین جلسه 10 فایل html & php رو تو یه پوشه قرار دادم، فرم رو اجرا میکنم و بعد از کلیک بر روی ارسال بجای نمایش پیام ها تمامی کدهای مربوط به فایل php رو نمایش میده.
    میشه راهنمایی کنید

    • سلام
      این فایل php که برای پردازش اطلاعات در کنار فایل html ایجاد میکنیم چطور اطلاعات رو پردازش میکنه؟
      چون من بعد از کلیک روی دکمه submit وقتی به اون فایل مراجعه میکنم هیچی توی اون ثبت نمیشه

دیدگاهتان را بنویسید