اعتبار سنجی تاریخ در بازه زمانی مشخص با php

اعتبار سنجی تاریخ با php – در این آموزش قصد داریم یاد بگیریم که چطوری تاریخی که از کاربر دریافت می کنیم رو اعتبار سنجی کنیم که آیا معتبر هست یا نه ( البته در برای تاریخ میلادی خیلی ساده تر هست اما برای تاریخ جلالی فرق می کند )
سورس کد
نیازمند کتابخانه Jdf هست که در پایین لینک دانلود قرار داده شده است .
<?php
function loadJDF()
{
if (!function_exists('jmktime')) require_once "jdf.php";
}
function timestampToFaDate($timestamp, $format = "Y-m-d H:i:s", $digits = "en", $none = '', $timezone = 'Asia/Tehran')
{
loadJDF();
return jdate($format, $timestamp, $none, $timezone, $digits);
}
function validateByPersianDateInCustomRange($value)
{
$result = false;
if (!$value || !is_string($value)) return $result;
$date_parts = explode("/", $value);
if (count($date_parts) != 3) return $result;
foreach($date_parts as &$date_part){
if(!is_numeric($date_part)) return $result;
$date_part = intval($date_part);
}
$unix = time();
// check year
$currentYear = intval(timestampToFaDate($unix , "Y"));
if (!(1300 <= $date_parts[0] && $date_parts[0] <= $currentYear)) return $result;
// check month
$currentMonth = intval(timestampToFaDate($unix , "m"));
if (!(1 <= $date_parts[1] && $date_parts[1] <= 12)) return $result;
if ($date_parts[0] == $currentYear) {
if (!(1 <= $date_parts[1] && $date_parts[1] <= $currentMonth)) return $result;
}
// check day
$currentDay = intval(timestampToFaDate($unix , "d"));
if (!(1 <= $date_parts[2] && $date_parts[2] <= 31)) return $result;
if ($date_parts[0] == $currentYear && $date_parts[1] == $currentMonth) {
if (!(1 <= $date_parts[2] && $date_parts[2] <= $currentDay)) return $result;
}
$result = true;
return $result;
}
// تاریخی که دارم اسکریپت رو چک می کنم 1402/6/1
var_dump(validateByPersianDateInCustomRange("1396/6/6")); // true
var_dump(validateByPersianDateInCustomRange("1402/6/1")); // true
var_dump(validateByPersianDateInCustomRange("1402/6/2")); // false
?>
دانلود سورس کد
ارسال نظر