آموزش طراحی سایتآموزش PHP

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

آموزش طراحی سایت با پی اچ پی – اعتبارسنجی ایمیل و URL در php

امروز با یک قسمت جدید از سری پست های کنترل فرم بخش آموزش پی اچ پی به زبان ساده در خدمت شما عزیزان هستم. در این جلسه به اعتبارسنجی ایمیل و url در php می‌پردازیم.

 

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

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

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

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

 

name$  به همراه تابع test_input را در جلسه ی فیلد های الزامی در php آموزش داده ایم .

در این مثال مقدار فیلد name را ابتدا الزامی بودنش را بررسی کرده ایم و سپس مقدار آن را در متغیر name$ قرار داده ایم. سپس با استفاده از تابع preg_match! چک کرده ایم که آیا محتوای آن در محدوده ی تعیین شده ( حروف الفبای بزرگ و کوچک لاتین و اسپیس) قرار ندارد . در صورتی که قرار نداشته باشد دستور if اجرا خواهد شد و مقدار ” فقط مجاز به استفاده از حروف الفبای بزرگ و کوچک لاتین و فاصله هستید ” را داخل متغیر nameErr$ می ریزد.

تابع preg_match دو پارامتر را به عنوان ورودی می پذیرد . ابتدا محدوده ی مورد نظر  و سپس رشته ی دلخواه . در صورتی که رشته با محدوده هم خوانی داشته باشد true و در غیر این صورت false را بر می گرداند.

علامت ! برای نقیض کردن شرط به کار رفته است.

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

سریع ترین راه برای اعتبار سنجی فیلد ایمیل استفاده از تابع filter_var می باشد. این تابع فرمت اصلی ایمیل را بررسی می کند و در صورت صحیح بودن true و در صورت نامناسب بودن فرمت ایمیل وارد شده false را برمی گرداند. کد این بخش به صورت یر نوشته می شود :

$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  $emailErr = "فرمت ایمیل نادرست است"; 
}
پس از بررسی پر بودن این فیلد با تابع filter_var شرط را بررسی می کنیم و در صورت نامناسب بودن فرمت ایمیل وارد شده مقدار ” فرمت ایمیل نادرست است ” را در متغیر emailErr$ می ریزد.

 

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

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

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

 

در ادامه پیشرفت فرم تا این مرحله را که شامل طراحی اولیه فرم و بررسی فیلدهای اجباری و همچنین صحیح بودن فرمت ایمیل و url را مشاهده می کنید.

<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
</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 is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid email format"; 
    }
  }
    
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
    // check if URL address syntax is valid
    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"])) {
    $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>Mizfa.com Form Validation Example</h2>
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Name: <input type="text" name="name">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
  E-mail: <input type="text" name="email">
  <span class="error">* <?php echo $emailErr;?></span>
  <br><br>
  Website: <input type="text" name="website">
  <span class="error"><?php echo $websiteErr;?></span>
  <br><br>
  Comment: <textarea name="comment" rows="5" cols="40"></textarea>
  <br><br>
  Gender:
  <input type="radio" name="gender" value="female">Female
  <input type="radio" name="gender" value="male">Male
  <span class="error">* <?php echo $genderErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>

<?php
echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
echo $comment;
echo "<br>";
echo $gender;
?>

</body>
</html>

 

خروجی :

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

منبع : w3schools

برچسب ها

نسرين ولی خانی

کارشناسي نرم افزار علاقمند به برنامه نويسی

نوشته های مشابه

‫2 نظرها

  1. سلام لطفا جواب منو بدین.
    الان با این کارها تا حدی ایمیل اعتبار سنجی میشه ولی نه کامل مثلا ببینید کاربر تو اینپوت ایمیل میاد بعد از نقطه com. رو وارد نمیکنه و co. یا . C رو وارد میکنه و با این کد لازهم پیغام معتبر بودن ایمیل رو میده درصورتی که معتبر نیست.برای اینکه دامنه رو کامل بررسی کنه چیکار کنیم؟

    1. سلام محمد. اتفاقا co نیازه چون ممکنه یک دامنه خود کاربر داشته باشه که co باشه مثلا test.co و موردی نداره. بهترین راه حل برای اعتبارسنجی ایمیل به نظر من این هست که وقتی کاربر ایمیل رو زد بعدش باید بره ایمیلش رو تایید کنه یعنی یک لینک ارسال بشه. این راه خیلی هم ساده هست و همینطور خیلی مطمئن.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
سایت خود را در گوگل مدیریت کنید + ۱۵ ساعت فیلم آموزشیجزئیات بیشتر اینجا کلیک کنید
بستن
با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

عضویت در خبرنامه هفتگی برای دریافت:

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
ترک میزفا خوب نیست!
دوره سئو، رایگان شد.
یک چیز متفاوت تجربه کنید
کاراکتر اشاره گر
دوره سئو، رایگان شد.
یک چیز متفاوت تجربه کنید
کاراکتر اشاره گر