سبد (0)

تبلیغات

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

در این آموزش، نحوه ی اعتبارسنجی فیلدهای "نام"، "ایمیل" و "وب سایت" نشان داده خواهد شد.


اعتبارسنجی فیلد "نام" در PHP

Wiki

کد زیر، یک روش ساده برای چک کردن اینکه آیا فیلد "نام" معتبر است یا نه را نشان می دهد. (فیلد نام فقط شامل حروف و خط فاصله است)

اگر فیلد "نام" معتبر نباشد، در متغیر nameErr$ یک متن مناسب، تنظیم می شود:

$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name))
  {
  $nameErr = "فیلد نام  فقط شامل حروف و خط فاصله است";
  }
Note تابع ()preg_match
با استفاده از تابع ()preg_match، می توانید یک الگوی خاص را در یک رشته جستجو کنید. اگر الگوی مورد نظر در رشته وجود داشت مقدار true و اگر وجود نداشت مقدار false را برمی گرداند.

اعتبارسنجی فیلد "ایمیل" در PHP

Wiki

روش اول: استفاده از تابع ()preg_match

کد زیر، یک روش ساده برای چک کردن اینکه آیا فیلد "ایمیل" معتبر است یا نه را نشان می دهد. (باید شامل فرمت صحیح ایمیل باشد، همراه با علامت @ و .)

اگر فیلد "ایمیل" معتبر نباشد، در متغیر emailErr$ یک متن مناسب، تنظیم می شود:

$email = test_input($_POST["email"]);
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
  {
  $emailErr = "فرمت فیلد ایمیل صحیح نیست";
  }

روش دوم: استفاده از تابع ()filter_var

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

$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  $emailErr ="فرمت فیلد ایمیل صحیح نیست";
}

در این آموزش، از روش اول یعنی تابع ()preg_match استفاده شده است.


اعتبارسنجی فیلد "وب سایت" در PHP

Wiki

کد زیر، یک روش ساده برای چک کردن اینکه آیا فیلد "وب سایت" معتبر است یا نه را نشان می دهد. (باید شامل فرمت صحیح URL باشد، همچنین عبارت منظم زیر اجازه می دهد که در URL علامت dash "-" نیز استفاده شود)

اگر فیلد "وب سایت" معتبر نباشد، در متغیر websiteErr$ یک متن مناسب، تنظیم می شود:

$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))
  {
  $websiteErr = "فرمت فیلد وب سایت صحیح نیست";
  }

اعتبارسنجی فیلدهای "نام"، "ایمیل" و "وب سایت" در PHP

Wiki

تا اینجا، اسکریپت مان شبیه زیر شده است:

مثال (اعتبارسنجی فیلد ایمیل در PHP)

<!DOCTYPE HTML>
<html>
<head>
<style>
  .error {color: #FF0000;}
  span{min-width: 200px;float: right;}
</style>
</head>
<body>

<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
   if (empty($_POST["name"]))
     {$nameErr = "Name is required";}
   else
     {
     $name = test_input($_POST["name"]);
     // check if name only contains letters and whitespace
     if (!preg_match("/^[a-zA-Z ]*$/",$name))
       {
       $nameErr = "Only letters and white space allowed";
       }
     }
  
   if (empty($_POST["email"]))
     {$emailErr = "Email is required";}
   else
     {
     $email = test_input($_POST["email"]);
     // check if e-mail address syntax is valid
     if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
       {
       $emailErr = "Invalid email format";
       }
     }
    
   if (empty($_POST["website"]))
     {$website = "";}
   else
     {
     $website = test_input($_POST["website"]);
     // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
     if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))
       {
       $websiteErr = "Invalid URL";
       }
     }

   if (empty($_POST["comment"]))
     {$comment = "";}
   else
     {$comment = test_input($_POST["comment"]);}

   if (empty($_POST["gender"]) || $_GET["gender"]=="undefined")
     {$genderErr = "Gender is required";}
   else
     {$gender = test_input($_POST["gender"]);}
}

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

<h2>مثال اعتبارسنجی فرم ها در PHP</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<div>
  <span>نام:</span><input type="text" name="name">
  <span class="error">*</span>
</div>
<div>
  <span>ایمیل:</span>
<input type="text" name="email">
  <span class="error">*</span>
</div>
<div>
  <span>وب سایت:</span>
<input type="text" name="website">
  <span class="error"></span>
</div>
<div>
  <span>توضیحات:</span>
<textarea name="comment" rows="5" cols="40"></textarea>
  <span class="error">*</span>
</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 ($nameErr!="" || $emailErr!="" || $genderErr!="" || $websiteErr!="")
echo "<span style='color:red' >
         $nameErr <br /> $emailErr <br /> $genderErr <br /> $websiteErr
      </span>";
else
{
echo "<br /><h2>خروجی کدتان</h2>";
echo "نام :$name";
echo "<br />";
echo "ایمیل: $email";
echo "<br />";
echo "وب سایت: $website";
echo "<br />";
echo "توضیحات: $comment";
echo "<br />";
echo "جنسیت: $gender";
?>

}
</body>
</html>

خروجی کد بالا:

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

نام:*
ایمیل:*
وب سایت:
توضیحات:
جنسیت: زن مرد*
 

در آموزش بعدی نحوه ی جلوگیری از خالی شدن فیلدهای فرم، زمانی که کاربر روی دکمه submit کلیک می کند را نشان خواهیم داد.


برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

دیدگاه‌ها  

0 # amin 1397-03-21 10:36
سلام
برای اینکه بتوانیم از حروف فارسی در فیلد نام استفاده کنیم باید چه کنیم ؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # محمدرضا hhhh 1396-06-04 21:03
سلام این تابع test_input چیه ارور میگیره به ما میگه فانکشن test_input یافت نشد. ممنون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # امیر پهلوان صادق 1396-06-06 09:25
سلام
function test_input($data)
{
$data = trim($data);
$data = stripslashes($d ata);
$data = htmlspecialchar s($data);
return $data;
}

توضیحات بیشتر در مطلب زیر:
http://beyamooz.com/php/231-php-form/953-%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1%D8%B3%D9%86%D8%AC%DB%8C-%D9%81%D8%B1%D9%85-%D8%AF%D8%B1-php
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # آرمان 1395-12-11 10:31
سلام و خداقوت داخل عبارات منظمی که برای فیلد وبسایت نوشتین, اون براکت دوم برای چیه و فرقش با اولی چیه؟ ممنون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # احسان عباسی 1395-12-11 10:57
درود بر شما.
در کامنت های قبلی به طور مفصل در مورد عبارت های منظم توضیح داده ام. لطفا به پایین کامنت های زیر بروید و اون رو مطالعه کنید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مجید 2 1394-12-16 11:33
سلام این اسلش و بک اسلش و علامت ^ و + و - تو شرط if چیه ؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-12-16 21:40
سلام.
کدش رو دقیقا بذارید تو توضیح بدم،‌ ولی احتمالا منظور شما preg_match هست.
این علایم در عبارات باقاعده کارایی داره که یکی از کاربردش می‌تونه داخل شرط if باشه.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # amin 1394-08-06 17:00
سلام
این تابع چیه؟
else if(!eregi('^[a-zA-Z0 -9_\-\.][email protected][a-zA -Z0-9\-]+\.[a-z A-Z0-9\-\.]+$', $email))
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # مهرداد صلاحی 1394-08-06 17:21
با سلام.
این تابع با عبارات منظم (Regular Expression) کار میکنه. عبارات منظم، عباراتی هستند که دارای شکل و فرمت خاصی هستن که میشه با یه سری علامت، فرمت اون رو به دست آورد و انتها و ابتدای آن با یک کاراکتر خاص جدا میشود.

اگر عبارت منظم در رشته وجود داشت، طولش رو برمیگردونه، و اگه نداشت که false بر میگردونه. از i آخرش این استنباط میشه که این عبارت حساس به حروف یا insensitive نیست.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # amin 1394-08-06 19:19
میشه یکم بیشتر توضیح دهید؟
این تابع چه فرقی با تابع های بالا داره؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # مهرداد صلاحی 1394-08-06 20:04
دوست عزیز سؤالاتون خیلی گنگه!!!
اسم توابع رو نام ببر! اگه مشکلی تو کدی هست، یه تیکه از کد رو بیار.
خلاصه سؤالتون رو طوری مطرح کنید که دیگران با خوندنش منظور شما رو درک کنن.

الآن من تابع eregi رو با کدوم تابع مقایسه کنم؟؟؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # amin 1394-08-06 23:31
با تابع preg_match
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # مهرداد صلاحی 1394-08-07 07:08
با سلام.
هر دو تابع با عبارات منظم کار می‌کنن. فرقشون نحوه‌ی کار و خروجی هست. preg_match چک می‌کنه که فرمت رشته‌ی ورودی با عبارات منظم داخلش یکی هست یا نه. آرگومان سوم این تابع می‌تونه رشته‌های موردنظر رو به صورت یه ارایه به عنوان خروجی بده.
در تابع eregi چک می‌کنه چقدر از طول رشته‌ی موردنظر با فرمت عبارت منظم همخوانی داره. طول اون رو بر می‌گردونه!!!
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # azadeh ahmadi 1394-07-27 09:47
میشد دیگه از دو تا متغیر استفاده نکنیم!؟
مثلا بگیم اگه آرایه اش خالی بمونه اینو برامون چاپ کن که نباید خالی بمونه....اگه پر بشه این همون متغیره اسممونه مثلا ...
اینجوری اینقدر کدمون شلوغ نمیشد...
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # مهرداد صلاحی 1394-07-27 10:19
بله! اگه فکر میکنید کدتون بهینه و خلوت میشه، ازش استفاده کنید.

مثال ذکر شده صرفا جنبه آموزشی داره و برای فهم مطالب هست. اگر میتونید از کد کمتری استفاده کنید، حتما این کار رو انجام بدید.
چون در آینده خوانایی کد بالاتر میره.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # Milad 1394-07-25 14:16
سلام و خسته نباشید ،
میخواستم بدونم آیا تابع آماده ای وجود داره که مثلا بتونه فقط بگرفتن پارامتر نام فیلد و نوع فیلد بصورت کامل یه فرم رو اعتبارسنجی کنه ؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # مهرداد صلاحی 1394-07-25 14:30
با سلام و تشکر.
تا جایی که من اطلاع دارم، خیر!!!
ولی شما میتونید یه تابع بنویسید و این مقادیر رو بهش بدید و با استفاده از یکسری کدنویسی با فرمت خاص ایمیل و ... بهش بفهمونید که آیا متغیر موردنظر اعتبار داره یا خیر...

یه تابعی هم هست توی PHP به نام filter_var($var iable, FILTER_VALIDATE _TYPE); //comment که فرمت ip و ایمیل و url و اینا رو میشناسه. می تونید از این تابع هم استفاده کنید. خروجی این تابع مقدار true یا false هست که به این معنی هست که متغیر ورودی اگر برابر با فرمت داده شده بود، مقدار true و در غیر اینصورت مقدار false رو بر میگردونه!
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # Milad 1394-07-25 14:58
ممنون آقای صلاحی ،
امکان داره لطف کنید و نکات مهمی که برای اعتبارسنجی کامل و ایمن یه فرم لازمه فقط بصورت لیست بگید . منظورم اینه برای اینکه بشه مطئمن بود که میشه از یه فرم توی سایت استفاده کرد باید به چه نکاتی باید توی اعتبارسنجی فرم توجه کرد ؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # مهرداد صلاحی 1394-07-25 20:25
خواهش می‌کنم.
ببینید برای اعتبار سنجی قوانین و قاعده‌ی خاصی وجود نداره و شما باید بر اساس نیاز خودتون مقادیر رو گرفته و پردازش کنید.

اما به طور کلی مدنظر قرار دادن چند نکته می‌تونه خیلی مفید باشه:
1- اول از همه اینکه سعی کنید مقادیر رو تمیز کنید. فاصله‌ی اول و آخر فیلدها رو بگیرید (توسط توابع ltrime و rtrim).
2- سعی کنید مقادیری رو بگیرید که بهش نیاز دارید و اگه توی اون حیطه‌ی مدنظر شما نبود، همون‌جا اون فیلد رو رد کنید. مثلا برای درج سن فقط نیاز دارید چک کنید که فیلد عدد هست یا نه. اگر عدد نبود، دیگه نیاز نیست چکش کنید.
3- اعتبارسنجی اصلی باید سمت سرور قرار بگیره، ولی از اعتبار سنجی سمت کلاینت می‌تونید تا حدی کاربر رو از ورود اطلاعات نامعتبر آگاه کنید.

4- برای جلوگیری از حملات و تزریق کدها، مقادیر رو خنثی کنید. توابع خاصی برای این کار هستن که htmlentities($v ariable); //comment یکی از این توابع هست. (می‌تونید تو یه حلقه تمامی مقادیر رو از این فیلتر رد بدید.)

5- اگر فیلدها قرار هست در دیتابیس ذخیره بشن،‌علاوه بر موارد بالا بهتره اون رو escape‌هم کنید تا از تزریق کدهایی که باعث خرابی در دیتابیس می‌شن هم جلوگیری کنید. می‌تونید از تابع mysql_real_scap e_string($varia ble); //comment استفاده کنید.

...
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # سیما 1394-03-15 14:55
سلام ببخشید مثلا در این قسمت این حروف چیه؟
نشانگر چیه؟
باید همینو همیشه نوشت؟ثابته؟
if(!preg-match
(اینجا,$email)
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+7 # احسان عباسی 1394-04-13 09:34
سلام
-->آموزش اعتبار سنجي فيلد نام :
به عبارت زير توجه داشته باشيد:
^[a-zA-Z ]*$
اين يک عبارت منظم است. از يک عبارت منظم براي جستجوي يک عبارت خاص استفاده مي شود. حالا مي خواهيم نشان دهيم که معني اين عبارت چيست و به دنبال چه عبارت خاصي مي گردد:
1. از علامت ^ براي نشان دادن شروع يک رشته استفاده مي شود.
2.از علامت $ براي نشان دادن پايان يک رشته استفاده مي شود.

بنابراين آنچه بين اين دو علامت قرار مي گيرد نشان دهنده ي يک رشته است و يعني ما مي خواهيم به دنبال يک رشته بگرديم.

3.عبارت [a-zA-Z] مشخص کننده ي يک کاراکتر انگليسي است، چه کوچک باشد، چه بزرگ. يعني اين عبارت به دنبال يک کاراکتر کوچک يا بزرگ انگليسي مي گردد. بنابراين تا اينجا عبارت هاي منظم ما به دنبال تنها يک کاراکتر انگليسي مي گردد.

4.کاراکتر * : اين کاراکتر نشان دهنده ي از صفر تا بي نهايت است.

پس تا اينجا که ما به دنبال يک کاراکتر انگليسي مي گشتيم، اکنون با اضافه کردن *، به دنبال صفر تا بي نهايت کاراکتر انگليسي مي گرديم.

-->آموزش اعتبار سنجي فيلد وب سايت:
همان طور که در آموزش ها اومده، براي اعتبار سنجي فيلد وب سايت از عبارت منظم زير استفاده شده است:

/\b(?:(?:https?|ftp):\/\/|www\.)[[email protected]#\/%?=~_|!:,.;]*[[email protected]#\/%=~_|]/i

اکنون مي خواهيم قدم به قدم اين عبارت منظم رو آموزش بديم.
توجه داشته باشيد که بعنوان مثال، آدرس يک وبسايت به صورت هاي زير ممکن هست نوشته بشه:
http://www.beyamooz.com
https://www.beyamooz.com
www.beyamooz.com
ftp://beyamooz.com
و ...

همچنين ممکن هست که www ها به صورت کوچک و بزرگ باشند، يعني به صورت زير:
www.beyamooz.com
Www.beyamooz.com
WWw.beyamooz.com
و ...


براي ساختن اين عبارت منظم، با عبارت http شروع مي کنيم :
http
براي اينکه مشخص کنيم که مي خواهيم به دنبال https هم بگرديم، يک علامت ؟ جلوي حرف s قرار ميدهيم. علامت سوال به معني 0 يا 1 بار تطابق است، يعني اگر که 0 يا 1 کاراکتر s جلوي http وجود داشت آن را بعنوان تطابق برگردان:
https?
حالا مي خواهيم مشخص کنيم که اگر به جاي https، عبارت ftp هم بود، آن را بعنوان تطابق قبول کن:
براي اين کار، يک پرانتز باز مي کنيم به صورت زير:
(?:https?|ftp)
علامت سوال و دونقطه ي اولي يعني مي خواهيم از شرط 'يا' استفاده کنيم و علامت | هم به معني 'يا' است.
پس يعني اگر که اول آدرس مورد نظر عبارت https يا ftpبود (و يا http) آن را بعنوان تطابق بپذير.

در مرحله ي بعد مي خواهيم مشخص کنيم که اين تطابق ها در اول عبارت مورد نظر باشند، مثلا عبارت http را در اول رشته جستجو کند نه در آخر عبارت و ... پس از b\ استفاده مي کنيم:
\b(?:https?|ftp)
در ادامه مي خواهيم مشخص کنيم که جلوي فرضا http يک علامت (:) دو نقطه قرار گرفته باشد، و همچنين دو تا اسلش هم بعد از دو نقطه وجود داشته باشه:
\b(?:https?|ftp):\/\/
حالا مي خواهيم بگيم که اگر در اول آدرس، به جاي ftp يا https (يا http) عبارت .www هم وجود داشت اون رو بعنوان تطابق برگردان، پس دوباره از پرانتز و شرط 'يا' استفاده مي کنيم، به صورت زير(يعني کل پرانتز قبلي رو توي يه پرانتز ديگه قرار ميديم):
\b(?:(?:https?|ftp):\/\/|www\.)

در ادامه هم مي خواهيم مشخص کنيم که هريک از کاراکترهاي مشخص شده در بين براکت ها، به هر تعداد که باشند، را بعنوان تطابق برگرداند:
/\b(?:(?:https?|ftp):\/\/|www\.)[[email protected]#\/%?=~_|!:,.;]*[[email protected]#\/%=~_|]/i
و در آخر، مديفاير رو به i ست مي کنيم تا هم به دنبال حروف بزرگ برگردد و هم حروف کوچک.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # o.h 1395-09-02 02:26
سلام در مورد عبارت منظم توضیح دادید یه سوال برام پیش اومد
تو عبارات منظم علامت * به معنی 0 تا بینهایت بار تکرار رشته مورد نظره
اما تو عبارات منظم علامت + هم داریم که بمعنی 1 تا بینهایت بار تکرار رشته مورد نظره
میخواستم بدونم تو php از این حالتم میشه استفاده کرد یا نه
میدونم که میشه با الحاق [a-zA-Z] به [a-zA-Z]* اون حالت رو ایجاد کرد که حداقل یک کاراکتر وارد شده باشه
اگر میشه آیا بهتر نیست بجای دو مرحله اعتبارسنجی فیلد و کدنویسی بیشتر یک بار این کارو بکنیم؟
مثلا اگه از * استفاده کنیم باز ممکنه فیلد خالی باشه و باز باید خالی بودنشو چک کنیم
اما اگه از + استفاده کنیم نیازی به کنترل خالی بودن فیلد نیست
ممنون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # احسان عباسی 1395-09-02 09:06
سلام . بله امکانش هست، می تونید به جای * از + استفاده کنید تا دیگه لازم نباشه خالی بودن فیلد رو چک کنید.

$name = test_input($_POST["name"]);
if (!preg_match("/ ^[a-zA-Z ]+$/",$name))
{
$nameErr = "فیلد نام فقط شامل حروف و خط فاصله است";
}
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # alireza. 1394-02-28 12:41
با سلام
اگر بخواهیم فیلد "نام" در فرم مثال بالا، شامل کاراکترهای فارسی نیز باشد باید از چه دستوری استفاده کنیم؟
باتشکر
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # امیر پهلوان صادق 1394-02-28 15:20
سلام
بجای Validation مربوط به فیلد "نام" از کد زیر استفاده نمایید:if (!preg_match("/^\D{1,25}$/",$r_name))
{
$r_name_err = "فقط شامل کاراکترهای غیر عددی";
}

مورد بالا، به زیبایی در پروژه رزرو هتل دیده شده است:
www.beyamooz.com/php/339-project-hotel/2594-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%85%D8%AD%D9%88%D8%B1-php
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # miladm202 1393-10-29 14:46
با تشکر از مظالب بسیار خوبتون .
من یه مشکلی دارم . وقتی با متغیر $_SERVER[PHP_SE LF] میخوام کدها رو به صفحه جاری ارجا بدم بعد از اجرای صفحه تمام کدها از بالا به پایین یه بار اجرا میشن . برای جلوگیری از این مسئله و برای اینکه بخوام کدها زمانی اجرا بشن که من تعیین میکنم باید چکار کنم ؟؟!!
ممنون میشم پاسخ بدید ...
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # امیر پهلوان صادق 1393-10-29 15:27
در یک همچین مواقعی از یک تگ input با "type="hidden و "name="action و value دلخواه مثلاً "insert" استفاده می شه و زمانی که فرم submit می شه، این فیلد نیز همراه با بقیه فیلدها به سرور ارسال می شه ...!
خوب حالا می توانید با استفاده از دستور switch و البته مقداری که متغییر action داره، تصمیم بگیرید که چه کاری رو انجام دهید.
نمی دونم جوابم براتون قابل فهم بود یا نه ...!
اجازه دهید تا بیشتر توضیح بدم، تصور کنید در فایل reserve.php قصد داریم فرم رزرو هتل را نمایش دهیم و البته عملیات insert را نیز در همین فایل انجام خواهیم داد.
همان طور که گفتم در ابتدای این فایل مقدار action رو می خونیم و با استفاده از دستور swith تصمیم می گیریم که چی کار کنیم، در قسمت default این دستور تابع "()display_form _reserve" تنظیم شده، پس یعنی در ابتدا که درخواست رویت صفحه reserve.php به سرور ارسال میشه، فقط فرم رزرواسیون نمایش داده می شه ...
حالا اگر کاربر اطلاعات فرم را تکمیل کند و روی دکمه "ذخیره" کلیک کند، مقدار action تنظیم خواهد شد و این بار تابع "()insert" اجرا خواهد شد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # miladm202 1393-10-29 15:35
ممنون که جواب دادین . بازم تشکر به خاطر مطالبتون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+6 # حسین گلشنی 1393-07-21 15:37
سلام
برای اعتبار سنجی ایمیل php خودش یه تابعی داره به نام filter_var که در سایت w3schools.com هم با این تابع آموزش داده البته این کدی که شما هم گذاشتید درسته اما فکر کنم از اون موقع که این مطلب رو ترجمه کردید w3schools.com این صفحه اش آپدیت شده خودتون ببینید: http://www.w3schools.com/php/php_form_url_email.asp
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+4 # امیر خوش نیت 1393-07-22 10:24
به مطلب دوستمون هم اینو اضافه کنم که در مورد چک کردن url هم در همون تابع filter_var می تونین از FILTER_VALIDATE _URL استفاده کنین

http://www.w3schools.com/php/filter_validate_url.asp
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # امیر پهلوان صادق 1393-07-22 08:41
با تشکر از دقت نظر شما، اعتبارسنجی ایمیل تحت دو روش مختلف توضیح داده شد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # امیر خ 1393-07-20 20:14
در مثال مربوط به ایمیل گفتید که کاراکتر @ و . برای اعتبار سنجی هستن
در مورد کاراکترهای دیگه هم توضیح میدین
بقیه کاراکترهای استفاده شده ی زیر چه کاری انجام میدن؟
"/([\w\-]+\@[\w\-]+\.[\w\-]+)/"

و کاراکترهای دیگه که برای اعتبار سنجی در "نام" و "وب سایت" استفاده شدن چه کاری را انجام میدن؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+13 # امیر پهلوان صادق 1393-07-22 09:00
قطعا با عبارت منظم آشنا هستید، در زیر مفهوم برخی از علائم عبارات منظم آورده شده است:
  • ^ : نشانه شروع می باشد. به طور مثال دستور bcd^ به معنی هر عبارتی است که با bcd شروع شود.
  • $ : نشانه پایان می باشد. به طور مثال دستور $bcd به معنی هر عبارتی است که در انتها به bcd ختم شود.
  • + : نشانه تکرار است و اگر پشت عبارتی قرار بگیرید باید حداقل یکبار تکرار شود.
  • * : همانند + می باشد با این تفاوت که آن عبارت می تواند تکراری نداشته باشد.
  • ? : اگر پشت عبارتی قرار بگیرد یعنی اینکه آن عبارت باید صفر یا یک بار تکرار شود.
  • () : برای قسمت بندی عبارات به زیر عبارات و اولویت بندی نیز می باشد.
  • [] : لیستی از کاراکترها که می خواهیم تطبیق دهیم در این دو کروشه قرار می گیرد.
  • [ ^] : لیستی از کاراکترهائی که نمی خواهیم تطبیق داده شوند از این عبارت استفاده می کنیم.
  • d\ : نشانه ارقام می باشد یعنی وقتی این عبارت بیاید منظور یکی از ارقام است.
  • D\ : نشانه هر کاراکتری غیر از رقم می باشد.
  • w\ : نشانه حرف یا عدد می باشد و کاراکترهای خاص نیست و معادل [a-zA-Z_0-9] است.
  • W\ : نشانه کاراکترهای خاص می باشد و عدد یا حروف یا space نیست.
  • s\ : نشانه کاراکتر space می باشد.
  • S\ : نشان هر کاراکتری غیر از space می باشد.
  • {} : مشخص کننده تعداد تکرارا می باشد و اگر داخل آن یک عدد نوشته شود یعنی اینکه عبارت قبل از آن دقیقا باید به تعداد آن عدد تکرارا شود ولی اگر دو عدد نوشته شود عبارت قبل از آن باید تکراری بین آن دو عدد باشد.
  • | : بمعنی یا است. بعنوان مثال a|b یعنی یا a یا b
  • - : بمعنی تا است. بعنوان مثال a-z یعنی از a تا z
  • . : می تواند هر کاراکتری باشد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # امیر خوش نیت 1393-07-22 10:25
ممنون از پاسخ کامل و خوبتون
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

آموزش صوتی PHP

بستن
مدرس:
سوال و جواب:

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان
 
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تبلیغات اینترنتی