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

اعتبارسنجی ایمیل و URL در 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

فیلم آموزشی asp.net core 2

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

فیلم آموزشی asp.net core 2

4 نظر

4 پاسخ

  1. باسلام خدمت مدیریت اين سایت
    این سایت واقعا خیلی عالی هست
    دست سازنده این سایت درد نکنه

  2. سلام
    درسایت من برای وارد کردن ایمیل عضویت فقط جیمیل و یاهو مجاز هستن. البته فرم عضویت ووکامرسه. که من اعتبارسنجی رو توی فایل form-login.php و input ایمیل استفاده کردم . و کار میکنه. فقط مشکل اینه که الان فقط برای عضویت از قسمت ووکامرس کار میکنه . میخوام از قسمت عضویت خود وردپرس بشه این اعتبار سنجی رو انجام داد. میشه این اعتبار سنجی رو در فایل functions.php قرارداد که شامل کل فیلد های ایمیل سایت بشه؟
    چون قرار دادن اعتبار سنجی توی input درست نیست و کسی زرنگ باشه میتونه دورش بزنه.
    اگر کدش برای فایل functions.php رو میدونید ممنون میشم ارسال کنید.

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

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

حداکثر حجم فایل برای آپلود: 1 مگابایت. فایل‌های مجاز برای آپلود: عکس, ویس, ویدیو, ورد یا پی دی اف, فایل متنی, زیپ. شما می‌تونید برای بهتر پرسیدن سوالتون، عکس یا ویس یا حتی فیلم در بخش نظرات میزفا آپلود کنید. برای ضبط ویس می‌تونید از خود واتس آپ استفاده کنید و بعد اینجا آپلود کنید و برای ارسال عکس هم کافی هست اسکرین شات بگیرید. Drop file here

با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

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

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
فیلم آموزشی asp.net core 2
ترک میزفا خوب نیست!
معرفی جامع‌ترین ابزار سئو در ایران
بالای ۱۰ هزار عضو
PHZpZGVvIHdpZHRoPSI2MDAiIGhlaWdodD0iMzUwIiBwb3N0ZXI9Imh0dHBzOi8vbWl6ZmEuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjMvMDUvcG9zdGVyLW1pemZhLXRvb2xzLXZpZGVvLW1pbi5wbmciIGNvbnRyb2xzIHByZWxvYWQ9Im5vbmUiPiANCiAgIDxzb3VyY2Ugc3JjPSJodHRwczovL21pemZhLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA1L21pemZhX3Rvb2xzXzcyMHAubXA0IiB0eXBlPSJ2aWRlby9tcDQiPg0KPC92aWRlbz4=