I have this php function for validation date format:
function _CHECK_DATEFORMAT_($date, $format='YYYY/MM/DD')
{
switch( $format )
{
case 'YYYY/MM/DD':
case 'YYYY-MM-DD':
list( $y, $m, $d ) = preg_split( '/[-\.\/ ]/', $date );
break;
case 'YYYY/DD/MM':
case 'YYYY-DD-MM':
list( $y, $d, $m ) = preg_split( '/[-\.\/ ]/', $date );
break;
case 'DD-MM-YYYY':
case 'DD/MM/YYYY':
list( $d, $m, $y ) = preg_split( '/[-\.\/ ]/', $date ); //3715 LINE
break;
case 'MM-DD-YYYY':
case 'MM/DD/YYYY':
list( $m, $d, $y ) = preg_split( '/[-\.\/ ]/', $date );
break;
case 'YYYYMMDD':
$y = substr( $date, 0, 4 );
$m = substr( $date, 4, 2 );
$d = substr( $date, 6, 2 );
break;
case 'YYYYDDMM':
$y = substr( $date, 0, 4 );
$d = substr( $date, 4, 2 );
$m = substr( $date, 6, 2 );
break;
default:
throw new Exception( "Invalid Date Format" );
}
return checkdate( $m, $d, $y ); //3738 Line
}
Code Output :
echo validateDate( '2007-21-04', 'YYYY-DD-MM' ) ? 'good'. "\n" : 'bad' . "\n";
This Worked but if user input invalid date character Like This :
echo validateDate( '2007*2104', 'YYYY-DD-MM' ) ? 'good'. "\n" : 'bad' . "\n";
echo validateDate( 'test', 'YYYY-DD-MM' ) ? 'good'. "\n" : 'bad' . "\n";
I see error:
Notice: Undefined offset: 2 in C:\xampp\htdocs\cms\functions.php on line 3715
Notice: Undefined offset: 1 in C:\xampp\htdocs\cms\functions.php on line 3715
Warning: checkdate() expects parameter 2 to be long, string given in C:\xampp\htdocs\cms\functions.php on line 3738
how do validate character before check for validate date format?