فرم های html در PHP
فرم های HTML در PHP
مهمترین چیز موقع کار کردن با فرمهای HTML و PHP این است که هر عنصر در فرم HTML به طور اتوماتیک در فرم PHP قابل دسترس و ردیابی است.
در PHP با استفاده از متغیرهای POST_$ و GET_$ می توان به اطلاعات فرم های HTML دسترسی داشت.
مثال:
در مثال زیر یک فرم HTML با سه عنصر زیر تعریف شده است:
- فیلد input از نوع text که با نام "fname" در کد PHP قابل ردیابی است.
- فیلد input از نوع text که با نام "age" در کد PHP قابل ردیابی است.
- فیلد input از نوع submit که محتویات textها را به صفحه "welcome.php" می فرستد.
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
توجه: در مثال بالا از دو خصوصیت در تگ form استفاده شده ولی به صورت کلی خصوصیات تگ form به صورت زیر است:
- action: اگر submit اتفاق افتاد، اطلاعات فرم HTML به صفحه ای که در این خصوصیت مشخص شده ارسال می شود.(به صورت پیش فرض صفحه جاری در نظر گرفته می شود)
- method: با استفاده از این خصوصیت مشخص می کنیم که ارسال اطلاعات از فرم HTML به صفحه PHP به چه شکل باشد، اگر آنرا با مقدار "get" پر کنیم، اطلاعات فرم در آدرس صفحه قرار می گیرد و ارسال می شود، و برعکس اگر آنرا با مقدار "post" پر کنیم، اطلاعات به صورت یک آرایه ارسال می شود.(به صورت پیشفرض Get در نظر گرفته می شود)
- name: نام فرم است كه برای php نیازی به آن نداریم ولی اگه بخواهیم از جاوا اسكریپت استفاده كنیم نیاز می شود (مثل چك كردن صحت ایمیل قبل از ارسال)
- target: نوع باز شدن صفحه مقصد را مشخص می کند كه شامل صفحه جاری ، صفحه جدید ، صفحه پدر ، یك فریم خاص و ... است.
- ...
فایل "welcome.php" می تواند چیزی شبیه زیر باشد:
<html>
<body>
Welcome <?php echo $_POST["fname"]; ?>!<br />
You are <?php echo $_POST["age"]; ?> years old.
</body>
</html>
اگر در فرم HTML تعریف شده تکس باکس ها را به صورت "fname=Amir" و "age=28" مقدار دهی کنیم خروجی برنامه بعد از کلیک روی دکمه "submit" به صورت زیر خواهد بود:
Welcome Amir!
You are 28 years old.
همانطور که قبلاً گفته شد متغیرها با علامت "$" شروع می شوند، در صفحه PHP بالا نیز از متغیری بنام "post_$" استفاده شده که در فصل بعد توضیح داده خواهد شد.
اعتبار سنجی فرم (Validation Form)
اعتبار سنجی فرم یا Validation Form یعنی چک کردن ورودی های کاربر، قبل از اینکه در دیتابیس ذخیره شود، مثلاً در بالا برای تکس باکس "age" باید حتماً کاراکترهای عددی وارد شود، در غیر این صورت برنامه باید پیغام خطا بدهد.
به دو صورت می توان اعتبار سنجی کرد:
- client scripts: اعتبار سنجی سمت سرویس گیرنده انجام می شود که در این صورت سرعت بیشتر خواهد بود.
- server validation: اعتبار سنجی سمت سرویس دهنده انجام می شود، در حقیقت این وظیفه را یک صفحه PHP که روی سرور قرار دارد انجام می دهد.
در فصل های آینده راجع به این موضوع به صورت کامل توضیح داده خواهد شد.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 27998
دیدگاهها
سلام. من دو تا کد رو نوشتم و اجرا کردم. welcome هم بعد از ورود اطلاعات اجرا میشه. ولی مقدا نام و سن رو خالی می گذاره. من دقیقا کدهای شما رو هم کپی کردم که شاید مشکل از نوشتن من باشه ولی باز جواب همان بود.
Welcome !
You are years old.
جای اسم و سن چیزی نمی نویسه.
خب برای اینکه احتمالا شما چیزی Submit نکردید. کادرهای نام و سن رو پر کنید و بعد Submit رو بزنید. اون وقت نمایش درستی خواهید داشت.
سلام. کدها رو امتحان کردیم مشکلی نداشت و به درستی نام و سن رو نشان می دهد.
سلام چطور میشه فایل html و css رو که نوشتیم و داخلش از php استفاده کردیم و با xamp اجرا کرد
با سلام. اگر منظورتون if(count($_POST ) > 0 && isset($_POST['b tnSend'])){ // comment هست باید بگم که وقتی که فرم ارسال میشه با توجه به متد فرم که معمولا post هست، آرایهی سراسری POST_$ حاوی مقدار میشه. با دستور count($_POST); //comment در واقع ما متوجه میشویم که این آرایه حاوی مقدار هست یا به قول معروف فرم ما ارسال شده است... توسط دستور isset($_POST['b tnSend']) //comment هم ما منحصرا چک میکنیم که فرم مربوط به دکمه سابمیت btnSend ارسال شده است یا خیر...
با چک کردن این شروط میتوان مطمئن شد که فرم ما صحیح ارسال شده است... البته باید مقادیر کنترلها رو اعتبارسنجی کرد که خود این یه بخش مجزا داره.
سلام...میشه توی همین مثالی که برای جوابhava نوشتید، در مورد خط اولش که if داره توضیح بدین؟
با سلام.
دادها از طریق فرم توسط تو متد GET یا POST ارسال میشن. در این مثال داده ها توسط متد POST ارسال شدن.
وقتی که داده ارسال میشه، این مقادیر داخل آرایه ای سراسری به نام POST_$ ریخته میشه.
وقتی که این آرایه مقدار داشته باشه، تعداد خونه های اون بیشتر از صفر هست. توسط دستور count($_POST) > 0 تشخیص میدیم که این آرایه مقدار داره یا نه. اگر مقداری بیشتر از صفر داشت شرط ما درست است و وارد if میشه.
مثال ها اجرا نمیشود و خطا میدهند
با سلام.
دلایل مختلفی برای عدم اجرا و بروز خطا وجود داره. مثلا:
- این که در سیستم شما فایلهای php اجرا نمیشن.
- مسیر و آدرسی دهی اشتباه هست.
- کد اشتباه هست.
و ...
برای راهنمایی بهتر، شما کد و خطایی که مشاهده میکنید رو قرار بدید.
موفق باشید.
سلام
من این دو فایل فرم و welcome.php را روی سرور اپلود کردم ولی جواب نمیدهد می شه بگید اگر خواستیم روی هاست خودمان امتحان کنیم چه شکلی لطفا همین یک سوال را جواب دهید
با سلام.
اگه در سیستم شما برنامه xamp نصب هست باید در مسیر ریشهی این برنامه برید. پوشهای هست به نام httpdocs که باید فایلها پروژه رو در این پوشه قرار بدید تا بتونید فایلهای php رو اجرا کنید.
وقتی در مرورگر عبارت localhost رو وارد کنید، دقیقا محتویات این پوشه (httpdocs) به شما نمایش داده خواهد شد.
در مورد مثال هم من یه نمونه کد خیلی ساده برای شما قرار دادم. کل کد رو کپی و در یک فایل با پسوند php. ذخیره کنید و سپس در مسیر پوشهای که بهتون گفتم قرار بدید (ترجیحاً نام فایل رو page_name.php قرار بدید). سپس در مرورگر با عبارت localhost/page_ name.php میتونید فایل رو اجرا و نتیجه رو مشاهده کنید.
کد:
<?php
if(count($_POST) > 0 && isset($_POST['b tnSend'])){
$name = $_POST['txtName '];
$age = $_POST['txtAge' ];
echo "Your name: <b>" . $name . "<b> <br>" ;;
echo "Your age: <b>" . $age . "<b><br><br><br>";
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Fo rm</title> ;
<style>
input{border:1p x solid #ccc; padding:2px;}
</style>
</head>
<body>
<div>
<form method="po st" action="&q uot;>
<table>
<tr>
<td>Name: </td>
<td><i nput type="text " name="txtN ame" /></td> ;
</tr>
<tr>
<td>Age: </td>
<td><i nput type="text " name="txtA ge" /></td> ;
</tr>
<tr>
<td>& nbsp;</td> ;
<td><i nput type="subm it" name="btnS end" value="Send"/></td> ;
</tr>
</table>
</form>
</div>
</body>
</html>
با سلام ،
واقعا سایت مفیدی ساختین برای کسایی که میخوان واقعا یاد بگیرن . مطالب از نمونه های خارجی هم کاملتره و ساده تر بیان شده .
موفق باشید و کلی آرزوهای خوب برای شما
سلام خدمت دوست عزیز و گرامی پهلوان صادق تبریک به خاطر این سایت موفق و خوب ، واقعا با همه ی سایت دیگه فرق داره باور بفرمایید اغراق نمی کنم اصلا چیزهای جدیدی آموزش میده آخه من کتابها و آموزش های فارسی و انگلیسی زیادی خوندم اکثرشون کپی برداری بوده ولی اینا یه چیز دیگه انشالله سالم و سربلند باشید