
آموزش برنامه نویسی PHP-جلسه هفتم
یک تعداد از متغیرهای تعریف شده در php وجود دارد که می توان با استفاده از آنها کارهایی را روی متغیرها انجام داد. به این متدهای آماده superglobals می گوییم.
Table of contents [Show]
- 1 PHP Global Variables و Superglobals
- 2 متغیرهای Superglobal در PHP چی هستند؟
- 3 نکته مهم درباره $GLOBALS
- 4 $_SERVER['PHP_SELF']
- 5 $_SERVER['SERVER_ADDR']
- 6 $_SERVER['SERVER_NAME']
- 7 $_SERVER['SERVER_SOFTWARE']
- 8 $_SERVER['SERVER_PROTOCOL']
- 9 $_SERVER['REQUEST_METHOD']
- 10 $_SERVER['REQUEST_TIME']
- 11 $_SERVER['QUERY_STRING']
- 12 $_SERVER['HTTP_HOST']
- 13 $_SERVER['HTTP_REFERER']
- 14 $_SERVER['HTTPS']
- 15 $_SERVER['REMOTE_ADDR']
- 16 $_SERVER['REMOTE_PORT']
- 17 $_SERVER['SCRIPT_FILENAME']
- 18 $_SERVER['SCRIPT_NAME']
- 19 $_SERVER['SERVER_PORT']
- 20 متد GET
- 21 چرا از ?? استفاده کردیم؟
PHP Global Variables و Superglobals
در جلسههای قبل با مفاهیم پایه PHP مانند متغیرها، انواع داده، عملگرها، شرطها و توابع آشنا شدیم. در این جلسه وارد یکی از مباحث مهم و کاربردی PHP میشویم:
متغیرهای سراسری (Global Variables) و سوپرگلوبالها (Superglobals)
سوپرگلوبالها در PHP متغیرهای از پیش تعریفشدهای هستند که تقریباً در تمام بخشهای یک اسکریپت PHP، از جمله داخل توابع، بدون نیاز به استفاده از global قابل دسترسی هستند.
این متغیرها در بسیاری از پروژههای واقعی برای دریافت اطلاعات کاربر، بررسی درخواستهای HTTP، کار با فرمها، مدیریت فایلهای آپلودی، کوکیها، سشنها و اطلاعات مربوط به سرور استفاده میشوند.
متغیرهای Superglobal در PHP چی هستند؟
PHP چند متغیر از پیش تعریفشده دارد که به آنها Superglobal Variables گفته میشود.
مهمترین سوپرگلوبالهای PHP عبارتاند از:
$GLOBALS$_SERVER$_REQUEST$_POST$_GET$_FILES$_ENV$_COOKIE$_SESSION
در این جلسه ابتدا مفهوم متغیرهای Global را بررسی میکنیم و سپس با مهمترین Superglobalها آشنا میشویم.
نکته: همه این متغیرها کاربرد یکسانی ندارند و در پروژههای واقعی معمولاً از
$_POST،$_GET،$_SERVER،$_SESSION،$_COOKIEو$_FILESبیشتر استفاده میشود.
Global Variable چیست؟
قبل از اینکه با $GLOBALS آشنا شویم، باید مفهوم متغیر سراسری یا Global Variable را بدانیم.
متغیری که خارج از یک تابع تعریف شود، در محدوده اصلی اسکریپت قرار دارد؛ اما بهصورت پیشفرض نمیتوان همان متغیر را مستقیماً داخل یک تابع استفاده کرد.
برای مثال:
<?php
$x = 75;
$y = 25;
function addition()
{
echo $x + $y;
}
addition();
?>
در این مثال ممکن است انتظار داشته باشیم نتیجه 100 باشد، اما متغیرهای $x و $y مستقیماً داخل تابع در دسترس نیستند؛ زیرا تابع دارای Scope مخصوص خودش است.
استفاده از کلمه کلیدی global
یکی از روشهای دسترسی به متغیرهای بیرون از تابع، استفاده از global است:
<?php
$x = 75;
$y = 25;
function addition()
{
global $x, $y;
echo $x + $y;
}
addition();
?>
خروجی:
100
با استفاده از global به PHP اعلام میکنیم که منظور ما همان متغیرهایی است که خارج از تابع تعریف شدهاند.
با این حال، PHP روش دیگری نیز برای دسترسی به متغیرهای سراسری دارد که از طریق Superglobal معروف $GLOBALS انجام میشود.
متغیر $GLOBALS در PHP
$GLOBALS یک آرایه Superglobal است که به متغیرهای سراسری تعریفشده در اسکریپت دسترسی میدهد.
در واقع میتوان متغیرهای Global را از طریق کلیدهای این آرایه مشاهده یا تغییر داد.
مثال:
<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
خروجی:
100
در این مثال:
$GLOBALS['x']
به متغیر سراسری $x اشاره میکند و:
$GLOBALS['y']
به متغیر سراسری $y اشاره دارد.
همچنین با دستور:
$GLOBALS['z'] = ...
یک متغیر سراسری جدید به نام $z ایجاد کردهایم.
فرض کنید داخل تابع متغیرهایی با همان نام داشته باشیم:
<?php
$x = 75;
$y = 25;
function addition()
{
$x = 5;
$y = 2;
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
خروجی همچنان:
100
است.
زیرا:
$GLOBALS['x']
به متغیر سراسری $x اشاره میکند، نه متغیر محلی $x که داخل تابع تعریف شده است.
بنابراین باید تفاوت Local Variable و Global Variable را بهخوبی درک کنیم.
چه زمانی از $GLOBALS استفاده کنیم؟
$GLOBALS در پروژههای PHP کاربردهای مختلفی دارد؛ اما استفاده بیش از حد از متغیرهای Global معمولاً توصیه نمیشود.
در پروژههای بزرگ، بهتر است تا حد امکان اطلاعات موردنیاز توابع از طریق پارامترها به آنها ارسال شود.
مثلاً:
<?php
function addition($x, $y)
{
return $x + $y;
}
echo addition(75, 25);
?>
این روش معمولاً خواناتر، قابل تستتر و قابل نگهداریتر است.
$_SERVER چیست؟
$_SERVER یکی از مهمترین Superglobalهای PHP است.
این متغیر یک آرایه Associative است که اطلاعات مختلفی درباره:
- سرور
- درخواست HTTP
- مسیر فایل
- مرورگر کاربر
- IP
- پورت
- پروتکل
- نوع درخواست
در اختیار برنامه قرار میدهد.
مثلاً:
<?php
echo $_SERVER['REQUEST_METHOD'];
?>
اگر کاربر با یک درخواست GET صفحه را باز کرده باشد، معمولاً خروجی:
GET
خواهد بود.
اگر فرم با متد POST ارسال شده باشد، مقدار آن معمولاً:
POST
است.
مهمترین مقادیر $_SERVER
در ادامه با برخی از پرکاربردترین کلیدهای $_SERVER آشنا میشویم.
$_SERVER['PHP_SELF']
مسیر اسکریپت در حال اجرا را برمیگرداند.
مثال:
echo $_SERVER['PHP_SELF'];
ممکن است خروجی چیزی شبیه این باشد:
/index.php
نکته امنیتی
استفاده مستقیم از PHP_SELF در ویژگی action فرم میتواند در شرایط خاص باعث مشکلات امنیتی مانند XSS شود.
بنابراین در پروژههای حساس بهتر است مقدار خروجی HTML را به شکل مناسب Escape کنیم یا از یک مسیر ثابت استفاده کنیم.
مثلاً:
<form method="post" action="">
یا در صورت نیاز:
<form method="post" action="<?= htmlspecialchars($_SERVER['PHP_SELF']) ?>">
$_SERVER['SERVER_ADDR']
آدرس IP سروری که اسکریپت روی آن اجرا میشود را برمیگرداند.
echo $_SERVER['SERVER_ADDR'];
مثلاً:
192.168.1.10
البته مقدار واقعی به تنظیمات سرور بستگی دارد.
$_SERVER['SERVER_NAME']
نام سرور یا Host مربوط به درخواست را برمیگرداند.
echo $_SERVER['SERVER_NAME'];
ممکن است نتیجهای مانند:
example.com
باشد.
$_SERVER['SERVER_SOFTWARE']
اطلاعات مربوط به نرمافزار وبسرور را در اختیار قرار میدهد.
echo $_SERVER['SERVER_SOFTWARE'];
برای مثال ممکن است مقداری شبیه این دریافت شود:
Apache
مقدار دقیق به وبسرور و تنظیمات آن بستگی دارد.
$_SERVER['SERVER_PROTOCOL']
نسخه پروتکل HTTP مورد استفاده درخواست را نشان میدهد.
echo $_SERVER['SERVER_PROTOCOL'];
مثلاً:
HTTP/1.1
یا در محیطهای جدیدتر ممکن است اطلاعات متفاوتی دریافت شود.
$_SERVER['REQUEST_METHOD']
یکی از پرکاربردترین مقادیر $_SERVER است.
این مقدار نوع درخواست HTTP را مشخص میکند.
مثلاً:
echo $_SERVER['REQUEST_METHOD'];
خروجی ممکن است:
GET
یا:
POST
باشد.
در پردازش فرمها بسیار از این مقدار استفاده میکنیم:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
echo "Form submitted";
}
$_SERVER['REQUEST_TIME']
زمان شروع پردازش درخواست را به صورت Unix Timestamp نشان میدهد.
echo $_SERVER['REQUEST_TIME'];
برای تبدیل Timestamp به تاریخ قابل خواندن میتوان از date() استفاده کرد:
echo date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);
$_SERVER['QUERY_STRING']
رشته Query مربوط به URL را برمیگرداند.
برای مثال اگر URL این باشد:
example.com/products.php?id=25&category=book
ممکن است:
echo $_SERVER['QUERY_STRING'];
خروجی زیر را بدهد:
id=25&category=book
البته برای دسترسی به مقدار پارامترها معمولاً بهتر است از $_GET استفاده کنیم.
$_SERVER['HTTP_HOST']
Host درخواست فعلی را برمیگرداند.
echo $_SERVER['HTTP_HOST'];
مثلاً:
example.com
$_SERVER['HTTP_REFERER']
در صورت وجود، اطلاعات مربوط به صفحهای که کاربر از آن به صفحه فعلی آمده است را ارائه میکند.
echo $_SERVER['HTTP_REFERER'];
اما این مقدار قابل اعتماد برای تصمیمهای امنیتی نیست؛ زیرا ممکن است اصلاً ارسال نشود یا توسط کاربر/مرورگر تغییر کند.
$_SERVER['HTTPS']
برای تشخیص HTTPS بودن درخواست میتوان از این مقدار استفاده کرد، اما نحوه مقداردهی آن به محیط و تنظیمات سرور یا Proxy بستگی دارد.
بنابراین نباید بدون بررسی محیط اجرا فرض کنیم که وجود یک مقدار خاص همیشه به معنی فعال بودن HTTPS است.
$_SERVER['REMOTE_ADDR']
آدرس IP کلاینتی که درخواست را ارسال کرده است، در اختیار قرار میدهد.
echo $_SERVER['REMOTE_ADDR'];
اما در صورتی که سایت پشت Proxy یا CDN قرار داشته باشد، این مقدار ممکن است IP Proxy را نشان دهد.
به همین دلیل، هنگام کار با هدرهایی مانند X-Forwarded-For باید تنظیمات Proxy مورد اعتماد سرور مشخص باشد و نباید اطلاعات ارسالشده از سمت کاربر را بدون بررسی معتبر فرض کرد.
$_SERVER['REMOTE_PORT']
پورت مورد استفاده کلاینت برای اتصال به سرور را نشان میدهد.
echo $_SERVER['REMOTE_PORT'];
$_SERVER['SCRIPT_FILENAME']
مسیر فیزیکی و کامل فایل PHP در حال اجرا را برمیگرداند.
echo $_SERVER['SCRIPT_FILENAME'];
این مقدار بیشتر در عملیات سمت سرور و مدیریت فایلها کاربرد دارد.
$_SERVER['SCRIPT_NAME']
مسیر اسکریپت فعلی را نشان میدهد.
echo $_SERVER['SCRIPT_NAME'];
مثلاً:
/index.php
$_SERVER['SERVER_PORT']
پورتی که سرور برای دریافت درخواست استفاده میکند را برمیگرداند.
echo $_SERVER['SERVER_PORT'];
در بسیاری از تنظیمات HTTP مقدار 80 و برای HTTPS مقدار 443 است؛ البته ممکن است سرور روی پورت دیگری پیکربندی شده باشد.
نمایش اطلاعات $_SERVER
برای مشاهده اطلاعات موجود در $_SERVER هنگام یادگیری PHP میتوان از:
<?php
echo '<pre>';
print_r($_SERVER);
echo '</pre>';
?>
استفاده کرد.
این روش برای آموزش و Debug کردن بسیار مفید است.
نکته امنیتی: نمایش کامل
$_SERVERدر سایت واقعی میتواند اطلاعات حساس محیط سرور را افشا کند؛ بنابراین این کار را در محیط Production انجام ندهید.
PHP $_REQUEST چیست؟
$_REQUEST نیز یک Superglobal است و میتواند دادههایی را که از برخی منابع درخواست HTTP دریافت شدهاند در اختیار برنامه قرار دهد.
بهطور معمول دادههای GET، POST و در برخی تنظیمات COOKIE میتوانند در $_REQUEST در دسترس باشند.
مثلاً:
$name = $_REQUEST['name'];
اما یک نکته بسیار مهم وجود دارد:
در پروژههای حرفهای، بهتر است منبع داده را مشخص کنیم.
به جای:
$_REQUEST['name']
اگر اطلاعات از فرم POST ارسال میشود، بهتر است بنویسیم:
$_POST['name']
و اگر اطلاعات از Query String دریافت میشود:
$_GET['name']
این کار کد را واضحتر میکند و مشخص است داده دقیقاً از کجا آمده است.
GET و POST چی هستند؟
یکی از مهمترین مفاهیمی که هنگام کار با فرمها در PHP باید یاد بگیریم، تفاوت GET و POST است.
متد GET
در روش GET، اطلاعات معمولاً در URL قرار میگیرند.
مثلاً:
products.php?id=25
در PHP میتوانیم مقدار id را دریافت کنیم:
$id = $_GET['id'];
echo $id;
خروجی:
25
GET برای مواردی مانند:
- جستجو
- فیلتر
- صفحهبندی
- پارامترهای قابل اشتراکگذاری URL
بسیار کاربردی است.
متد POST
در روش POST، دادهها در بدنه درخواست HTTP ارسال میشوند و معمولاً برای ارسال اطلاعات فرم، ورود کاربران، ثبتنام و عملیات تغییر داده استفاده میشود.
مثلاً:
<form method="post">
<input type=text name=username>
<button type=submit>ارسال</button>
</form>
در PHP:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
echo $username;
}
ساخت یک فرم کامل با PHP
حالا یک مثال کاربردیتر ایجاد کنیم.
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset=UTF-8>
<title>فرم PHP</title>
</head>
<body>
<form method="post" action="">
<label for="name">نام:</label>
<input
type=text
id="name"
name=name
>
<button type=submit>ارسال</button>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'] ?? '';
if (trim($name) === '') {
echo 'لطفاً نام خود را وارد کنید.';
} else {
echo 'سلام ' . htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
}
}
?>
</body>
</html>
در این مثال چند نکته مهم را همزمان یاد گرفتیم.
چرا از ?? استفاده کردیم؟
در این بخش:
$name = $_POST['name'] ?? '';
اگر فیلد name وجود داشته باشد، مقدار آن دریافت میشود؛ در غیر این صورت مقدار خالی '' قرار میگیرد.
این روش از ایجاد خطاهای مربوط به کلیدهای تعریفنشده جلوگیری میکند.
چرا از htmlspecialchars استفاده کردیم؟
فرض کنید کاربر به جای نام واقعی، کدی مانند HTML یا JavaScript وارد کند.
اگر مقدار ورودی را بدون پردازش مناسب مستقیماً داخل HTML نمایش دهیم، ممکن است برنامه در معرض حملات XSS (Cross-Site Scripting) قرار بگیرد.
به همین دلیل هنگام نمایش دادهای که از کاربر دریافت کردهایم، معمولاً باید آن را متناسب با Context، Escape کنیم.
مثلاً:
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
این یکی از نکات بسیار مهم امنیتی هنگام کار با فرمها در PHP است.
$_GET در PHP
$_GET برای دریافت دادههایی استفاده میشود که از طریق Query String ارسال شدهاند.
مثلاً:
example.com/product.php?id=100
در PHP:
<?php
$id = $_GET['id'] ?? null;
echo $id;
?>
خروجی:
100
مثال کاربردی $_GET
فرض کنید میخواهیم نام یک محصول را از URL دریافت کنیم:
product.php?name=phone
کد PHP:
<?php
$name = $_GET['name'] ?? '';
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
?>
خروجی:
phone
$_POST در PHP
$_POST برای دریافت دادههای ارسالشده با متد POST استفاده میشود.
مثلاً:
<form method="post">
<input type=text name=email>
<button type=submit>
ارسال
</button>
</form>
و در PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = $_POST['email'] ?? '';
echo htmlspecialchars($email, ENT_QUOTES, 'UTF-8');
}
?>
در پروژههای واقعی، قبل از استفاده از دادهها معمولاً باید اعتبارسنجی (Validation) نیز انجام شود.
$_FILES در PHP
اگر بخواهیم کاربر فایلی مانند:
- تصویر
- فایل Word
- فایل ZIP
را روی سرور آپلود کند، از $_FILES استفاده میکنیم.
مثلاً:
<form method="post" enctype="multipart/form-data">
<input type=file name=file>
<button type=submit>
آپلود
</button>
</form>
در PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['file'])) {
echo $_FILES['file']['name'];
}
}
?>
$_FILES اطلاعات مختلفی درباره فایل آپلودشده در اختیار ما قرار میدهد، از جمله:
$_FILES['file']['name']
$_FILES['file']['type']
$_FILES['file']['tmp_name']
$_FILES['file']['error']
$_FILES['file']['size']
نکته امنیتی مهم
هرگز نباید صرفاً بر اساس نام یا MIME type ارسالشده توسط کاربر، یک فایل را معتبر فرض کنیم.
در سیستم آپلود فایل باید مواردی مانند:
- محدودیت حجم
- خطای آپلود
- پسوند مجاز
- نوع واقعی فایل
- نام فایل
- محل ذخیرهسازی
- جلوگیری از اجرای فایلهای خطرناک
بررسی شود.
$_COOKIE در PHP
Cookie اطلاعات کوچکی است که مرورگر کاربر میتواند آن را برای سایت ذخیره کند.
برای ایجاد Cookie:
<?php
setcookie(
'username',
'Ali',
time() + 3600,
'/'
);
?>
بعد از ارسال Cookie توسط مرورگر، میتوان مقدار آن را با:
echo $_COOKIE['username'] ?? '';
خواند.
Cookie در مواردی مانند:
- ذخیره تنظیمات کاربر
- انتخاب زبان
- برخی ترجیحات کاربر
- نگهداری شناسههای خاص
کاربرد دارد.
نکته: اطلاعات حساس مانند رمز عبور نباید در Cookie به شکل ساده ذخیره شوند.
$_SESSION در PHP
Session یکی از مهمترین ابزارهای PHP برای مدیریت وضعیت کاربر بین درخواستهای مختلف است.
برای شروع Session:
<?php
session_start();
?>
سپس میتوانیم اطلاعاتی در Session ذخیره کنیم:
<?php
session_start();
$_SESSION['username'] = 'Ali';
?>
در صفحه دیگری که Session فعال شده باشد:
<?php
session_start();
echo $_SESSION['username'] ?? '';
?>
Session در مواردی مانند:
- ورود کاربران
- پنل مدیریت
- سبد خرید
- نگهداری وضعیت کاربر
کاربرد زیادی دارد.
$_ENV در PHP
$_ENV میتواند اطلاعات مربوط به متغیرهای محیطی (Environment Variables) را در اختیار برنامه قرار دهد؛ البته در دسترس بودن آن به تنظیمات PHP و محیط اجرا بستگی دارد.
Environment Variableها در پروژههای حرفهای برای نگهداری تنظیمات محیطی مانند:
- تنظیمات اتصال سرویسها
- حالت اجرای برنامه
- برخی Configurationها
- اطلاعاتی که نباید مستقیماً داخل کد قرار گیرند
استفاده میشوند.
مثلاً:
echo $_ENV['APP_ENV'] ?? 'production';
در پروژههای مدرن PHP معمولاً مدیریت Environment Variables با ابزارها و روشهای استاندارد پروژه انجام میشود.
جمعبندی Superglobals در PHP
برای مرور سریع، جدول زیر کاربرد مهمترین Superglobalها را نشان میدهد:
| Superglobal | کاربرد |
|---|---|
$GLOBALS | دسترسی به متغیرهای Global |
$_SERVER | اطلاعات درخواست و سرور |
$_REQUEST | دریافت دادههای برخی منابع درخواست |
$_GET | دریافت داده از Query String |
$_POST | دریافت دادههای POST |
$_FILES | دریافت اطلاعات فایلهای آپلودشده |
$_ENV | دسترسی به Environment Variables |
$_COOKIE | خواندن Cookieهای ارسالشده |
$_SESSION | مدیریت اطلاعات Session کاربر |
نکات مهم و حرفهای جلسه هفتم
1. GET و POST را با هم اشتباه نگیریم
GET معمولاً برای دادههایی مناسب است که بخشی از URL هستند؛ در حالی که POST برای ارسال داده در بدنه درخواست استفاده میشود.
2. به ورودی کاربر اعتماد نکنید
اطلاعات موجود در:
$_GET
$_POST
$_COOKIE
$_FILES
را باید داده غیرقابل اعتماد (Untrusted Input) در نظر بگیریم.
3. Validation و Sanitization یکی نیستند
Validation بررسی میکند داده مطابق قوانین مورد انتظار هست یا خیر.
مثلاً:
آیا ایمیل معتبر است؟
آیا سن عدد است؟
آیا مقدار در محدوده مجاز قرار دارد؟
اما Escaping برای نمایش امن داده در یک Context مشخص، مانند HTML، استفاده میشود.
4. برای دریافت داده، منبع آن را مشخص کنید
به جای:
$_REQUEST['email']
ترجیحاً از:
$_POST['email']
یا:
$_GET['email']
استفاده کنید تا مشخص باشد داده از چه منبعی آمده است.
5. کلید آرایه را بدون بررسی استفاده نکنید
به جای:
$name = $_POST['name'];
میتوان در موارد مناسب نوشت:
$name = $_POST['name'] ?? '';
و سپس اعتبارسنجی را انجام داد.
6. اطلاعات حساس را نمایش ندهید
در محیط Production از نمایش مستقیم مواردی مانند:
print_r($_SERVER);
خودداری کنید؛ زیرا ممکن است اطلاعاتی درباره محیط سرور و درخواست افشا شود.
تمرین جلسه هفتم
برای اینکه مطالب این جلسه کاملاً جا بیفتد، یک فایل به نام:
lesson7.php
بسازید و برنامهای طراحی کنید که:
- یک فرم دریافت نام داشته باشد.
- فرم با
POSTارسال شود. - با
$_SERVER['REQUEST_METHOD']بررسی شود که فرم ارسال شده است. - نام کاربر با
$_POSTدریافت شود. - اگر نام خالی بود، پیام خطا نمایش داده شود.
- در صورت وارد شدن نام، پیام خوشآمدگویی نمایش داده شود.
- خروجی با
htmlspecialchars()به شکل امن نمایش داده شود.
نمونه کد:
<?php
$message = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
if ($name === '') {
$message = 'لطفاً نام خود را وارد کنید.';
} else {
$safeName = htmlspecialchars(
$name,
ENT_QUOTES,
'UTF-8'
);
$message = "سلام {$safeName}، خوش آمدید!";
}
}
?>
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset=UTF-8>
<title>تمرین جلسه هفتم PHP</title>
</head>
<body>
<form method="post" action="">
<label for="name">
نام شما:
</label>
<input
type=text
id="name"
name=name
>
<button type=submit>
ارسال
</button>
</form>
<?php
echo $message;
?>
</body>
</html>
نتیجهگیری
در این جلسه با یکی از بخشهای مهم PHP یعنی Global Variables و Superglobals آشنا شدیم.
یاد گرفتیم که PHP متغیرهای ویژهای مانند:
$GLOBALS
$_SERVER
$_REQUEST
$_GET
$_POST
$_FILES
$_ENV
$_COOKIE
$_SESSION
در اختیار برنامهنویس قرار میدهد.
این متغیرها پایه بسیاری از قابلیتهای کاربردی PHP هستند. زمانی که فرم ایجاد میکنیم، اطلاعات کاربر را دریافت میکنیم، فایل آپلود میکنیم، سیستم ورود کاربران میسازیم، Session ایجاد میکنیم یا اطلاعات درخواست HTTP را بررسی میکنیم، با همین Superglobalها سروکار خواهیم داشت.
در عین حال، یکی از مهمترین نکاتی که از این جلسه باید به خاطر بسپاریم این است که هر دادهای که از سمت کاربر دریافت میشود قابل اعتماد نیست و قبل از استفاده باید متناسب با کاربرد آن، اعتبارسنجی، پردازش و در صورت نیاز Escape شود.
در جلسات بعدی میتوانیم از همین مفاهیم برای ساخت فرمهای حرفهایتر، سیستم ورود کاربران، آپلود فایل و ارتباط PHP با پایگاه داده استفاده کنیم.

مریم گوهرزاد
مدرس و بنیانگذار هلدینگ آرتا رسانه. برنامه نویس و محقق حوزه بلاکچین و توسعهدهنده بلاکچین | متخصص Solidity | توسعهدهنده وب Full-Stackمن یک توسعهدهنده علاقهمند به فناوریهای بلاکچین و وب ۳ هستم و در زمینه Solidity، توسعه قراردادهای هوشمند و ساخت برنامههای غیرمتمرکز (DApps) فعالیت میکنم. تمرکز من بر طراحی و پیادهسازی راهکارهایی است که در کنار بهرهگیری از فناوریهای نوین، عملکرد مناسب، امنیت و تجربه کاربری مطلوبی ارائه دهند.در کنار تخصص در حوزه بلاکچین، به عنوان یک توسعهدهنده وب Full-Stack نیز در طراحی و توسعه وبسایتها و برنامههای تحت وب فعالیت میکنم. تجربه کار در بخشهای Front-End و Back-End به من این امکان را داده است که پروژهها را از مرحله ایده و طراحی تا توسعه و اجرا، با دیدی جامع دنبال کنم. در فرآیند توسعه، توجه ویژهای به کدنویسی تمیز، معماری مناسب، طراحی واکنشگرا، عملکرد مطلوب و تجربه کاربری روان دارم.



