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

مثال شماره 1 ساده ترین فرم HTML

اسم شما:

سن شما:

هیچ چیز خاصی در مورد این فرم وجود ندارد. این یک فرم معمولی HTML بدون هیچ برچسب خاصی است. هنگامی که کاربر فرم را پر می کند و دکمه ارسال را کلیک می کند، صفحه action.php فراخوانی می شود. این فایل ممکن است حاوی چیزی شبیه به:

Beispiel #2 ارائه داده های فرم

سلام، .
برای توسال ها.

نمونه خروجی از این برنامه:

سلام سرگئی. شما 30 ساله هستید.

اگر قطعات کد را در نظر نگیرید htmlspecialchars()و (int)، اصل عملکرد این کد باید ساده و واضح باشد. htmlspecialchars()تضمین می کند که کاراکترهای HTML "ویژه" به درستی کدگذاری شده اند تا HTML یا جاوا اسکریپت مخرب در صفحه شما درج نشود. فیلد سنی که می دانیم باید یک عدد باشد، به سادگی می توانیم به آن تبدیل کنیم عدد صحیح، که به طور خودکار از شر شخصیت های ناخواسته خلاص می شود. PHP همچنین می تواند این کار را به صورت خودکار با پسوند فیلتر انجام دهد. متغیرهای $_POST["name"] و $_POST["age"] به طور خودکار توسط PHP برای شما تنظیم می شوند. قبلاً ما از $_SERVER superglobal استفاده می کردیم، اما در اینجا از $_POST superglobal نیز استفاده می کنیم که شامل تمام داده های POST است. توجه کنید که روش ارسال(روش) فرم ما POST است. اگر بخواهیم از روش استفاده کنیم گرفتن، سپس اطلاعات فرم ما در superglobal $_GET خواهد بود. یا اگر منبع داده نامربوط باشد، می توانید از متغیر $_REQUEST استفاده کنید. این متغیر حاوی ترکیبی از داده های GET، POST، COOKIE است.

15 سال پیش

طبق مشخصات HTTP، زمانی که از فرم برای تغییر وضعیت چیزی در انتهای سرور استفاده می‌کنید، باید از روش POST استفاده کنید. برای مثال، اگر صفحه‌ای دارای فرمی است که به کاربران اجازه می‌دهد نظرات خود را اضافه کنند، مانند این. در صفحه اینجا، فرم باید از POST استفاده کند، به همین دلیل است که این صفحات نشانک یا کش نیستند.

زمانی که فرم شما چیزی را از سرور خارج می کند، باید از روش GET استفاده کنید و نهدر واقع هر چیزی را تغییر می دهد به عنوان مثال فرم براییک موتور جستجو باید از GET استفاده کند، زیرا جستجو در یک وب سایت نباید چیزی را که مشتری ممکن است به آن اهمیت دهد تغییر دهد، و نشانک گذاری یا ذخیره نتایج جستجوی موتور جستجو به همان اندازه مفید است که نشانک گذاری یا ذخیره یک صفحه HTML ایستا.

2 سال پیش

شایان توضیح است:

POST امن تر از GET نیست.

دلایل انتخاب GET در مقابل POST شامل عوامل مختلفی مانند هدف درخواست (آیا شما اطلاعات را "ارسال می کنید؟")، اندازه درخواست (محدودیت هایی برای مدت زمان URL وجود دارد، و پارامترهای GET در آدرس ارسال می شوند). URL)، و به راحتی می‌خواهید Action قابل اشتراک‌گذاری باشد -- به عنوان مثال، جستجوهای Google GET هستند زیرا کپی کردن و اشتراک‌گذاری عبارت جستجو را با شخص دیگری به سادگی با اشتراک‌گذاری URL آسان می‌کند.

امنیت تنها در اینجا مورد توجه قرار می گیرد زیرا GET به اشتراک گذاری آسان تر از POST است. مثال: شما نمی خواهید رمز عبور توسط GET ارسال شود، زیرا ممکن است کاربر URL حاصل را به اشتراک بگذارد و سهوا رمز عبور خود را فاش کند.

با این حال، اگر از TLS/SSL برای محافظت از خود اتصال شبکه استفاده نکنید، یک GET و یک POST به یک اندازه توسط یک فرد مخرب با موقعیت مناسب قابل رهگیری هستند.

همه فرم‌های ارسال شده از طریق HTTP (معمولاً پورت 80) ناامن هستند و امروزه (2017) دلایل خوبی برای استفاده نکردن یک وب‌سایت عمومی از HTTPS (که اساساً امنیت لایه انتقال HTTP + است) وجود ندارد.

به عنوان یک امتیاز، اگر از TLS استفاده می‌کنید، خطر دریافت کد (AD) به ترافیک شما را که توسط شما وارد نشده است را به حداقل می‌رسانید.

در این درس با تابع آشنا می شویم نامه ()، به عنوان مثال ایجاد تشکیل می دهد بازخورددر PHPبا ارسال بعدی داده های دریافتی از طریق پست.

برای انجام این کار، ما دو فایل ایجاد می کنیم - format.phpو mail.php. فایل اول فقط حاوی یک فرم با فیلدهایی برای ورودی کاربر خواهد بود. داخل تگ فرم- دکمه "ارسال"و صفت عمل، که به کنترل کننده اشاره دارد - mail.php، با فشار دادن دکمه به داده های فرم دسترسی پیدا می کند "ارسال". در مثال ما، داده های فرم به یک صفحه وب به نام فرستاده می شود "/mail.php". این صفحه حاوی یک اسکریپت برای PHPکه داده های فرم را مدیریت می کند:


داده های فرم با روش ارسال می شود پست( پردازش شده به عنوان $_POST). $_POSTآرایه ای از متغیرها از طریق متد به اسکریپت جاری ارسال می شود پست.

در زیر می توانید محتویات فایل را مشاهده کنید format.phpکه فیلدهای آن را خود کاربر در برخی از وب سایت ها پر می کند. تمام فیلدهای ورودی داده باید دارای ویژگی باشند نام، ارزش ها را خودمان بر اساس منطق تجویز می کنیم.




فرم بازخورد در PHP با ارسال از طریق پست


فرم بازخورد در PHP







پیام بگذارید:
اسم شما:



پست الکترونیک:

شماره تلفن:

پیام:

ناحیه متن می تواند شامل تعداد نامحدودی کاراکتر --> باشد







این فرم به صورت بصری در مرورگر به نظر می رسد.

سپس کد فایل را بنویسید mail.php. ما به نام خود متغیرها می پردازیم. AT PHPمتغیر با علامت شروع می شود $ و به دنبال آن نام متغیر آمده است. مقدار متنمتغیر در داخل نقل قول قرار می گیرد. با کمک متغیرها، محتویات فرم به سادگی با جایگزینی نام عنصر فرم - مقدار در پرانتز به ایمیل مدیر ارسال می شود. نام.

$to=" [ایمیل محافظت شده]"؛ // ایمیل گیرنده داده از فرم
$tema = "فرم تماس PHP"; // موضوع ایمیل دریافتی
$message = "نام شما: ".$_POST["name"]."
";//مقدار بدست آمده از فرم name=name را به متغیر اختصاص دهید
$message .= "ایمیل: ".$_POST["email"]."
"؛ //به دست آمده از فرم name=email
$message .= "شماره تلفن: ".$_POST["phone"]."
"؛ //به دست آمده از فرم name=phone
$message .= "پیام: ".$_POST["message"]."
"; //به دست آمده از فرم name=message
$headers = "MIME-نسخه: 1.0" . "\r\n"؛ // سرصفحه با فرمت به اضافه کاراکتر خط جدید مطابقت دارد
$headers .= "Content-type: text/html; charset=utf-8" . "\r\n"؛ // نوع محتوای ارسالی را نشان می دهد
mail($to، $tema، $message، $headers); // مقادیر متغیرها را به ایمیل گیرنده ارسال می کند
?>

بنابراین داده ها از آرایه $_POSTبه متغیرهای مربوطه ارسال می شود و با استفاده از تابع به نامه ارسال می شود پست الکترونیکی. بیایید فرم خود را پر کنیم و دکمه ارسال را بزنید. فراموش نکنید که ایمیل خود را وارد کنید. نامه بلافاصله رسید.

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

کار با فرم ها

فرم های HTML برای ارسال داده ها از کاربر صفحه وب به سرور استفاده می شود. PHP تعدادی ابزار ویژه برای کار با فرم ها فراهم می کند.

متغیرهای از پیش تعریف شده

PHP دارای تعدادی متغیر از پیش تعریف شده است که وقتی همه برنامه ها در یک محیط خاص اجرا می شوند، تغییر نمی کنند. به آنها متغیرهای محیطی یا متغیرهای محیطی نیز گفته می شود. آنها تنظیمات محیط وب سرور آپاچی و همچنین اطلاعات مربوط به درخواست را منعکس می کنند. این مرورگر. دریافت مقادیر URL، query string و سایر عناصر درخواست HTTP امکان پذیر است.

همه متغیرهای از پیش تعریف شده در آرایه انجمنی $GLOBALS قرار دارند. این آرایه علاوه بر متغیرهای محیطی، شامل متغیرهای سراسری تعریف شده در برنامه نیز می باشد.

مثال 1

مشاهده آرایه $GLOBALS $value) echo "\$GLOBALS[\"$key\"] == $value
"; ?>

در نتیجه، لیستی از همه متغیرهای سراسری از جمله روی صفحه ظاهر می شود متغیرهای محیطی. متداول ترین آنها عبارتند از:

متغیرشرحمحتوا
$_SERVER["HTTP_USER_AGENT"]نام و نسخه مشتریMozilla/5.0 (سازگار؛ Googlebot/2.1؛ +http://www.google.com/bot.html)
$_SERVER["REMOTE_ADDR"]آدرس آی پی144.76.78.3
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

پردازش لیست از فایل ex1.htm

    "; foreach ($Item as $value) echo"
  • $value"; echo "
"; ?>

مثال 4. پذیرش مقادیر از چک باکس ها

$v) ( if($v) echo "شما زبان برنامه نویسی $k را می شناسید!
"; else echo "شما زبان برنامه نویسی $k را نمی دانید.
"; } } ?>
"metod="post"> چه زبان های برنامه نویسی را می شناسید؟
PHP
پرل

نتیجه مثال 4:

مثال 5

"; ?>
"روش"پست">

پردازش فرم ها بدون توجه به نام فیلدهای واقعی امکان پذیر است.

برای انجام این کار، می توانید (بسته به روش انتقال) از آرایه انجمنی $HTTP_GET_VARS یا $HTTP_POST_VARS استفاده کنید. این آرایه ها شامل جفت های نام/مقدار برای هر عنصر فرم ارسالی هستند. اگر اهمیتی نمی دهید، می توانید از آرایه انجمنی $_REQUEST استفاده کنید.

مثال 6

مدیریت ورودی دلخواه بدون توجه به روش انتقال $value) echo "$key == $value
"; ?>

مثال 7. مدیریت یک کلیک دکمه با استفاده از عملگر "@".

">

با استفاده از تابع header() با ارسال هدر "Location" به مرورگر، می توانید کاربر را به صفحه جدیدی هدایت کنید.

مثلا:

انتقال فایل به سرور آپلود فایل. بارگذاری

PHP به شما امکان می دهد فایل ها را به سرور ارسال کنید. فرم HTML برای ارسال فایل باید حاوی آرگومان enctype="multipart/form-data" باشد.

علاوه بر این، فرم باید قبل از فیلد کپی فایل، یک فیلد مخفی به نام max_file_size داشته باشد. این فیلد پنهان باید حداکثر حجم فایل منتقل شده را داشته باشد (معمولاً بیش از 2 مگابایت).

فیلد انتقال فایل خود یک عنصر INPUT معمولی با آرگومان type="file" است.

مثلا:

"روش"پست">

پس از بارگذاری یک فایل در سرور، نام منحصر به فردی به آن داده می شود و در فهرست موقت ذخیره می شود. مسیر کامل فایل روی یک متغیر سراسری نوشته می شود که نام آن با نام فیلد انتقال این فایل مطابقت دارد. علاوه بر این، PHP اطلاعات اضافی در مورد فایل ارسال شده را در سایر متغیرهای جهانی ذخیره می کند:

مثال 8

در حال پردازش فایل منتقل شده "; echo "name: ".$_FILES["userfile"]["name"]."
"; echo "size: ".$_FILES["userfile"]["size"]."
"; echo "type: ".$_FILES["userfile"]["type"]."
"; } ?>
"روش"پست">

نمونه هایی از آپلود فایل ها در سرور

در صورت بروز مشکل در تبدیل فایل آپلود شده توسط سرور، نماد با کد 0x00با یک فاصله (نویسه با کد 0x20، به فایل اضافه کنید httpd.confاز دایرکتوری آپاچی (/usr/local/apache) خطوط زیر را مشخص کنید.

CharsetRecodeMultipartForms خاموش است