PDA

View Full Version : سوال: چگونه با فرم ها کار کنیم؟



nasim.gh68
یک شنبه 16 مرداد 1390, 15:40 عصر
با سلام
لطفا درمورد فرم ها توضیح بدین!
در باره اینکه که درتعریف(بکار گیری) یک فرم باید چه مواردی رعایت بشه (مثلا postباشه یا get)و ...
و اینکه چطور از یک فرم به فرم دیگه بریم!
من phpرو تازه شروع کردم...و نیاز دارم اطلاعات از چند فرم دریافت کنم که این فرمها مرحله به مرحله جلو می رن...و تقریبا از فرم ها هیچی نمی دونم..:خجالت:

webpower
یک شنبه 16 مرداد 1390, 16:26 عصر
روش get با روش post دو فرق اساسی داره یکی اینکه در روش get بیشتر از 2000 کارکتر نمیشه فرستاد ولی روش post این محدودیت رو نداره. تفاوت دومشون در روش فرستادنه در واقع وقتی از متد get استفاده میکنید اطلاعات فرستاده شده توی آدرس بار نشون داده میشن و میشه تغییرش داد.

برای این کاری که شما میگید میتونید به php بگید که اگر دکمه سابمیت فرم اول توسط کاربر set شده بود فرم دوم نشون داده بشه و اگر سابمیت فرم دوم ست شده بود فرم سوم نشون داده بشه
در مورد روش ارسال، اگر مغادیری مثل پسورد دارید که نمیخواید توی آدرس بار نشون داده بشه میتونید از همون روش post استفاده کنید
روش پست برای اینکار یکم سخت تره من خودم برای اینکار از هایدن فیلدهای اچ تی ام ال استفاده میکنم بدین صورت که اگر در فرم اول 2 تا فیلد دارید. در فرم دوم اطلاعات رو بگیرید و 2تا هایدن فیلد ایجاد کنید و بعد value هایدن فیلد ها را $_POST[''[ بذارید بدین صورت وقتی فرم دوم هم سابمیت میشه اطلاعات فرم اول هم همراه اون به فرم سه فرستاده میشه.

به عنوان مثال فرم اول:


<form action="form2.php" method="post">
<input type="text" name="name" />
<input type="text" name="family" />
<input type="submit" name="submit_form1" value="تکمیل فرم" />
</form>فرم دوم:


<?php
/////////////////چک میکنه که اگر دکمه فرم یک زده نشده به کاربر پیغام بده و دستورات بعدی رو هم اجرا نکنه
if(!isset($_POST['submit_form1'])
{
echo "Back and fill the form";
exit;
}

$name=$_POST['name'];
$family=$_POST['family'];
?>
<form action="form3" method="post">
<input type="hidden" name="name" value="<?php print($name) ?>" />
<input type="hidden" name="family" value="<?php print($family) ?>" />
<input type="text" name="phonenumber" />
<input type="text" name="email" />
<input type="password" name="password" />
<input type="submit" name="submit_form2" value="تکمیل فرم" />
</form>

nasim.gh68
یک شنبه 16 مرداد 1390, 18:24 عصر
ممنون توضیحاتتون خیلی بهم کمک کرد. فقط یه سوال دیگه :
وقتی از یک صفحه با یک لینک به صفحه دیگه میریم چطور از آدرس لینک استفاده میکنیم؟این درمورد فرم ها هم صدق می کنه؟
و اینکه آیا فرم ها خصوصیات دیگه ای هم دارند؟

webpower
یک شنبه 16 مرداد 1390, 19:08 عصر
بعد از آدرس علامت ؟ میذارید بعد هم متغیر ها رو ست میکنید مثلا lang=fa اگر هم متغیر ها بیش از یکی بودند بینشون & میذارید.مثلا
google.com?lang=fa
از این روش برای عوض کردن زبان سایت هم میتونید استفاده کنید اون موقع باید توی صفحه تعریف کنید که اگر:

if($_GET['lang']=='fa')
{
////قالب صفحه به زبان فارسی
}
آدرس بار همین صفحه رو نگاه کنید هم بهتر متوجه میشید
در مورد ویژگی های فرم ویژگی به نام enctype وجود داره که برای آپلوده و در صورت لزوم باید روی multipart/form-data ست کنید. همچنین میتونید با ویژگی target مشخص کنید که مرورگر موقع فرستادن فرم صفحه جدید باز کنه یا نه. فرم ها name هم دارند که بیشتر توی javascript کاربرد داره.
در مورد متد های دیگه هم من فکر نکنم چیز دیگه ای باشه توی نرم افزار هایی مثل دریم ویور هم که محیط طراحی دارن فقط همین دو متد وجود داره

nasim.gh68
دوشنبه 17 مرداد 1390, 09:29 صبح
بعد از آدرس علامت ؟ میذارید بعد هم متغیر ها رو ست میکنید مثلا lang=fa اگر هم متغیر ها بیش از یکی بودند بینشون & میذارید.مثلا
google.com?lang=fa

لطفا اگه میشه با یه مثال توضیح بدین!گفتم که phpرو تازه شروع کردم ...
فکر کنم با توجه به مثال قبلی که زدین متد actionتعیین می کنه که اطلاعات رو به کدوم صفحه ارسال می کنیم.
راستی من مثال شمارو که اجرا می کنم همون اول پیغام back and fill the form رو زیر تکست هام می نویسه و به فرم بعد نمی ره !چرا؟

webpower
دوشنبه 17 مرداد 1390, 12:47 عصر
بله اکشن مشخص میکنه که مقادیر به کجا فرستاده بشه
این دو مثال رو که گفتم باید توی دوتا صفحه جدا بذارید و صفحه دوم رو با نام form2.php ذخیره کنید
اگر میخواید هر دو توی یه صفحه باشند action هارو خالی کنید و خط back and fill the from رو پاک کنید
دستورات فرم دوم میگه که اگر کاربر فرم قبلی رو submit نکرده برنامه رو متوقف کن و دیگه کد اجرا نکن ولی در غیر این صورت برنامه به روند خودش ادامه میده و فرم دوم رو هم نشون میده.
در مورد متد get هم مثلا شما یک صفحه دارید که توی اون صفحه یک سری اطلاعات رو بر اساس موقعیت های مختلف نشون میدید به عنوان مثال
http://forum.honarjo.com/member.php?action=register
این قسمت http://forum.honarjo.com/member.php از لینک یه لینک عادیه ولی action=register? یه دستوره. برنامه توی صفحه member.php که مربوط به کاربرانه منتظر یک متغیر به نام action هست که در این جا مقدار این متغیر register است.
در واقع توی صفحه تعریف شده که اگر action برابر register بود یه فرم برای ثبت نام کردن باز کن ولی اگر login بود یه فرم برای ورود درست کن به عنوان مثال اگر به آدرس زیر برید
http://forum.honarjo.com/member.php?action=login
صفحه ای متفاوت از قبل میبینید معمولا میشه این مقدار رو حدس زد که بعضی وقت ها یه ضعف امنیتی محسوب میشه