آخرین به روز رسانی: 1.11.2015
پردازش فرم یکی از راه های اصلی انتقال داده ها به وب سایت است. فرم ها عناصر نشانه گذاری HTML خاصی هستند که حاوی عناصر ورودی مختلفی هستند - جعبه های متن، دکمه ها و غیره. و به کمک داده های فرم می توانیم مقداری داده را وارد کرده و به سرور ارسال کنیم. و سرور در حال پردازش این داده ها است.
ایجاد فرم شامل جنبه های زیر است:
ایجاد عنصر
ویژگی action = "login.php" عنصر فرم مشخص می کند که داده های فرم توسط اسکریپت پردازش می شوند. login.phpکه همراه فایل خواهد بود form.phpدر یک پوشه و ویژگی متد = "POST" نشان می دهد که روش POST به عنوان روش انتقال داده استفاده خواهد شد.
حالا بیایید یک فایل بسازیم login.phpکه دارای محتوای زیر خواهد بود:
رمز عبور شما: $ password ";?>
متغیر جهانی $ _POST برای دریافت داده های فرم استفاده می شود. این یک آرایه انجمنی از داده های ارسال شده با استفاده از روش POST را نشان می دهد. با استفاده از کلیدها می توانیم مقادیر ارسال شده را بدست آوریم. کلیدهای این آرایه مقادیر ویژگی های نام فیلدهای ورودی فرم هستند.
از آنجایی که ویژگی نام فیلد ورودی ورود به سیستم ورود است ( ، سپس در آرایه _POST $ مقدار این فیلد نشان دهنده کلید "login" است: $ _POST ["login"]
و از آنجایی که موقعیت هایی وجود دارد که فیلد ورودی تنظیم نمی شود، به عنوان مثال، زمانی که مستقیماً به اسکریپت می روید: http: // localhost: 8080 / login.php... در این مورد، توصیه می شود قبل از پردازش داده ها، در دسترس بودن داده ها را با استفاده از تابع isset () بررسی کنید. و اگر متغیر تنظیم شده باشد، تابع isset () true خواهد شد.
اکنون می توانیم به فرم مراجعه کنیم:
و با زدن دکمه داده های وارد شده به روش POST به اسکریپت ارسال می شود login.php:
شما مجبور نیستید داده های فرم را به اسکریپت دیگری ارسال کنید، می توانید داده های فرم را در همان فایل فرم پردازش کنید. برای این کار فایل را تغییر می دهیم form.phpبه روش زیر:
وارد سایت شوید
امنیت داده ها
امنیت داده ها در PHP بسیار مهم است. بیایید به چند مکانیسم ساده نگاهی بیندازیم که می تواند امنیت وب سایت ما را بهبود بخشد.
اما ابتدا فرم مربوط به مبحث قبل را گرفته و سعی می کنیم اطلاعاتی را در آن وارد کنیم. به عنوان مثال، بیایید در فیلد ورود وارد کنیم ""، و در قسمت رمز عبور متن"
کلمه عبور
":پس از ارسال داده ها به نشانه گذاری html، کد جاوا اسکریپت تزریق می شود که یک جعبه پیام را نمایش می دهد.
برای جلوگیری از این نوع مشکل امنیتی، از تابع htmlentities () استفاده کنید:
اگر (isset ($ _ POST ["ورود"]) && isset ($ _ POST ["رمز عبور"])) ($ login = htmlentities ($ _ POST ["ورود"])؛ $ رمز عبور = htmlentities ($ _ POST ["رمز عبور" ])؛ echo "ورود شما: ورود $
رمز عبور شما: رمز عبور $ ";)
و حتی پس از وارد کردن کد html یا جاوا اسکریپت، تمامی تگ ها فرار کرده و خروجی زیر را دریافت می کنیم:
ویژگی دیگر، تابع strip_tags () است که به شما امکان می دهد تگ های html را به طور کامل حذف کنید:
اگر (isset ($ _ POST ["ورود"]) && isset ($ _ POST ["رمز عبور"])) ($ login = strip_tags ($ _ POST ["login"])؛ $ password = strip_tags ($ _ POST ["رمز عبور" ])؛ echo "ورود شما: ورود $
رمز عبور شما: رمز عبور $ ";)
حاصل کار آن با همان ورودی خروجی زیر خواهد بود.
روز همگی بخیر الکسی گولینین در تماس است. در آخرین مقاله، متوجه شدید که سریال سازی در php چیست. در این مقاله می خواهم در مورد نحوه کار با آن صحبت کنم فرم ها در PHP... PHP برای اسکریپت نویسی وب طراحی شده است و پردازش فرم شاید مهم ترین در این فرآیند باشد. امروزه حتی نمی توانید با سایت هایی برخورد کنید که مثلاً ثبت نام یا فرم بازخورد یا پرسشنامه ندارند. انجمن ها، فروشگاه های آنلاین، اضافه کردن نظر، ارسال پیام در یک شبکه اجتماعی - همه اینها پردازش داده های قرار داده شده در فیلدهای فرم است. بیایید از یک مثال استفاده کنیم تا بفهمیم چگونه پردازش فرم ها در PHP.
ما یک کار ساده را اجرا خواهیم کرد: شما باید 2 فیلد (نام و نام خانوادگی) ایجاد کنید، این داده ها را به اسکریپت action.php منتقل کنید، در نتیجه باید یک تبریک بیرون بیاید. "خوش آمدید نام خانوادگی"... چه کسی فراموش کرده است که فرم ها چگونه ایجاد می شوند و چه زمینه هایی وجود دارد، می توانید ببینید. بیایید یک فایل test.html ایجاد کنیم:
لطفاً توجه داشته باشید که فایل action.php (در مورد ما) باید در همان پوشه فایل test.html قرار گیرد. در اینجا می توانید مسیرهای نسبی و مطلق را مشخص کنید. مراقب باشید، بسیاری از خطاها با تعیین نادرست مسیر اسکریپت کنترل کننده فرم همراه است.
بیایید یک فایل action.php با محتوای زیر ایجاد کنیم:
اگر اکنون فایل test.html را باز کرده و فیلدهای فرم را پر کرده و روی دکمه کلیک کنیم به فایل action.php میرسیم که در آن پیغامی نمایش داده می شود. در این حالت مرورگر به اسکریپت action.php اشاره می کند و آن را از طریق "?" به آن پاس می دهد. تمام مقادیر ویژگی های نام که در داخل تگ ها قرار دارند جدا شده به واسطه &. توجه داشته باشید که چه چیزی جایگزین _SERVER $ شده است.
ما می توانیم با تجزیه رشته QUERY_STRING با استفاده از توابع استاندارد برای کار با رشته ها در PHP مشکل خود را حل کنیم، اما بهتر است از مکانیزم دیگری استفاده کنیم - این با استفاده از آرایه $ _REQUEST است. PHP تمام داده های دریافتی از فیلدهای فرم را بدون توجه به نحوه انتقال داده ها در آرایه $ _REQUEST قرار می دهد: POST یا GET (شما می توانید از طریق _SERVER $ ["REQUEST_METHOD"] متوجه شوید. اجازه دهید به شما یادآوری کنم که این روش ها چگونه متفاوت هستند:
روش GET عمومی است، روش POST خصوصی است، یعنی. آنها در نحوه ارسال پارامترها متفاوت هستند. مثال:
1) اگر از روش ارسال استفاده کنیم: mysite.ru/request.php.
2) اگر از روش دریافت استفاده کنیم: mysite.ru/request.php?myname=ansAlexans&surname=Gulynin ".
همچنین، علاوه بر آرایه $ _REQUEST، PHP آرایه های $ _GET و $ _POST را ایجاد می کند. بیایید اکنون وظیفه خود را بر اساس دانش به دست آمده اجرا کنیم:
اگر اکنون فرم را پر کرده و روی دکمه کلیک کنیم، می بینیم که اسکریپت action.php با نام خانوادگی و نام به ما سلام می دهد. همه چیز به درستی کار می کند.
اینجا همه چیز خوب است، اما اگر نام اسکریپت را تغییر دهیم، باید تغییراتی در فایل test.html ایجاد کنیم. بیایید فایل action.php را طوری تغییر دهیم که با دسترسی به آن، زمانی که چیزی ارسال نکردهایم، فرمی نمایش داده میشود، یا وقتی روی دکمه کلیک میکنیم، تبریک میگوییم:
اکنون ما به نام اسکریپت وابسته نیستیم، زیرا ما آن را از طریق متغیر محیطی $ _SERVER ["SCRIPT_NAME"] تنظیم می کنیم. = $ _ SERVER ["SCRIPT_NAME"]؟> معادل است .
علاوه بر متغیر محیطی SCRIPT_NAME، متغیرهای بسیار دیگری نیز وجود دارد.
امروز ما روی ایجاد یک فرم بازخورد زیبای HTML برای سایت کار خواهیم کرد که توسط PHP پشتیبانی میشود و دارای محافظت داخلی در برابر هرزنامه است. شما نیاز به دانش خاصی ندارید، اصول اولیه html و منطق ابتدایی کافی خواهد بود. فایل های آماده ای را می دهم که می توانید بدون تغییر در سایت قرار دهید یا متناسب با نیاز خود تنظیم کنید.
من اخیراً مقاله ای در مورد نحوه انجام این کار با استفاده از افزونه فرم تماس 7 انجام دادم. همچنین می توانید فقط یک فرم بازخورد در جوملا و سایر CMS های محبوب ایجاد کنید.
اما سایت هایی که از CMS محبوب استفاده نمی کنند چطور؟ - باقی مانده است که همه چیز را با دستان خود انجام دهید.
علاوه بر این، استفاده از بازخورد بدون افزونه برای وردپرس نیز امکان پذیر است. افزونه های اضافی بار قابل توجهی بر روی سرورها ایجاد می کنند و رها کردن آنها به شما امکان می دهد سرعت سایت را افزایش دهید.
می توانید نصب و سفارشی سازی فرم تمام شده را با قیمت 500 روبل در اینجا سفارش دهید (این برای کسانی است که خیلی تنبل هستند که با دستان خود کار کنند یا مهارت کافی نیست).
نحوه عملکرد فرم بازخورد html
فرم ما دارای 5 فیلد برای وارد کردن داده ها خواهد بود - نام، آدرس ایمیل، شماره تلفن، آدرس وب سایت، متن پیام (شما می توانید خودتان آنها را حذف یا تغییر دهید).
همه فیلدها، به جز آدرس وب سایت، مورد نیاز خواهند بود (همچنین می توانید خودتان آن را پیکربندی کنید).
برای فیلدهای دارای آدرس ایمیل و وب سایت، بررسی اجباری صحت ورود داده ها انجام می شود.
فرم تماس نهایی به شکل زیر خواهد بود:
فرم تماس ایجاد شده در html برای کار به 3 عنصر نیاز دارد.
اولی مسئول ساختار خود فرم، نوع و تعداد فیلدهای ورودی داده است. این کد معمولی html است.
دومی مسئول پردازش داده هایی است که کاربر در فیلدهای فرم وارد می کند. پس از کلیک روی دکمه ارسال پیام، مشخص می کند که چه چیزی، کجا و به چه شکلی فوروارد شود. برای پیاده سازی از یک اسکریپت خاص PHP استفاده می شود.
سوم مسئول ظاهر است. اندازه و موقعیت فیلدهای ورودی داده را تنظیم می کند، رنگ ها و افکت های مختلف را اضافه می کند. این همه توسط سبک های CSS تنظیم شده است.
نسخه آزمایشی فرم
ما تنظیمات هر یک از این عناصر را مرحله به مرحله تجزیه و تحلیل خواهیم کرد.
ایجاد طرح بندی HTML
برای اینکه مقاله زیاد طولانی نشود و هر عنصر جداگانه اضافه نشود، کد html کامل را می دهم و در زیر هر بلوک و تغییرات احتمالی را شرح می دهم.
برای نشان دادن فرم ها در html از تگ استفاده می شود
، که در داخل آن پارامترهای لازم پر شده است.بیایید با خط اول شروع کنیم.
class = "contact_form"- ما کلاس را به منظور تنظیم سبک های CSS در آینده نشان می دهیم.
action = ”contact-form.php”- نام فایل را با اسکریپتی که داده های فرم را پردازش کرده و پیام ارسال می کند، مشخص کنید. اگر فایل در همان پوشه صفحه با فرم است، کافی است فقط نام فایل را مشخص کنید، اگر در پوشه دیگری باشد، باید مسیر فایل را مشخص کنید.
سپس 4 بلوک وجود دارد
مسئول خروجی فیلدها برای ورود اطلاعات، از اسامی مشخص است که کدام یک مسئول چه چیزی است. خود فیلدها با استفاده از تگ ها نمایش داده می شوند ، که در داخل آن ویژگی های زیر تنظیم شده است:
تایپ کنید- مسئول نوع داده های ورودی، متن - متن ساده، ایمیل - آدرس ایمیل، چنین فیلدهایی به طور خودکار برای صحت بررسی می شوند (@ باید وجود داشته باشد)، شماره تلفن، آدرس اینترنتی - آدرس سایت.
نام- نام خود عنصر، لازم است که اسکریپت بداند که چگونه از داده های هر فیلد استفاده کند. اگر چندین فیلد از یک نوع ایجاد کنید، باید به هر فیلد یک نام اختصاص دهید.
مکان نگهداریک اشاره در داخل فیلد است، متنی که جایگزین فیلد خالی عنصر می شود. می توان آن را تغییر داد یا حذف کرد؛ این کار تأثیری بر عملکرد فرم ندارد.
ضروری- این پارامتر نشان می دهد که فیلد مورد نیاز است. شما می توانید خودتان تصمیم بگیرید که کدام عناصر مورد نیاز هستند و کدام نه.
الگو = ”(http | https): //.+”- این ساختار برای بررسی درستی فیلد وب سایت است، نشان می دهد که آدرس باید حاوی متن http: // یا متن https: // باشد، در غیر این صورت خطایی رخ می دهد.
برخی از فیلدها دارای یک راهنمای ابزار هستند که هنگام انتخاب یک مورد ظاهر می شود. او صدمه دیده است ، جایی که form_hint کلاس عنصر است (ویژگی های آن در CSS نوشته شده است). می توانید هر متنی را در راهنمای ابزار برای هر قسمت از فرم تماس تنظیم کنید. اگر به چنین ویژگی نیاز ندارید، فقط کل برچسب را حذف کنید.
فیلدهای وارد کردن خود پیام با یک برچسب مشخص شده است
حفاظت از هرزنامه- یک فیلد نامرئی با نام = bezspama. این یک نمایشگر دارد: سبک هیچ - این بدان معناست که فیلد برای افراد نامرئی است، اما ربات ها آن را به طور خودکار پر می کنند.
و عنصر نهایی هر فرمی دکمه ارسال پیام است که توسط تگ تنظیم می شود که کلاس مخصوص به خود را برای شخصی سازی ظاهر دارد و عبارت Submit را تایپ می کند.
برای افزودن یا حذف فیلدها کافی است فیلدهای غیرضروری را حذف کنید یا فیلدهای جدید را با قیاس با فیلدهای موجود درج کنید و تمام ویژگی ها و نام ها را برای آنها ثبت کنید.
استایل با CSS
اگر در مرورگر به اتفاقی که افتاده نگاه کنید، چیزی ناشیانه و غیرجذاب خواهید دید. برای اینکه بتوانیم یک فرم بازخورد زیبا داشته باشیم، باید روی سبک های آن کار کنیم (html کافی نخواهد بود).
اگر در CSS مهارت دارید، می توانید طراحی را برای همه عناصر فرم بدون مشکل تنظیم کنید، حتی به کمک من نیازی ندارد.
اگر با استایل ها آشنایی ندارید، من به سادگی یک فایل آماده به شما می دهم، که در آن همه چیز به گونه ای نوشته شده است که فرم شما با نمونه موجود یکسان باشد.
دو راه برای اتصال سبک ها وجود دارد:
- محتوای فایل را در فایل style.css که از قبل در سایت شما قرار دارد کپی کنید (به انتها اضافه کنید)
- فایلی که دادم را در هاست خود قرار دهید و وصل کنید.
فایل های سبک با کد زیر متصل می شوند داخل قرار داده شده است
... اگر فایل دارای styles (styles.css) در یک پوشه با صفحه html نیست، مسیر کامل آن را بنویسید.در فایل با سبک هایی که من دادم، هر عنصر امضا شده است، بنابراین، می توانید هر تغییری در آن ایجاد کنید - رنگ ها، اندازه ها، شکل ها، جلوه ها را تغییر دهید. با ابتدایی ترین دانش می توانید به راحتی آن را ویرایش کنید.
پیکربندی کد PHP (حفاظت ضد اسپم اضافه شده)
همانند استایل ها، من یک کد آماده برای مدیریت فرم HTML فرم تماس و محافظت از آن در برابر هرزنامه به شما می دهم. این فایل برای یک پیکربندی خاص تطبیق داده شده است و اگر می خواهید فیلدهای جدیدی را تنظیم کنید یا موارد موجود را حذف کنید، باید تغییراتی در آن ایجاد کنید. بنابراین، من به شما خواهم گفت که چگونه کار می کند، تا متوجه شوید که چه چیزی باید تغییر کند.
برای سایتهایی که از رمزگذاری ویندوز 1251 و php 5.4+ استفاده میکنند، باید کدی را به کد مربوط به تابع htmlspecialchars اضافه کنید. من آن را در زیر نشان خواهم داد. در غیر این صورت، فیلدهای خالی به جای سیریلیک می آیند.
به یاد داشته باشید که در خصوصیات فرم (در فایل html) پارامتر action = ”contact-form.php” را مشخص کردیم. شما باید یک فایل به نام contact-form.php ایجاد کنید و کد زیر را در آن قرار دهید.
\ r \ n پاسخ به: ایمیل $ \ r \ n "؛ if (ایمیل ($ آدرس، $ زیر، $ mes، $ از)) (سرصفحه ("Refresh: 5; URL = https: // site") ؛ پژواک "
";) else (سرصفحه ("Refresh: 5; URL = https: // site "); echo" ";)) خروج؛ / * اگر فیلد bezspama با ربات های هرزنامه پر شده است، بدون پیام خارج شوید * /?>/ * تنظیم متغیرها * / $ name = htmlspecialchars ($ _POST ["name"]); $ email = htmlspecialchars ($ _POST ["email"]); $ tel = htmlspecialchars ($ _POST ["tel"]); $ website = htmlspecialchars ($ _POST ["website"]); $ message = htmlspecialchars ($ _POST ["پیام"]); $ bezspama = htmlspecialchars ($ _POST ["bezspama"]); / * آدرس و موضوع پیام شما * / زیر دلار = "پیام از سایت XXX"; / * قالب نامه * / $ mes = "پیام از سایت XXX. \ N نام فرستنده: نام $ ایمیل فرستنده: ایمیل $ تلفن فرستنده: تلفن دلار وب سایت فرستنده: وب سایت $ متن پیام: پیام $ "; اگر (خالی ($ bezspama)) / * ارزیابی فیلد bezspama - باید خالی باشد * / / * با استفاده از تابع mail () پیام ارسال کنید * / $ از = "از: نام $<$email>\ r \ n پاسخ به: $ email \ r \ n "; اگر (ایمیل ($ آدرس، $ زیر، $ mes، $ از)) ( سرتیتر ()؛ پژواک"
ایمیل ارسال شد، در عرض 5 ثانیه به صفحه XXX بازگردانده می شوید" ; } دیگر ( سرتیتر ( "Refresh: 5; URL = https: // سایت") ; پژواک"
ایمیل ارسال نشد، تا 5 ثانیه دیگر به صفحه YYY بازگردانده می شوید" ; } خروج؛ / * اگر فیلد bezspama با ربات های هرزنامه پر شده است، بدون پیام خارج شوید * / |
اول از همه، ما باید متغیرهایی را که توسط کد php پردازش می شوند را تنظیم کنیم. برای اینکه گیج نشویم، به آنها همان نام هایی را که در خود فرم بود اختصاص می دهیم، فقط همه متغیرها با علامت $ شروع می شوند. خود دستور انتساب به شکل زیر است:
$ title = htmlspecialchars ($ _ POST ["عنوان"]);
$ title = htmlspecialchars ($ _POST ["title"]); |
اگر فیلدهای داده دیگری اضافه کردید، نام آنها را در بلوک متغیرها اضافه کنید.
ما همه متغیرها را از فرم نمی گیریم. حداقل آدرس ایمیلی که نامه به آن ارسال می شود (آدرس شما) به طور جداگانه مشخص می شود. در این مورد، این متغیر آدرس $ است - حساب ایمیل خود را در مقدار آن وارد کنید.
همچنین، در این مثال، مقدار متغیر $ sub به صراحت تنظیم شده است - موضوع حرف را نمایش می دهد. می توانید موضوع پیام را به عنوان یک فیلد متنی (مانند نام) به فرم HTML اضافه کنید و مقدار این متغیر را از آنجا بگیرید.
در بلوک قالب نامه، پیامی که دریافت خواهید کرد پیکربندی شده است. ممکن است با آنچه در قسمت textarea به نام پیام نوشته شده است متفاوت باشد. من فقط یک متغیر $mes دیگر ساختم و متن اضافی و داده های مهم فرستنده (نام، ایمیل، تلفن، وب سایت) را در آن قرار دادم. شما می توانید این قسمت را به دلخواه پیکربندی کنید.
برای اینکه حروفی که دریافت می کنید با نام فرستنده امضا شوند و آدرس برگشتی آنها در آنها باشد و نه آدرس سروری که فایل php شما در آن قرار دارد، یک متغیر جدید $ از آن قرار می دهیم که نام را در آن قرار می دهیم. و آدرس ایمیل فرستنده نامه
سپس تابع mail ارسال نامه را با توجه به پارامترهای مشخص شده انجام می دهد. در صورت ارسال موفقیت آمیز پیامی مبنی بر ارسال نامه ظاهر می شود و پس از 5 ثانیه کاربر به صفحه سایت شما هدایت می شود (می توانید آدرس صفحه و زمان تاخیر را تغییر دهید). اگر ایمیل با موفقیت ارسال نشد، پیامی مبنی بر ارسال نشدن ایمیل ظاهر می شود و پس از 5 ثانیه انتقال به صفحه سایت انجام می شود، به همین ترتیب می توانید آدرس و زمان صفحه را تنظیم کنید.
درج فرم در صفحه سایت
برای درج فرم بازخوردی که ایجاد کردهاید، باید کد html فرم را کپی کرده و در قسمتی از کد صفحه که میخواهید بازخورد سایت را نمایش دهید، قرار دهید.
یک بار دیگر می خواهم به شما یادآوری کنم که اگر فایل با برنامه PHP در همان پوشه صفحه ای که کد html در آن قرار دارد نیست، در کد خود فرم باید مسیر کامل آن را بنویسید. ، در غیر این صورت کار نمی کند، زیرا فرم کنترل کننده فایل را پیدا نمی کند.
فایل های فرم تماس را دانلود کنید
ضد هرزنامه فعال با ورود داده ها در این زمینه
هرزنامهها با استفاده از ابزارهای نرمافزاری مختلف کار میکنند و برخی از رباتها میتوانند با یک فیلد خالی که در نسخه اصلی تعبیه شده است، حفاظت را دور بزنند. اگر آنها شروع به آزار و اذیت شما کردند، می توانید به جای یا علاوه بر این، محافظت ساده ای را با وارد کردن داده ها در یک زمینه خاص اعمال کنید. به عنوان مثال، یک عبارت ریاضی بسازید که از شما بخواهد یک پاسخ را وارد کنید یا یک سوال ساده بپرسید. این نیازی به تغییرات عمده در فرم ندارد.
من به شما نشان خواهم داد که چگونه کد فرم و کنترل کننده PHP را برای استفاده از این روش ضد اسپم تغییر دهید. در صورت تمایل، نمی توانید حفاظت را با یک فیلد خالی تغییر دهید، بلکه خطوط مناسب را به کد اضافه کنید و 2 روش به طور همزمان برای شما کار می کند - در تئوری، باید کارآمدتر باشد.
اولین کاری که باید انجام دهیم این است که یک فیلد ورودی و یک سوال به کد HTML اضافه کنیم. ما قبلاً خط 25 (نام ورودی = "bezspama") را به عنوان پایه داریم. این میدان نامرئی است. ما آن را به یک نمونه معمولی تبدیل می کنیم. برای انجام این کار، کل خط را به بلوک زیر تغییر دهید:
|
به جای عبارت ریاضی 2 + 2 * 2، می توانید هر داده ای را وارد کنید - این یک سوال بصری برای کاربر است. سبک نمایشگر: none را از قسمت ورودی حذف کردیم و پر کردن مورد نیاز را اضافه کردیم.
گام بعدی این است که داده های موجود در PHP handler را طوری تغییر دهید که نه خالی بودن این فیلد، بلکه صحت داده های وارد شده را بررسی کند. بررسی ما در خط 25 با عبارت خالی ($ bezspama) انجام شد. ما این عبارت را تغییر می دهیم و بررسی می کنیم که آیا فیلد پر شده برابر با یک عدد از پیش تعیین شده است یا خیر. در مثال من، عبارت ریاضی 6 است، بنابراین کل خط به این شکل خواهد بود.
بر کسی پوشیده نیست که رایج ترین روش تعامل یک صفحه html با یک سایت، فرم است. یک فرم (یعنی عنصر html که توسط تگ فرم تشکیل شده است) توسط خدمات پستی رایگان، فروشگاه های الکترونیکی و بسیاری از انواع دیگر سایت ها نیز استفاده می شود.
پردازش فرم های ساده با PHP آسان است. با این حال، هر از گاهی نیاز به پردازش یک فرم حاوی چندین فیلد از یک نوع وجود دارد، علاوه بر این، تعداد آنها می تواند در محدوده وسیعی متفاوت باشد و تعداد آنها از قبل مشخص نیست. PHP برای چنین مواردی پردازش از همان نوع فیلدها را به عنوان آرایه ای از مقادیر فراهم می کند.
بیایید با جزئیات بیشتری گزینه ها را برای انواع مختلف فیلدها در نظر بگیریم.
فیلدهای متنی
فیلدهای متنی در این مقاله به عناصر ایجاد شده توسط تگ های ورودی با پارامتر نوع متن و تگ textarea اشاره دارد. سازماندهی پردازش یک فرم متشکل از چندین فیلد ساده تر است. فهرست زیر فهرستی با نشانه گذاری html برای چنین فرمی را نشان می دهد.
همانطور که از لیست می بینید، نام عناصر فرم، از دیدگاه PHP، عناصر آرایه هستند. بنابراین، اسکریپت PHP که این فرم را پردازش می کند، کل مجموعه فیلدهای متنی در آن فرم را به عنوان یک آرایه واحد در نظر می گیرد. عناصر منفرد را می توان با فهرست ارجاع داد یا با استفاده از فهرست و هر دستور، مانند مثال زیر، شمارش کرد.
n ";؟>
سوئیچ ها
چک باکس ها در این مقاله عناصری هستند که توسط تگ های ورودی با پارامتر نوع برابر با چک باکس ایجاد می شوند. فرم استفاده از تعداد متغیر "سوئیچ" دقیقاً به همین ترتیب ساخته شده است. توجه داشته باشید که انتخاب یک مقدار دکمه رادیویی خاص (یعنی مقدار خاصیت value) مهم نیست. یک مثال در لیست زیر نشان داده شده است:
با این حال، پردازش چنین فرمی با پردازش توصیف شده برای فیلدهای متنی متفاوت است. در این صورت باید مشخص شود که بازدیدکننده سایت این یا آن سوئیچ را روشن کرده است یا خیر. اگر فعال باشد، عنصر مربوطه آرایه وجود دارد، اگر نه، وجود ندارد. فهرست زیر نمونه ای از اسکریپت PHP را نشان می دهد که سوئیچ های فعال شده را چاپ می کند:
دکمه های رادیویی
قبل از توصیف پردازش دکمه های رادیویی، باید به یاد داشته باشید که چگونه کار می کنند. ماهیت دکمه های رادیویی (عناصر ایجاد شده توسط برچسب های ورودی با مقدار پارامتر نوع برابر با رادیو) این است که با انتخاب یک دکمه، کاربر به طور خودکار دکمه دیگری را از همان مجموعه از حالت انتخاب خارج می کند. ترکیب دکمه ها در یک مجموعه بسیار آسان است: همه دکمه های یک مجموعه یک نام دارند.
اما مقادیر (یعنی پارامترهای مقدار) دکمه های مجموعه متفاوت است. و مقدار دکمه انتخاب شده با نام مجموعه به سایت ارسال می شود. مانند فیلدهای متنی و دکمه های رادیویی، نام مجموعه دکمه های رادیویی باید به عنوان نام عناصر آرایه در PHP فرمت شود. نمونه ای از چنین فرمی در لیست زیر نشان داده شده است:
پردازش دکمههای رادیویی ایدهها را با هم ترکیب میکند و هم از فیلدهای متنی و هم از دکمههای رادیویی در پردازش استفاده میکند. اگر نویسنده صفحه html یک مقدار پیش فرض تنظیم نکرده باشد و کاربر دکمه خاصی را در مجموعه دکمه های رادیویی انتخاب نکرده باشد، این عنصر در آرایه وجود نخواهد داشت (مانند دکمه های رادیویی).
اگر دکمه انتخاب شده باشد، عنصر مربوطه آرایه حاوی مقدار آن خواهد بود (مانند فیلدهای متنی). در زیر فهرستی از نمونه ای وجود دارد که یک فرم را با چندین مجموعه از دکمه های رادیویی پردازش می کند.
n ";؟>
بنابراین، هیچ چیز دشواری در پردازش اشکال پیچیده وجود ندارد.
جاوا اسکریپت در مرورگر شما مسدود شده است. لطفا جاوا اسکریپت را فعال کنید تا سایت کار کند!
کار با فرم ها
فرم های HTML برای انتقال داده ها از کاربر صفحه وب به سرور استفاده می شود. تعدادی ابزار ویژه برای کار با فرم ها در PHP وجود دارد.
متغیرهای از پیش تعریف شده
PHP دارای تعدادی متغیر از پیش تعریف شده است که وقتی همه برنامه ها در یک محیط خاص اجرا می شوند، تغییر نمی کنند. به آنها متغیرهای محیطی یا متغیرهای محیطی نیز گفته می شود. آنها تنظیمات محیط وب سرور آپاچی و همچنین اطلاعات درخواستی برای مرورگر داده شده را منعکس می کنند. دریافت مقادیر URL، رشته پرس و جو و سایر عناصر درخواست HTTP امکان پذیر است.
همه متغیرهای از پیش تعریف شده در آرایه انجمنی $ GLOBALS قرار دارند. این آرایه علاوه بر متغیرهای محیطی شامل متغیرهای سراسری تعریف شده در برنامه نیز می باشد.
مثال 1
"; ?>
در نتیجه، لیستی از همه متغیرهای سراسری، از جمله متغیرهای محیطی، روی صفحه ظاهر می شود. متداول ترین آنها:
متغیر | شرح | محتوا |
---|---|---|
$ _SERVER ["HTTP_USER_AGENT"] | نام و نسخه مشتری | Mozilla / 5.0 (سازگار؛ Googlebot / 2.1؛ + http: //www.google.com/bot.html) |
$ _SERVER ["REMOTE_ADDR"] | آدرس آی پی | 144.76.94.14 |
getenv ("HTTP_X_FORWARDED_FOR") | آدرس IP داخلی مشتری | |
$ _SERVER ["REQUEST_METHOD"] | روش درخواست (GET یا POST) | گرفتن |
$ _SERVER ["QUERY_STRING"] | در یک درخواست GET، داده های رمزگذاری شده همراه با URL ارسال می شود | |
$ _SERVER ["REQUEST_URL"] | آدرس کامل مشتری، از جمله رشته پرس و جو | |
$ _SERVER ["HTTP_REFERER"] | آدرس صفحه ای که از آن درخواست شده است | |
$ _SERVER ["PHP_SELF"] | مسیر برنامه اجرایی | /index.php |
$ _SERVER ["SERVER_NAME"] | دامنه | سایت |
$ _SERVER ["REQUEST_URI"] | مسیر | /php/php_form.php |
مدیریت ورودی کاربر
برنامه پردازش ورودی PHP را می توان از متن HTML حاوی فرم های ورودی جدا کرد یا می توان آن را در یک صفحه قرار داد.
مثال 2
در اینجا دکمه انتقال داده وجود ندارد، زیرا با فشار دادن یک کلید، یک فرم فیلد به صورت خودکار ارسال می شود
هنگام پردازش یک آیتم با یک انتخاب چند ارزشی، باید یک جفت کروشه به نام مورد اضافه کنید تا به تمام مقادیر انتخاب شده دسترسی داشته باشید. برای انتخاب چندین مورد، کلید Ctrl را نگه دارید.
مثال 3.1
نتیجه مثال 3.1:
مثال 3.2
- "; foreach ($ آیتم به عنوان $ مقدار) echo"
- ارزش $ "; echo"
مثال 4. دریافت مقادیر از چک باکس ها
$ v) (اگر ($ v) echo "شما زبان برنامه نویسی $ k را می شناسید!"; else echo" شما زبان برنامه نویسی $ k را نمی دانید.
"; } } ?>
نتیجه مثال 4:
مثال 5
"; ?>پردازش فرم ها بدون نگرانی در مورد نام فیلدهای واقعی امکان پذیر است.
برای انجام این کار، می توانید (بسته به روش انتقال) از آرایه انجمنی $ HTTP_GET_VARS یا $ HTTP_POST_VARS استفاده کنید. این آرایه ها شامل جفت نام / مقدار برای هر عنصر فرم ارسال شده است. اگر اهمیتی نمی دهید، می توانید از آرایه انجمنی _REQUEST $ استفاده کنید.
مثال 6
"; ?>
مثال 7. مدیریت کلیک بر روی یک دکمه با استفاده از عملگر "@".
با استفاده از تابع هدر () با ارسال هدر "مکان" به مرورگر، می توانید کاربر را به صفحه جدیدی هدایت کنید.
مثلا:
header("Location: ex2.php"); ?>
انتقال فایل به سرور آپلود فایل. بارگذاری
PHP به شما امکان می دهد فایل ها را به سرور منتقل کنید. فرم HTML برای ارسال فایل باید حاوی آرگومان enctype = "multipart / form-data" باشد.
علاوه بر این، باید یک فیلد مخفی به نام max_file_size در جلوی قسمت کپی فایل در فرم وجود داشته باشد. این فیلد پنهان باید حداکثر حجم فایل منتقل شده را داشته باشد (معمولاً بیش از 2 مگابایت).
فیلد انتقال فایل خود یک عنصر INPUT معمولی با آرگومان type = "file" است.
مثلا:
پس از آپلود فایل در سرور، به صورت منحصربفرد نامگذاری شده و در دایرکتوری موقت ذخیره می شود. مسیر کامل فایل در یک متغیر سراسری نوشته می شود که نام آن با نام فیلد انتقال این فایل یکی است. علاوه بر این، PHP اطلاعات اضافی در مورد فایل منتقل شده را در سایر متغیرهای جهانی ذخیره می کند:
مثال 8
"; echo" اندازه: ". $ _ FILES [" userfile "] [" size "]."
"; echo" نوع: ". $ _ FILES [" userfile "] [" type "]."
"; } ?>
نمونه هایی از آپلود فایل ها در سرور
اگر با رمزگذاری سرور فایل آپلود شده مشکل دارید، نماد با کد 0x00با یک فاصله (نویسه با کد 0x20، به فایل اضافه کنید httpd.confاز دایرکتوری آپاچی (/ usr / local / apache) خطوط زیر.