2012-09-22 114 views
0

我有点卡在这里如何编写服务器当前日期的代码并验证它们。表单中的日期和验证

所以基本上在一个文件是form.php,我必须编写服务器当前日期的代码在dd/mm/yy,这可以由用户编辑。日期应该以表单格式显示,例如在Web浏览器上应该显示日期:[23/9/2012]。

和另一个文件,这是process.php我必须验证日期。

所以我form.php的,这是我写到目前为止:

<html> 
<body> 
<?php 
    if (isset ($_POST["date"])){ 
    $date = date("d/m/y"($_POST["date"])); 
    echo $date; 
    } 
?> 
<form action="form.php" method="POST"> 
Date: <input type="text" name="date" value="Date" /> 

</form> 
</body> 
</html> 

它出现在Web浏览器中的日期只有日期:[日期]刚刚字日期,但没有日期。我一直坚持了一个小时。

+0

RTFM:http://php.net/date –

回答

3

你可以用正则表达式做到这一点:

<?php 
    if (isset($_POST['date']) && !empty($_POST['date'])) { 
     $date = trim($_POST['date']); 
    } 

    $regex = '/^((([1-2][0-9])|([1-9]))/([2])/[0-9]{4})|((([1-2][0-9])|([1-9])|(3[0-1]))/((1[0-2])|([3-9])|([1]))/[0-9]{4})$/'; 
    if (preg_match($regex, $date)) { 
     $disp_date = $date; 

     //update the date in db 
     $error = ''; 
    } 
    else { 
     $error = 'Invalid date format<br />'; 

     //get last date from db 
     $disp_date = $date_from_db; 
    } 
    ?> 
    <?=$error?> 
    <form action="" method="POST"> 
     <input type="text" value="<?=$disp_date?>" name="date" /> 
     <input type="submit" value="Submit Date" /> 
    </form> 

正则表达式的工作原理: DD/MM/YYYY: DD必须是1-31,1-12 MM YYYY和一个4位数字NUM。

编辑:修正了二月的问题。

+0

嗨,THX对于这一点,但这是验证正确的? –

+0

是的,但我只是意识到它有一个问题。它不检查月份是否为2,因此不允许DD为30或31. –

+0

好的,我解决了这个问题。 –

0
<html> 
<body> 
<?php 
    if(isset($_POST['date']) && strtotime($_POST['date'])){ # date validation 
     $date = $_POST['date']; 
    } else { 
     $date = date('d/m/y'); 
    }   
?> 
<form action="form.php" method="POST"> 
Date: <input type="text" name="date" value="<?php echo $date?>" /> 

</form> 
</body> 
</html> 
+0

谢谢亚历山大,尽管一个简单的问题,为什么我们把“其他”,不是子句执行时,如果else语句的条件是错误的? –

+0

@TylerMatema你可以忽略它,它只是为'date'输入字段设置默认值为今天的日期 –

0

就可以得到当前的日期和显示这样的...

<html> 
<body> 
<?php 
$today = date("j, n, Y"); 
?> 
<form action="form.php" method="POST"> 
Date: <input type="text" name="date" value="<?php echo $today?>"/> 
</form> 
</body> 
</html> 

,你可以学习从这个链接验证日期 check date

+0

谢谢Raj,我认为自己在做这个代码,我不敢相信它可以是一个简单的代码。我可以插入$ date = date(“d,m,y”),只是在值中回显出来,我不知道--_-非常感谢你,我每天都在不断学习新的东西。 –

0

你应该重新安排你的程序是这样的:

<html> 
<body> 
<?php 
    if (!isset ($_POST["date"])){ 
     $date = date("d/m/y"); 
    else { 
     $date = $_POST["date"]; 
    } 
?> 
<form action="form.php" method="POST"> 
Date: <input type="text" name="date" value="<?php echo $date; ?>" /> 

</form> 
</body> 
</html> 

在这里你会让用户请在第一次加载页面时查看当前时间服务器,然后再查看已编辑的时间服务器。

+0

嗨赫南,非常感谢你,我想做的工作,但有一个问题,为什么我们把“其他”,但?当else语句的条件为false时,else子句是否执行?我很抱歉,即时通讯仍然是初学者,经常会感到困惑:S –

+0

我所做的是:如果用户没有给出日期,请将其从系统中取出。如果没有(其他)使用用户给出的日期。 –

1

尝试进行格式化像这样

<?php 
     $date = new DateTime(); 
     echo $date->getTimestamp(); 
     echo $date->format('Y-m-d H:i:s'); 
    ?> 
+0

+1使用'DateTime' – Havelock