منو اصلی

درگاه ورود کاربران
لینک سایت های مفید
تقویم
<    «  ارديبهشت 1391  »    >
شيدسچپج
 1
2345678
9101112131415
16171819202122
23242526272829
3031 
آرشیو
امار سایت
آمار مطالب:
  يک ساعت پيش: 0
  امروز: 0
  اين ماه: 7
  مجموع مطالب: 398
  کل نظرات: 309



آمار بازديد:
  بازديد امروز: 3956
  بازديد ديروز: 3512
  مجموع بازديدها: 2495466



آمار کاربران:
  يک ساعت پيش: 0
  امروز: 9
  اين ماه: 347
  مجموع کابران: 7265
  بن شدگان: 2

آخرين عضو:


javad_gh1370

 


کاربران آنلاین:

رباطها آنلاین: Crawl Bot, Google Bot

در حال حاضر 0 کاربر, 2 رباط, 2 میهمان و در مجموع 4 نفر در سایت حضور دارند.
همکاران سایت

--------------------
نظرسنجی

دوست دارید نرم افزار رو روی چه سیستم عاملی اجرا کنید ؟

Xp
Vista
Seven
Apple
Windows android
تازه های سایت
بخش های پربازدید
اطلاعات سایت
حمایت  فارسی دی بی

 

http://www.farsidb.com/farsidb.gif

برای حمایت از فارسی دی بی کد بالا را در سایت و یا وبلاگ خود قرار دهید با تشکر

رتبه و اطلاعات سایت   

   http://www.farsidb.com/alex.jpg

 

نحوه کار با فرمها در PHP یکبار برای همیشه یاد بگیرید


سر و کله زدن با فرم در PHP از اون مبحثهایی هست که زیاد درباره اش سوال پیش میاد مخصوصا برای کاربران تازه کار. توی این مقاله میخوایم همه سوراخ سمبه های فرمها رو با PHP کشف کنیم. انواع فیلد و ورودی رو معرفی می کنم و شیوه دسترسی به مقدارشون در PHP رو هم توضیح میدم.
اول از تگ form شروع می کنیم. تگ form چند تا attribute اصلی برای کار ما داره:

action: باید حاوی آدرسی باشه که قراره اطلاعات فرم به اونجا ارسال بشه. مثلا یک فایل PHP ساختیم که قراره اطلاعات این فرم رو پردازش کنه، پس اینجا باید آدرس اون فایل رو بنویسیم تا بعد از فشار دادن دکمه Submit اطلاعات فرم به اونجا بره.
اگر این attribute رو خالی بذاریم یا اصلا استفاده اش نکنیم، بصورت پیش فرض، روی آدرسی که فرم درش قرار داره تنظیم میشه. مثلا form.html.
method: روش ارسال اطلاعات بصورت GET یا POST. این مشخصه بصورت پیش فرض روی GET تنظیم شده. در هر دو اطلاعات سالم و سلامت به سرور فرستاده میشوند ولی با در نظر گرفتن مواردی. مقایسه این دو روش به این صورته:
GET: اطلاعات بصورت ساده و کد نشده منتقل میشه. این روش دقیقا مشابه اینه که اطلاعات رو بصورت Query به URL اضافه کرده باشیم و وقتی فرم رو Submit می کنیم، این اطلاعات خودش به URL اضافه میشه و قابل دیدن میشه. باید توجه داشت که اطلاعات حساسی مثل Password نباید در معرض دید قرار بگیره پس نباید برای فرمی که اطلاعات مهمی داره از GET استفاده کنیم تا اطلاعات فرم توی Address Bar قابل رویت نشه. به اضافه اینکه IE توی حجم اطلاعات GET محدودیت داره. به این صورت که وقتی اطلاعات فرم بصورت Query به URL اضافه میشه، طول این URL حداکثر میتونه ۲۰۸۳ کاراکتر باشه.
در روش GET، چون اطلاعات فرم کد نمیشوند و ساده منتقل میشوند پس یک مقدار ناچیزی سبکتره!. اطلاعات فرم در این حالت، توسط آرایه GET_$ در PHP قابل دسترسیه. همچنین در روش GET از Upload خبری نیست، یعنی با GET نمیشه آپلود کرد.
POST: این روش اطلاعات رو کد می کنه. چیزی به URL اضافه نمی کنه. محدودیت خاصی نداره و امکان آپلود فقط از طریق این روش ممکنه. اطلاعات این روش در PHP توسط آرایه POST_$ قابل دسترسیه.

enctype: روش کد کردن اطلاعات که یکی از مقادیر زیر میتونه باشه:

application/x-www-form-urlencoded: این حالت پیش فرض روش POST.
multipart/form-data: ارسال اطلاعات بدون کد کردن. آپلود فقط با این روش امکانپذیره!
text/plain: شبیه حالت اول ولی کاراکترهای اسکی رو کد نمی کنه.

این مشخصه تقریبا هیچوقت بکار نمیاد غیر از زمان آپلود که از حالت دومش استفاده میشه.

یک توضیح کوتاه: توابع معمول برای چک کردن اطلاعات isset و empty هستند. اگر دقیق نمی دونی، تابع isset فقط موجود بودن یا null بودن متغیر رو چک می کنه. یعنی اگر متغیری اصلا وجود نداشته باشه یا برابر null باشه، این تابع FALSE میده و در غیر اینصورت همیشه TRUE میده. تابع empty با مقدار هم کار داره یعنی مقدار خالی یا صفر رو هم تشخیص میده

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


























از خط اول. همونطور که میبینی action فرم روی submit.php تنظیم شده و method روی POST (چون میخوایم Upload هم داشته باشیم). پس باید فایل submit.php وجود داشته باشه که اطلاعات ارسالی این فرم رو بگیره.

فیلدهای text، password، submit، select، hidden و textarea همیشه وجود دارند یعنی اگر پر بشوند با مقدار فرستاده میشوند در غیر اینصورت خالی فرستاده میشوند یعنی استفاده از تابع isset برای این فیلدها همیشه مقدار TRUE خواهد بود و تابع مناسب براشون empty هست. یعنی با تابع empty راحت می تونیم چک کنیم که کاربر فیلد رو پر کرده یا خیر. دسترسی به اطلاعات این فیلدها به ساده ترین شکل ممکن انجام میشه:








—————————————————————————

$field_text = $_POST['field_text'];
$field_password = $_POST['password'];
$textarea = $_POST['textarea'];
$submit = $_POST['submit'];
$select_single = $_POST['select_single'];
$field_hidden = $_POST['field_hidden'];

—————————————————————————
چک باکس و فیلدهایی رادیویی، تا وقتی علامت زده نشدند، به سرور فرستاده نمیشوند! پس اول باید چک کنیم که وجود دارند یا نه. اینجا تابع isset بکار میاد. البته اینکار رو با همون تابع empty هم می تونیم انجام بدیم همونطور که توی فرم مشاهده کردی و میدونی، ورودی های رادیویی چون فقط یکیشون قابل انتخابه، باید همنام باشند تا اونجوری که باید، کار کنند.






————————————————————————

if(isset($_POST['field_checkbox_single']))
$field_checkbox_single = $_POST['field_checkbox_single'];
if(isset($_POST['field_radio']))
$field_radio = $_POST['field_radio'];

———————————————————————–
وقتی چک باکسهای زیادی داشته باشیم، معمولا استفاده از آرایه بهتره. برای این دسته، با یک آرایه مواجهیم. عناصر این آرایه نیازی به چک کردن با isset نداره چون اگر چک باکسی انتخاب نشه، وارد این آرایه هم نخواهد شد. فقط باید وجود خود آرایه رو بررسی کنیم یعنی بررسی کنیم که آیا حداقل یک چک باکس انتخاب شده یا نه. وقتی برای آرایه کلید تعیین می کنیم، امکان مدیریت دسته بندی فیلدها خیلی بالا میره. روش استفاده مثل آرایه های انجمنی (Associative Arrays) در PHP هست.
—————————————







———————————————————-

if(isset($_POST['field_checkbox_multiple'])) {
foreach($_POST['field_checkbox_multiple'] as $checkbox_multiple)
echo $checkbox_multiple;
}
if(isset($_POST['chkbx_multiple_with_key']) {
foreach($_POST['chkbx_multiple_with_key'] as $key => $checkbox_multiple_with_key)
echo ”$key : $checkbox_multiple_with_key”;
}

———————————————————————
یک نوعی از منوی Select، حالت چندانتخابی یا Multiple هست که برای این حالت، نام فیلد حتما باید آرایه باشه و مقادیر هم بصورت عناصر این آرایه منتقل میشوند:



———————–

foreach($select_mulitple as $select) {
echo $select;
}

————————————————–

و اما آپلود که فقط با متد POST قابل اجراست و اطلاعات فایل رو داخل آرایه FILES_$ میریزه.



———————

if(isset($_FILES['field_file'])) {
$file_name = $_FILES["field_file"]["name"];
$file_type = $_FILES["field_file"]["type"];
$file_size = $_FILES["field_file"]["size"];
$file_tmp_name = $_FILES["field_file"]["tmp_name"];
$file_error = $_FILES["field_file"]["error"];
}

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

یه نکته برای داونلود همزمان چند فایل توسط آرایه وجود داره و اونهم شکل آرایه FILES_$ در زمان آپلود چند فایله. به شکل آرایه در این حالت، خیلی خوب دقت کن.




if(isset($_FILES['field_file_multiple'])) {
$file_name_1 = $_FILES["field_file_multiple"]["name"][0];
$file_type_1 = $_FILES["field_file_multiple"]["type"][0];
$file_size_1 = $_FILES["field_file_multiple"]["size"][0];
$file_tmp_name_1 = $_FILES["field_file_multiple"]["tmp_name"][0];
$file_error_1 = $_FILES["field_file_multiple"]["error"][0];
$file_name_2 = $_FILES["field_file_multiple"]["name"][1];
$file_type_2 = $_FILES["field_file_multiple"]["type"][1];
$file_size_2 = $_FILES["field_file_multiple"]["size"][1];
$file_tmp_name_2 = $_FILES["field_file_multiple"]["tmp_name"][1];
$file_error_2 = $_FILES["field_file_multiple"]["error"][1];
}

در فرم، عناصری هم هستند که مقداری در PHP ندارند. البته اگر button مقدار مشخصه typeاش برابر submit باشه، کار دکمه submit معمولی رو می کنه و نوع image هم مثل submit عمل می کنه ولی مختصات x و y محل کلیک شدن روی دکمه رو هم قاطی اطلاعات ارسال می کنه.




بازدیدها: 502

http://www.farsidb.com/forum.gif


اطلاعات
 
براي ارسال نظر، بايد در سايت عضو شويد.

 
 

پشتیبانی شده توسط سرور باران