مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

کار با فرم ها - اعتبارسنجی فرم ها یا validation در PHP


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


در این جلسه و جلسه بعدی نشان می دهیم چگونه از PHP برای اعتبارسنجی داده های فرم استفاده کنید.قبل از هر چیز این نکته را بیان کنیم که  $_SERVER یک آرایه است که حاوی اطلاعاتی مانند headers، paths و script locations است. ورودی های این آرایه توسط web server ایجاد می شوند.

اعتبار سنجی فرم پی اچ پی

فرم HTML ی که ما در این فصل کار خواهیم کرد، شامل فیلدهایِ ورودی مختلفی می باشد، نظیر: فیلدهای متنی الزامی و اختیاری، دکمه های رادیویی(radio button) و دکمه ارسال(submit) .


نام:

ایمیل:

وبسایت:

توضیحات: 

جنسیت: زن مرد

 

قوانین اعتبارسنجی برای فرم بالا به شرح زیر است:

 

فیلد

قوانین اعتبارسنجی

نام

الزامی است. فقط باید شامل حروف الفبا و خط فاصله باشد.

ایمیل

الزامی است. باید شامل فرمت صحیح ایمیل باشد (همراه با علامت @ و .)

وبسایت

اختیاری است. اگر پر شد، باید شامل فرمت صحیح URL باشد.

توضیحات

اختیاری است. می تواند شامل چند خط متن باشد (textarea)

جنسیت

الزامی است. یکی از دو مورد باید انتخاب شود.

 

ابتدا به کد HTML ساده فرم نگاه کنیم:

فیلدهای متنی(Text Fields)

فیلد های نام، ایمیل و وبسایت، فیلدهای متنی (text input) هستند و فیلد توضیحات از نوع textarea می باشد. کد html آن ها بدین شکل می باشد.

Name: <input type="text" name="name">
E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40"></textarea>

دکمه های رادیویی (Radio Buttons)

فیلد جنسیت از نوع دکمه های رادیویی می باشد و کد HTML آن به صورت زیر است:

جنسیت:

<input type="radio" name="gender" value="female">زن

<input type="radio" name="gender" value="male">مرد

 

عنصر form

کد HTML فرم به صورت زیر است:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

وقتی فرم توسط کاربر پر می شود و بعد روی دکمه "ارسال" کلیک می شود ، داده های فرم با متد POST  ارسال می شوند.

enlightenedنکته:

متغیر سراسری ویژه  $_SERVER['PHP_SELF'] یک متغیر سوپرگلوبال (superglobal) است که نام فایل اجراکننده اسکریپت جاری را بر می گرداند. بنابراین این متغیر، زمانی که کاربر روی دکمه ارسال یا submit کلیک می کند، بجای اینکه داده ها را به یک فایل متفاوت دیگر ارسال کند به خودصفحه جاری ارسال می کند. بنابراین، کاربر خطاها (error messageها) را در صفحه ای که فرم وجود دارد مشاهده خواهد کرد.

 

enlightenedسوال : تابع htmlspecialchars چیست و چه کاربردی دارد؟

با استفاده ازاین تابع می توان ،کاراکترهای خاص را به HTML entity تبدیل نمود. این کار بدین معناست که کاراکترهایی مثل علامت کوچکتر(<) و بزرگتر(>) که توسط کاربر وارد می شود را به ;lt$ و ;gt$ تبدیل می کند. با این کار شما می توانید از حمله ی هکرها جلوگیری کنید. زیرا آنها قصد دارند به وسیله ی تزریقِ(injection) کدهای HTML یا JavaScript ، سایت شما را تخریب کنند. و شما می توانید به وسیله تابع htmlspecialchars مانع از اجرا کدهای آنها شوید.

 

یک تذکر مهم درباره امنیت فرم ها در PHP

متغیر $ _SERVER ["PHP_SELF"] می تواند توسط هکرها مورد استفاده قرار گیرد! اگر PHP_SELF در صفحه شما استفاده شود، هکر می تواند در آدرس بار مرورگرش بعد از آدرس فایل یک اسلش (/) قرار دهد و سپس از دستورات  XSSیا Scripting Cross Site برای تخریب سایت شما استفاده کند.

 

enlightenedXSS یا Cross-site scripting چیست؟

حملات Cross -site scripting یا XSS یک نوع آسیب پذیری از نوع امنیتی است که معمولا در برنامه های تحت وب وجود دارد. به وسیله  XSS، هکرها می توانند تا از طریق تزریق اسکریپت به صفحات وب، از سمت client ، وبسایت شما را هک کنند.

فرض کنید فرم زیر را در یک صفحه با نام test_form.php داریم:

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

در حال حاضر، اگر یک کاربر URL معمولی را در نوار آدرس مانند "http://www.example.com/test_form.php" وارد کند، کد بالا به آن ترجمه می شود:

<form method="post" action="test_form.php">

خوب تا اینجا همه چیز خوب است.

حال، در نظر بگیرید که یک کاربر در نوار آدرس به نشانی اینترنتی زیر وارد می شود:

http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

در این مورد، کد فوق به صورت زیر ترجمه می شود:

<form method="post" action="test_form.php"/><script>alert('hacked')</script>

این کد یک تگ <script> و یک دستور alert را اضافه می کند.

و هنگامی که صفحه بارگذاری می شود، کد جاوا اسکریپت اجرا می شود و کاربر یک جعبه پیغام خواهد دید. این فقط یک مثال ساده و بی ضرر است که چگونه متغیر PHP_SELF می تواند مورد سوء استفاده قرار گیرد.

بدانید که هر کد جاوا اسکریپتی می تواند داخل تگ <script> اضافه شود! هکرها می توانند کاربر را به یک فایل دیگر روی سروری دیگر هدایت یا  redirect کنند، وآن فایل می تواند حاوی کدهای مخربی باشد که قادر باشد متغیرهای سراسری یا global را تغییر دهد و یا فرم را به آدرس دیگری ارسال کند تا بتواند برای مثال اطلاعات کاربر را ذخیره نماید.

 

چگونه می توان با هک از طریق $_SERVER["PHP_SELF"] مقابله نمود؟

با استفاده از تابع ()htmlspecialchars، می توان با هک از طریق $_SERVER["PHP_SELF"] مقابله نمود.

کد فرم باید مانند این باشد:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

تابع ()htmlspecialchars، کاراکترهای خاص را به HTML entity تبدیل می کند. حالا اگر کاربر بخواهد از متغییر "PHP_SELF" سوء استفاده کند، با نتیجه زیر روبرو خواهد شد:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

تلاش هکرها بی فایده است و هیچ آسیبی به سایت شما وارد نخواهد شد!

 

اعتبارسنجی داده های فرم

اولین کاری که ما انجام خواهیم داد این است که تمام متغیرها را به تابع htmlspecialchars () پاس بدهیم.

وقتی ما از تابع htmlspecialchars () استفاده میکنیم؛ سپس اگر یک کاربر سعی در ارسال کد زیر در یک فیلد متنی داشته باشد:

<script>location.href('http://www.hacked.com')</script>

- این کد اجرا نخواهد شد،  زیرا کاراکترهای خاص در متن بالا، به HTML entity معادلاشان تبدیل می شوند:

&lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;

کدی که اکنون تولید شده است امن می باشد. وقتی کاربر فرم را ارسال می کند، ما دو کار دیگر نیز انجام خواهیم داد:

  1. با استفاده از تابع ()trim کاراکترهای غیرضروری (مثل: فاصله های اضافی، tab و خطوط خالی) را حذف می کنیم.
  2. با استفاده از تابع ()stripslashes، بک اسلش ها (\) را حذف می کنیم

گام بعدی ایجاد یک تابع است که برای ما این کارها را انجام می دهد (به جای اینکه این کدها را هر بار بنویسیم بهتر است یک تابع بنویسیم و چندین بار استفاده کنیم)

تابعی که ما می سازیم test_input () را نام دارد.

حالا ما می توانیم هر متغیر $_POST را با تابع test_input بررسی کنیم. کد آن به صورت زیر می باشد :

<?php

// define variables and set to empty values

$name = $email = $gender = $comment = $website = "";



if ($_SERVER["REQUEST_METHOD"] == "POST") {

  $name = test_input($_POST["name"]);

  $email = test_input($_POST["email"]);

  $website = test_input($_POST["website"]);

  $comment = test_input($_POST["comment"]);

  $gender = test_input($_POST["gender"]);

}



function test_input($data) {

  $data = trim($data);

  $data = stripslashes($data);

  $data = htmlspecialchars($data);

  return $data;

}

?>

کدهای قبلی را به این کدها الحاق می کنیم و آنچه می بینیم بدین صورت می باشد، کدهای زیر را اجرا کنید و نتیجه را مشاهده نمایید:

<!DOCTYPE HTML> 
<html>
<head>
</head>
<body style="direction:rtl;"> 

<?php
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

<h2>فرم</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
<div><span>نام:</span><input type="text" name="name"></div>
<div><span>ایمیل:</span><input type="text" name="email"></div>
<div><span>وب سایت:</span><input type="text" name="website"></div>
<div><span>توضیحات:</span><textarea name="comment" rows="5" cols="40"></textarea>
</div>
<div><span>جنسیت:</span>
<input type="radio" name="gender" value="female">زن
<input type="radio" name="gender" value="male">مرد
</div>
</div><input type="submit" name="submit" value="ارسال اطلاعات"></div>
</form>

<?php
if (isset($name) || isset($email) || isset($gender) || isset($comment) || isset($website))
 {
  echo "<br /><h2>خروجی کدهای شما</h2>";
  echo "نام :$name";
  echo "<br />";
  echo "ایمیل: $email";
  echo "<br />";
  echo "وب سایت: $website";
  echo "<br />";
  echo "توضیحات: $comment";
  echo "<br />";
  echo "جنسیت: $gender";
 }
?>

</body>
</html>

 

توجه داشته باشید که در ابتدای اسکریپت، ما بررسی می کنیم که آیا فرم با استفاده از $ _SERVER ["REQUEST_METHOD"] ارائه شده است. اگر REQUEST_METHOD برابر با POST  باشد، پس فرم به درستی ارسال شده است و باید تایید شود در غیر این صورت یک فرم خالی نمایش داده خواهد شد.

با این حال، در مثال بالا، تمام فیلدهای ورودی اختیاری است. اسکریپت درست کار می کند حتی اگر کاربر هیچ داده ای وارد نکند. گام بعدی این است که فیلدهای ورودی مورد نیاز را ایجاد کرده و در صورت لزوم پیغام خطا ایجاد کنید.

 

فصلِ: 1 , تعداد قسمت ها: 7 , سطح: صفر تا صد
موضوعات: آموزش PHP

این فصل در یک نگاه:

در این مجموعه به ساخت سیستم نظردهی در php می پردازیم.…

بنا به درخواست یکی از کاربران گرامی سایت (امیر تجاره) طی چند مجموعه آموزشی قصد داریم نحوه ساخت و پیاده سازی سیستم ثبت نظرات و هم چنین نحوه ثبت پاسخ به هر نظر را مورد بررسی قرار دهیم. این مج…
فصلِ: 1 , تعداد قسمت ها: 2 , سطح: صفر تا صد
موضوعات: آموزش PHP

این فصل در یک نگاه:

در این مجموعه به آموزش ارسال ایمیل در phpmailer می پردازیم.یکی از مزایای phpmailer و ارسال ایمیل در php با استفاده از ph…

بی شک ارسال ایمیل php از مهم ترین توانایی های یک برنامه نویس php  به شمار می رود. این ایمیل می تواند برای تبلیغات و یا اطلاع رسانی و موارد بسیار زیادی به کار رود. در php روش های مختلفی برای…
فصلِ: 2 , تعداد قسمت ها: 232 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل به معرفی پایگاه داده می پردازیم و با مفهوم دیتابیس و پایگاه های داده آشنایی پیدا می کنیم.…

آیا اصلا من میتونم یک طراح سایت و برنامه نویس بشم؟ آیا یادگیری طراحی سایت سخته ؟ آیا باید حتما زبان انگلیسی رو مسلط باشم؟ آیا حتما نیاز هست که رشته کامپیوتر باشم ؟ آیا یادگیری برنامه نویسی …
فصلِ: 2 , تعداد قسمت ها: 119 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل با زبان سمت سرور PHP آشنا می شویم و توابع و دستورات مهم این زبان برنامه نویسی را بررسی خواهیم کرد…

  بنام خدا   با سلام خدمت تمامی دوستان عزیز کلیک سایت. بسیار خرسندیم که با یک دوره پروژه محور دیگر در خدمت شما دوستان محترم هستیم که انشالله قرار است قدم بگذاریم به دنیای بسیار جذاب و مح…
فصلِ: 2 , تعداد قسمت ها: 100 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل می آییم یک سایت بلاگ با cms اختصاصی را پیاده سازی می کنیم که هم مروری باشه برای زبان برنامه نویسی PHP و هم شم…

توجه: این دوره دائما توسط مهندس روشنایی (مدرس دوره) بروز گردیده و مطابق با آخرین استانداردهای برنامه نویسی آپدیت می شود. توجه فرمائید دریافت آپدیت ها برای خریداران قبلی رایگان می باشد و نیاز…
فصلِ: 3 , تعداد قسمت ها: 169 , سطح: مقدماتی
موضوعات: آموزش PHP آموزش PHP

این فصل در یک نگاه:

آشنایی با دستورات html ، css و js و انجام مینی پروژه سامانه نمرات دانش آموزان مدرسه آلفا…

توضیحات کلی مجموعه: در این دوره به مفاهیم و توابع php و mysql پرداخته شده و این دوره منتج به تولید یک پروژه بزرگ نخواهد شد در پایان این دوره یک مینی پروژه مثل سامانه کارنامه دانش آموزان مدر…
فصلِ: 1 , تعداد قسمت ها: 19 , سطح: متوسط

این فصل در یک نگاه:

وب سایت فروشگاهی خود را بدون دانش برنامه نویسی و بدون پیش نیاز طراحی کنید.فروشگاه اینترنتی با افزونه ووکامرس که به شهرت …

راه اندازی فروشگاه اینترنتی در وردپرس با افزونه ووکامرس آموزش حرفه ای فروشگاه ساز وردپرس با افزونه ووکامرس           آخرین باز تولید آموزش ویدیویی ووکامرس در  1396/11/15  صورت گرفت.       …
فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 28 , تعداد قسمت ها: 253 , سطح: صفر تا صد

این فصل در یک نگاه:

آشنایی با امکانات جدید لاراول ۷…

برخی از سرفصل های این پکیج آموزشی :   لاراول چیست و چرا ما لاراول استفاده میکنیم کامپوزر کارش چیه و نصب اون نصب لاراول آموزش نصب لاراول از طریق اینستالر آموزش نصب لاراول با استفاده ا…
فصلِ: 1 , تعداد قسمت ها: 6 , سطح: صفر تا صد

این فصل در یک نگاه:

داشتن یک اپلیکیشن موبایل برای وب سایت به برند سازی و اعتبار وب سایت بهبود و تسریع می بخشد لذا توصیه می شود با وجود همگان…

  دوره آموزش طراحی و ساخت اپلیکیشن موبایل برای وب سایت   قطعا شما هم دوست دارید برای وب سایت خود اپلیکیشن بسازید و پس از پیگیری متوجه شدید که هزینه ای بیش از 5.000.000 تومان باید پرداخت بکن…
فصلِ: 9 , تعداد قسمت ها: 215 , سطح: صفر تا صد

این فصل در یک نگاه:

در اصل فصل در مورد performance صحبت خواهیم کرد :-React Performance-Lazy-Error Boundaries و سایت را بر روی هاست واقعی قرا…

با سلام خدمت کلیک سایتی های عزیز، به دوره ی صفر تا صد طراحی سایت با react js خوش آمدید. نکته:این دوره کاملا پروژه محور میباشد نکته:این دوره هیچ پیش نیازی ندارد ReactJS  چیست؟ ReactJS اس…
فصلِ: 11 , تعداد قسمت ها: 162 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل(فصل یازدهم مجموعه)،به طراحی CMS (سیستم مدیریت محتوا)اختصاصی فروشگاه می پردازیم.هدف از طراحی این بخش،آنست که م…

در این مجموعه آموزشی قصد داریم از صفر تا صد طراحی یک فروشگاه اینترنتی رو به صورت کامل آموزش بدهیم.این فروشگاه شامل تمامی بخش های مورد نیاز یک فروشگاه اینترنتی است. هدف از این مجموعه،آموزش…
فصلِ: 1 , تعداد قسمت ها: 4 , سطح: متوسط

این فصل در یک نگاه:

در بازاریابی نوین روش جدیدی ابداع شده که این روزا ها بسیار کسب و کارهای اینترنتی را با هزینه بسیار بسیار پایین و بازدهی …

توضیحات کلی مجموعه: (توجه: حتما با کلیک روی عکس این دوره آموزشی در بالا دمو را مشاهده کنید یا قسمت اول را رایگان دانلود کنید) در بازاریابی اینترنتی هر روز شاهد روش های جدید و استراتژی های ن…
فصلِ: 4 , تعداد قسمت ها: 240 , سطح: صفر تا صد

این فصل در یک نگاه:

طراحی پنل مدیریت(دسته بندی)- دسته بندی یا category - نمایش دسته های فرعی در view با ورود به یکی از دسته های اصلی و آشن…

توضیحات کلی مجموعه: این مجموعه توسط فریمورک محبوب و دوست داشتنی bootstrap  و به صورت تضمینی  و صفر تا صد جهت یادگیری کارآموزان عزیز ارائه گردیده و دوستانی که این دوره را به طور کامل و دقیق…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…
فصلِ: 5 , تعداد قسمت ها: 201 , سطح: صفر تا صد

این فصل در یک نگاه:

ایجاد پروژه آژانس مسافرتی.....…

فصل اول: آشنایی با مبانی برنامه نویسی اندروید   آشنایی با معماری برنامه های اندرویدی ساخت شبیه ساز جهت تست پروژه اندروید آشنایی با دستور Toast و حلقه for در برنامه های اندروی…
فصلِ: 1 , تعداد قسمت ها: 2 , سطح: متوسط

این فصل در یک نگاه:

بهترین و پر بازده ترین روش تبدیل بازدیدکننده سایت به مشتری تبلیغات هدفمند و برند سازی هوشمندانه با ایمیل می باشد. ایمیل…

  وبینار(سمینار آنلاین) آموزش تکنیک های ایمیل مارکتینگ   اگر تا انتها این متن را مطالعه کنید نظر شما در مورد ایمیل مارکتینگ 180 درجه عوض می شود!! بر هیچکس پوشیده نیست که از سال 1972 که ای…
فصلِ: 4 , تعداد قسمت ها: 368 , سطح: صفر تا صد

این فصل در یک نگاه:

مباحث تکمیلی فریم ورک لاراول…

فصل اول :آموزش مقدماتی فریم ورک لاراول معرفی فریم ورک لاراول و پیشنیازهای انجام کار انجام کانفیگ های اولیه برای نصب و راه اندازی فریم ورک معرفی روش های نصب پروژه لاراولی از طریق سایت گی…
فصلِ: 1 , تعداد قسمت ها: 155 , سطح: صفر تا صد

این فصل در یک نگاه:

مباحث مقدماتی فریم ورک react.js…

توضیحات کلی مجموعه: فصل اول : آشنایی با مباحث مقدماتی فریم ورک react.js نصب و راه اندازی node.js  و کلیه پیش نیازهای لازم نصب فریم ورک react روی لوکال و انجام تست های لازم آغاز آشنایی …

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید