متغیرهای عمومی از پیش تعریف شده (Superglobal) در PHP
Superglobalها در واقع متغیرهای از پیش تعریف شده ای هستند که صرفنظر از محدوده یا قلمرو، همیشه می توانید در هر تابع، کلاس یا فایلی به آنها دسترسی داشته باشید.
متغیرهای Superglobal در PHP:
- GET_$
- POST_$
- REQUEST_$
- GLOBALS$
- SERVER_$
- FILES_$
- ENV_$
- COOKIE_$
- SESSION_$
در این بیاموزهای و بیاموزهای بعدی، درباره هر کدام از متغیرهای بالا، توضیح داده خواهد شد.
متغیر GET_$
GET_$ یک متغیر یا آرایه از پیش تعریف شده است و مقادیر فرم HTMLی که خصوصیت method آن با مقدار "get" پر شده باشد، به صورت اتوماتیک در آن ذخیره می شوند.
توجه:
- توجه داشته باشید حروف متغیر GET_$، حروف بزرگ است.
- اطلاعات فرستاده شده از یک فرم HTMLی که خصوصیت method آن با مقدار "get" پر شده باشد توسط هر شخصی قابل مشاهده است (اطلاعات در نوار آدرس مرورگر نمایش داده می شود)، این موضوع در ارسال اطلاعات محدودیت ایجاد می کند.
مثال:
<form action="welcome.php" method="get">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
زمانی که کاربر روی دکمه "Submit" کلیک می کند، URL زیر به سرور فرستاده می شود و البته این آدرس توسط هر شخصی قابل مشاهده است:
https://beyamooz.com/welcome.php?fname=Amir&age=28
فایل "welcome.php" حالا می تواند با استفاده از متغیر GET_$ اطلاعات فرم HTML را جمع آوری کند.
نکته: نام (name) هر فیلد در فرم HTML یکتا است. این نام در حقیقت ایندکس آرایه GET_$ خواهد بود، و با آن می توانیم به مقادیر فیلدها دسترسی داشته باشیم.
Welcome <?php echo $_GET["fname"]; ?>.<br />
You are <?php echo $_GET["age"]; ?> years old!
چه موقع از متد "get' استفاده کنیم؟
- زمانی که می خواهیم کلمه عبور یا اطلاعات حساس کاربر را ارسال کنیم، نباید ار متد get استفاده کرد.
- متد get برای ارسال متغیرهای با مقادیر بزرگ، مانند متن ها مناسب نیست.(نباید مقادیرمان بیشتر از 2000 کاراکتر باشد)
- به خاطر اینکه متغیرها و مقادیرشان در URL نمایش داده می شود، بنابراین می توان از آنها در صفحات دیگر پروژه استفاده کرد، در حقیقت از این طریق می توان متغیر ها را به صفحات دیگر پاس داد.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
you are years old!
beyamooz.com/images/PHP/test2.zip
و سپس در مرورگر، آدرس زیر رو وارد کنید:
http://localhost/test2/
1- قسمت های متمایز شده در کد زیر را بررسی کنید:
ویژگی action دقیقا با مقدار welcome.php و ویژگی name دو input نیز درست تنظیم شده باشد:
<form action="welcome.php" method="get">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
2- فایل welcome.php را باز کنید و قسمت های متمایز شده در زیر را دقیقا بررسی کنید که با مقادیر تنظیم شده برای ویژگی name در بالا یکسان باشد:
Welcome <?php echo $_GET["fname"]; ?>.<br />
You are <?php echo $_GET["age"]; ?> years old!
beyamooz.com/images/PHP/beyamooz.zip
جناب من فایل رو دانلود کردم اما همچنان بعد از submit کردن کد php رو نشون میده و زمانی که از روی localhost فایل php رو باز میکنم ارور undefined index میده
من دقیقا فایل های ارسال شده رو اجرا کردم
beyamooz.com/images/PHP/test2.zip
و سپس در مرورگر، آدرس زیر رو وارد کنید:
http://localhost/test2/
از REQUEST_$ برای دریافت اطلاعاتی که به صفحه ارسال شده استفاده میشه. چه شما از get استفاده کرده باشی و چه از post.
کدی نیومده!
وقتی از طریق متد post یا get مقداری ارسال می کنم در صفحه php که ایجاد کردم متغیر پست خالیه و مقداری داخل آن ارسال نمیشه
با تشکر
اگر بخواهیم همه ی این دستورت را داخل یک دستور php قرار دهیم، اونوقت باید عبارات اچ تی ام ال مورد نظر(مثل welcome و you are ) را در متغیر هایی قرار دهیم و آنها را echo کنیم که در این صورت کار پیچیده می شود.
Welcome ;lt& ?php echo $_GET["fname"]; . & You are
welcome<?php echo($_GET['fname']."<br>". "you are" . $_GET["age"] . "years old";)?>
اما به نظر بنده، در آموزش مقدماتی php این روش کمی پیچیده به نظر می رسه.