فرم ها در PHP
همانطور که می دانید فرم ها یکی از مهم ترین اجزای ارتباطی و دریافت اطلاعات بین یک سایت و کاربران آن سایت می باشد ، ساخت فرم در سیستم های مدیریت محتوا مانند وردپرس بسیار ساده است و تقریبا بدون دانش برنامه نویسی می توان انواع فرم های حرفه ای و مورد دلخواه را بسازید. خوب در این قسمت میخواهیم ببینیم چطوري با استفاده از فرم ها اطلاعات رو بین صفحات ارسال کنیم. فقط با استفاده از آموزش فرم ها در PHP مراحل رو ادامه میدیم.
اموزش ساخت و ارسال فرم در php
ما قبلا راجب فرم ها در html صحبت کرده بودیم ، ولی در این مطلب قصد داریم به بیان کدهای پیشرفته در در زبان PHP بپردازیم که به فرم های زیبای یک صفحه قابلیت ارسال و دریافت شدن رو به مقاصدی که کاربر مشخص کرده می دند.
خوب یه مثال ساده ولی پرکاربرد :
#this page name is a.php
<form action="b.php" method="get"> <input type="text" name="user"> <input type="submit" name="btn"> </form>
قصد داریم اطلاعات یک تکست باکس رو که در این صفحه قرار داره توسط صفحه دوم به اسم b.php بخونیم پس اسم این صفحه رو که هیچ کد پی اچ پی توش استفاده نکردیم میزاریم a.php و ذخیره میکنیم.
حالا میرسیم به صفحه دوم این کد رو تو صفحه دوم قرار بدید .
php?> "print "$user <?
خیلی ساده و به این صورت اطلاعات رو میگیریم یوزر اسم تکست باکسی هست که تو فرم اول قرار داشت. بقیه کد ها هم اچ تی ام هست و نیازي به توضیح نیست فقط در مورد get بگم که این دستور متغییر ها رو موقع ارسال تو ادرس نشون داده میشه و شاید بعضی جاها زیاد راه مطمئنی نباشه ولی اگه بجاي این عبارت از post استفاده کنیم دیگه در ادرس نشون داده نمیشه .
ترکیب کردن فـرم ها در پی اچ پی با HTML :
به این کد نگاه کنید :
<form action="<?php print $PHP_SELF?>" method="POST"> name: <input type="text" name="user"> </form>
وقتی این فرم رو اجرا کنیم فرم همواره خودشو صدا میزنه چون ما از عبارت PHP_SELF$ استفاده کرده ایم توجه کنید که ما هیچ دکمه اي رو صفحه قرار ندادیم و در بیشتر مرورگرها با زدن کلید اینتر میتونیم فرم رو اجرا کنیم .
البته در کد بالا هیچ اطلاعاتی رو بیرون نمیده ولی در کد زیر میخواهیم یه بازي ساده بنویسیم تا بیشتر متوجه بشیم :
<?php $num_guess=42; $msg=" "; if (! Isset($guess)) { $msg="welcome To This Little Game"; } elseif ($guess>$num_guess) { $msg="number $guess is Big! Try Smaller number."; } elseif($guess<$num_$guess) { $msg="Number $guess is Small ! Try Big Number"; } else // vagti mosavi bashe { $msg="Well Done You Win"; } ?>
توضیحات : با دستور ! که اشنا هستید همون دستور نقض ، اما دستور issetisset این دستور چک میکنه ببینه اصلا اطلاعاتی وارد شده یا نه ما در خط اول چک میکنیم ببینم (اگه نه اطلاعاتی وارد شده) انگاه پیغام خوش آمد گویی رو پخش کن این کد موقعی میتونه اتفاق بیفته که برا اولین بار صفحه رو باز کرده یا هیچ اطلاعاتی وارد نکرده . حالا میرسیم به قسمت اچ تی ام ال این کد رو زیر کد بالایی قرار بدید.
<h1> <?php print $msg ?> </h1> <form action="<?php print $PHP_SELF?>" method="POST"> Guess Number : <input type="text" name="guess"> </form>
خوب این کد نیز اطلاعات رو از کاربر میگیره و صفحه رو دوباره اجرا میکنه و پیغام مناسب رو پخش میکنه .
میخوایم با یه دستور جدید و کاربردي اشنا بشیم فرض کنیم بعد از اینکه کاربر در بازي بالا برنده شد میخواهیم او را به یه صفحه جدید بفرستیم یعنی ریدایرکت کنیم میتونیم از دستور زیر استفاده کنیم این دستور رو بجاي پیغامی بزارید که وقتی کاربر برنده میشه انتخاب میشه یعنی بعد از else قرار بدید :
PHP Code: header("Location: page.html"); exit;
با دستور exit هم از داخل این کد بیرون میایم و به صفحه بعد منتقل میشیم .
نوبتی هم باشه نوبت کار با فایل هاست . (البته کار با فایلها در آینده و در فصلی جداگانه بررسی شده است)
<form enctype="multipart/form-data" action="<?print $PHP_SELF?>" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="51200"> <input type="file" name="fupload"><br> <input type="submit" value="upload!"> </form>
خوب ما با استفاده از دستور “enctype=”multipart/form-data درواقع میایم همون فایل دیالوگ رو باز میکنیم.
در قسمت بعد ما یک متغییر مخفی ایجاد میکنیم و سایز فایل رو تعیین میکنیم و توش قرار میدیم که در اینجا ۵۱۲۰۰ انتخاب کردیم
حالا با دو خط بعد یه تکست باکس و یه دکمه میزاریم . ما اینجا به کاربر اجازه میدیم تا ۵۰ کیلوبایت فایل اپلود کنه .
البته کد بالا جنبه نمایش داشت و عملا کاربرد زیادي نداره قبل از اینکه نمونه قابل اجرا رو امتحان کنیم ، بزارید لیستی از متغییر هاي فایل اپلود رو براتون بگم.
مثال |
توضیحات |
نام متغییر |
tmp/php3d3ef/ |
مسیر فایل اپلود شده |
fupload$ |
Test.gif |
اسم فایل اپلود شده |
fuploadname$ |
۵۱۲۰۰ |
حجم بر حسب بایت |
fuploadsize$ |
Image/gif
|
نوع فایل اپلودي |
fupload type$ |
حالا مثال ، در این مثال ما اطلاعات فایل آپلودی رو نمایش میدیم :
<html> <head> <title>Listing 9.15 A file upload script</title> </head> <?php $file_dir = "/home/mehdi/htdocs/uploads"; $file_url ="http:// www.safary.com/mehdi/uploads"; if ( isset( $fupload ) ) { print "path: $fupload<br>\n"; print "name: $fupload_name<br>\n"; print "size: $fupload_size bytes<br>\n"; print "type: $fupload_type<p>\n\n"; if ( $fupload_type == "image/gif" ) { copy ( $fupload, "$file_dir/$fupload_name") or die ("Couldn't copy"); print "<img src=\"$file_url/$fupload_name\"><p>\n\n"; } } ?> <body> <form enctype="multipart/form-data" action="<?php print $PHP_SELF?>" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="51200"> <input type="file" name="fupload"> <br> x <input type="submit" value="Send file!"> </form> </body> </html>
فکر نمیکنم نیازی به توضیح باشه بجز این خط
$fupload, "$file_dir/$fupload_name"
این دستور فایل مورد نظر رو روي سرور کپی میکنه و اگه اشکالی پیش اومد عبارت copy Couldn’t رو چاپ میکنه در اینجا ما پس از اینکه از کاربر فایل رو درخواست کردیم اطلاعات مربوط به اون فایل رو نمایش میدیم که ما در اینجا فرض کردیم که کاربر یک عکس را اپلود کرده است .
فرم ها در PHP جزو دستورات کاربردی و مهمی هستند که در طراحی وب کاربرد بالایی دارند.
سوالی که پرسیدم هم مربوط به قالب های وردپرسی هست و هم مربوط به نحوه ارسال دیدگاه و ثبت نطر در قالبهای html و در قسمت بلاگ و نیز فرم تماس با ما و ارسال دیدگاه
با سلام ؛ من در ارسال و دریافت ای میل دو تا مشکل اساسی دارم . میخوام به آدرس و ای میل خودم ؛ اطلاعات فرمی را که کاربر پر میکنه و دکمه ارسال را میزنه ، به راحتی دریافت کرده و بخوانم اما هر کاری میکنم نمیتوانم . در مرحله دوم میخوام در سایتم در قسمت ثبت نظر و ارسال دیدگاه ، هم برای خودم هم برای سایر کاربران نظر کاربری که اقدام به ارسال نظر میکنه هم در قسمت مربوطه ثبت بشه هم به من که ادمین هستم ارسال بشه . راه حلش را نمیدونم از روی همین سایت خودتان و ارسال نظر خودتان باز چیزی دستگیرم نشد . لطفا یک روش اصولی و کاربردی به من یاد بدهید . با سپاس