سطح A: اولین تماس با کاربر (متد GET)
در این سطح، اولین قدم برای تعامل را برمیداریم. یاد میگیریم چطور یک فرم ساده HTML بسازیم و دادههای آن را با سادهترین روش، یعنی GET، به یک اسکریپت PHP ارسال کنیم.
محتوای آموزشی
۱. فرم HTML چیست؟
فرمها، بخش تعاملی صفحات وب هستند. تگ <form> در HTML برای جمعآوری اطلاعات از کاربر استفاده میشود. این تگ چند ویژگی (Attribute) کلیدی دارد:
action: آدرس فایلی (یا صفحهای) که قرار است دادههای فرم را پردازش کند. (مثلاً:"welcome.php")method: روش ارسال دادهها. در این سطح، ما از"GET"استفاده میکنیم.
۲. تگهای <input>
داخل فرم، از تگهای <input> برای ایجاد فیلدهای ورودی استفاده میکنیم:
<input type="text">: یک کادر متنی برای ورود متن.<input type="submit">: دکمهای که با کلیک بر روی آن، فرم «ارسال» میشود.- مهمترین ویژگی:
name. این ویژگی، «نام» یا «کلید» دادهی ما است. PHP در سمت سرور، دادهها را با این نام شناسایی میکند. اگرnameرا نگذارید، داده اصلاً ارسال نمیشود!
۳. سوپرگلوبالها (Superglobals) چه هستند؟
سوپرگلوبالها، متغیرهای داخلی و از پیشساختهشدهای در PHP هستند که همیشه و در همهجای کد (چه داخل توابع و چه خارج از آنها) قابل دسترساند. آنها معمولاً با $_ شروع میشوند.
در این گام، ما با $_GET، $_POST و $_SERVER آشنا میشویم. این متغیرها، آرایههای انجمنی (Associative Arrays) هستند؛ یعنی به جای ایندکس عددی (مثل 0, 1, 2)، از «کلید»های متنی (همان name هایی که در فرم تعریف کردیم) برای دسترسی به مقادیر استفاده میکنند.
۴. دریافت داده با $_GET
وقتی فرمی با method="GET" ارسال میشود، مرورگر دادهها را به صورت «کلید=مقدار» به انتهای URL در action اضافه میکند (به این رشته Query String میگویند).
PHP به طور خودکار این URL را خوانده و تمام این دادهها را در آرایه سوپرگلوبال $_GET قرار میدهد.
کارگاه عملی: فرم خوشآمدگویی
ما دو فایل میسازیم. یکی index.html برای فرم، و دیگری welcome.php برای پردازش.
فایل index.html (فرم):
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<body>
<form action="welcome.php" method="GET">
<label for="fname">نام شما:</label>
<input type="text" id="fname" name="user_name">
<input type="submit" value="ارسال">
</form>
</body>
</html>
فایل welcome.php (پردازشگر):
<?php
// داده را از $_GET با کلیدی که در 'name' فرم بود میخوانیم
$name = $_GET['user_name'];
echo "سلام، " . $name . "! به سایت ما خوش آمدی.";
?>
خروجی و تحلیل:
وقتی در index.html نام «علی» را وارد کرده و «ارسال» را بزنید، به صفحه welcome.php هدایت میشوید. به نوار آدرس مرورگر خود دقت کنید:
https://your-site.com/welcome.php?user_name=علی
میبینید؟ دادهی ما (علی) با کلید (user_name) به URL چسبیده است. به همین دلیل متد GET برای دادههای حساس (مثل رمز عبور) اصلاً مناسب نیست، اما برای مواردی مثل جستجو یا شماره صفحه عالی است.
خروجی صفحه نیز این خواهد بود:
تمرین شما
صورت تمرین: فرم دو قسمتی خوشآمدگویی
یک فرم (register.html) بسازید که شامل دو فیلد متنی باشد:
- یکی برای «نام کوچک» با
name="first_name" - دیگری برای «نام خانوادگی» با
name="last_name"
دادهها را با متد GET به فایلی به نام greeting.php ارسال کنید. در فایل greeting.php، هر دو مقدار را دریافت کرده و آنها را با یک فاصله به هم بچسبانید (با استفاده از عملگر الحاق . که در گام ۲ یاد گرفتید) و در نهایت پیامی مانند زیر چاپ کنید:
"کاربر [نام کوچک] [نام خانوادگی]، به سایت ما خوش آمدی."
باشگاه ذهن: باگ رایج Undefined array key
چالش شما: کد ما در کارگاه عملی یک باگ پنهان دارد. اگر کاربری به جای باز کردن index.html، مستقیماً آدرس welcome.php را در مرورگر خود تایپ کند (بدون ارسال فرم)، PHP چه میکند؟
چون فرمی ارسال نشده، کلید 'user_name' در آرایه $_GET وجود نخواهد داشت. تلاش برای خواندن یک کلید که وجود ندارد، منجر به خطای Warning: Undefined array key "user_name" میشود. این یکی از رایجترین خطاها در PHP است.
وظیفه: یک پرامپت برای هوش مصنوعی بنویسید و از او بخواهید:
- توضیح دهد که تابع
isset()در PHP چیست و چه کار میکند؟ - چگونه میتوان از
isset()در یک ساختارif(که در گام ۳ یاد گرفتید) استفاده کرد تا «قبل» از استفاده از یک کلید در$_GET، ابتدا «بررسی» کنیم که آیا آن کلید اصلاً وجود دارد یا نه؟ - از او بخواهید کد فایل
welcome.phpما را طوری بازنویسی کند که «ایمن» باشد: اگر نام ارسال شده بود، پیام خوشآمدگویی بدهد و اگر نه، یک پیام پیشفرض مثل"لطفاً ابتدا فرم را پر کنید."نمایش دهد.