Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP if,else语句。出生确认表和日期_Php_Html_Validation_If Statement - Fatal编程技术网

PHP if,else语句。出生确认表和日期

PHP if,else语句。出生确认表和日期,php,html,validation,if-statement,Php,Html,Validation,If Statement,我正在编写代码练习PHPif和else语句和表单验证 其基本思想是: 输入姓名、DOB并发送电子邮件并单击提交按钮后,根据他们输入的DOB,按钮将引导他们找到以下线索: -告诉他们还太小不能喝酒的页面(notwelcome.php) 或 -告诉他们可以点饮料的页面(welcome.php) 这两个页面(notwelcome.php和welcome.php)是从名为action.php的单独文件中提取出来的,保存方式如下: <?php include('welcome.php'); incl

我正在编写代码练习PHPif和else语句表单验证

其基本思想是: 输入姓名、DOB并发送电子邮件并单击提交按钮后,根据他们输入的DOB,按钮将引导他们找到以下线索:

-告诉他们还太小不能喝酒的页面(notwelcome.php)

-告诉他们可以点饮料的页面(welcome.php)

这两个页面(notwelcome.php和welcome.php)是从名为action.php的单独文件中提取出来的,保存方式如下:

<?php
include('welcome.php');
include('notwelcome.php');
?>
    <div style="text-align: center;">

        <h2>FORM & PHP</h2>

        <h3>WHINE & DINE</h3>
        <form action="action.php" method="post">
           Full Name: <input type="text" name="name"><br>
           Date of Birth: <input type="date" name="dob"><br>
            E-mail: <input type="text" name="email"><br>
            <input type="submit" data-inline="true" value="Submit">

        </form>
        </div>
    </div>
        </form>

这是我一直在尝试的…但它不起作用。什么事也没有发生。。就好像if-else代码根本不存在一样:(


我是一个初学者,在代码中遇到了一个小问题

其他资料:

HTML代码如下所示:

<?php
include('welcome.php');
include('notwelcome.php');
?>
    <div style="text-align: center;">

        <h2>FORM & PHP</h2>

        <h3>WHINE & DINE</h3>
        <form action="action.php" method="post">
           Full Name: <input type="text" name="name"><br>
           Date of Birth: <input type="date" name="dob"><br>
            E-mail: <input type="text" name="email"><br>
            <input type="submit" data-inline="true" value="Submit">

        </form>
        </div>
    </div>
        </form>

表单和PHP
呜咽与进餐
全名:
出生日期:
电子邮件:

试试这个。另外,除非您希望在处理表单之前将这些文件显示在页面上,否则您不需要
包含这些文件。我会检查以确保您的相对路径正确。您还需要确保用户以正确的格式输入DOB

<?php

if (isset($_POST['dob'])) {

    $dob = $_POST['dob'];

    if ($dob > date("m/d/Y", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 21))) {
        header("Location: notwelcome.php");
    } else {
        header("Location: welcome.php");}
}
?>

您可以试试这个。在php代码中,您可以添加额外的if条件来检查范围的有效性

<?php
if (isset($_POST['date']) && isset($_POST['month']) && isset($_POST['year']) ) 
{
    $dob = date_format (date_create ($_POST['year']."-".$_POST['month']."-".$_POST['date']), "Y-m-d");
    if ($dob > date("Y-m-d", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 21)))
      {
        header("Location: notwelcome.php");
      } 
    else 
      {
        header("Location: welcome.php"); 
      }
}
?>

<html>
<head></head>
<body>
<div style="text-align: center;">

        <h2>FORM & PHP</h2>

        <h3>WHINE & DINE</h3>
        <form action="r.php" method="post">
           Full Name: <input type="text" name="name"><br>
           Date of Birth: <select name="month">
<option value="01">January</option><option value="02">February</option><option value="03">March</option>
<option value="04">April</option><option value="05">May</option><option value="06">June</option>
<option value="07">July</option><option value="08">August</option><option value="09">September</option>
<option value="10">October</option><option value="11">November</option><option value="12">December</option></select> <select name="date" >
<option value="1">01</option><option value="2">02</option><option value="3">03</option>
<option value="4">04</option><option value="5">05</option><option value="6">06</option>
<option value="7">07</option><option value="8">08</option><option value="9">09</option>
<option value="10">10</option><option value="11">11</option><option value="12">12</option>
<option value="13">13</option><option value="14">14</option><option value="15">15</option>
<option value="16">16</option><option value="17">17</option><option value="18">18</option>
<option value="19">19</option><option value="20">20</option><option value="21">21</option>
<option value="22">22</option><option value="23">23</option><option value="24">24</option>
<option value="25">25</option><option value="26">26</option><option value="27">27</option>
<option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select> <input name="year" type="text" id="year" size="4" maxlength="4"> <span>(YYYY)</span>
<br>
E-mail: <input type="text" name="email"><br>
<input type="submit" data-inline="true" value="Submit">
</form>
</div>          
</body>     
</html>

表单和PHP
呜咽与进餐
全名:
出生日期: 一月二月三月 四月五月六月 七月至九月 十月十二日 010203 040506 070809 101112 131415 161718 192021 222324 252627 28293031 (YYYY)
电子邮件:

可能有一种更优雅的方法,但这对我很有用:

if(isset($_POST['dob'])) { $dob = $_POST['dob'];
    list($date,$time) = explode(" ", $dob);
    list($year,$month,$day) = explode("-",$date);
    $years  = date("Y") - $year;
    $months = date("m") - $month;
    $days   = date("d") - $day;
        if (($years > 21) || ($years == 21 && $months > 0) || ($years == 21 && $months == 0 && $days >= 0)) {
        header("Location: welcome.php");
        } else {
        header("Location: notwelcome.php");
        }
}

从当前年份减去出生年份,从当前月份减去出生月份,从当前日期减去出生日期,这基本上可以运行三个测试。首先,如果当前年份比出生年份晚21年,则这些测试是合法的。其次,如果是在出生年份后21年,但在出生年份后,则这些测试是合法的月日,他们是合法的。最后,如果是在人的出生年后21年,恰好是他们的出生月,并且月日大于或等于人的出生日,他们是合法的。如果这些事情都不是真的,他们就在21岁以下。

12/31/1992
是12除以31除以1992…建议你读一读关于PHPdo中的日期,您希望根据条件包含(xor)PHP文档吗?如果是这样,尝试在If正文中包含include,但更好的做法是只执行这些文件中的功能,而不是基于对If的评估来包含它们。而
isset($\u POST['dob'])>1992年12月31日
不会(严格来说)也可以使用。
isset()
返回一个布尔值,因此您的比较没有意义。此外,我目前想知道您在
action.php
中定义了
if/else
块的位置……如果10个人都出生在同一天/月/年呢?(我对这个数字很保守)如果这只是一个练习,那没关系,但是如果你打算在现实世界中使用它,那么我建议你检查重复的电子邮件地址。嗨,迈克尔,我感谢你的回复。我仍然无法使它工作,我想问题可能在我这边,不是你的代码不正确。还有回答您的问题,我已经创建了action.php并“包含”了这些文件,因为我不知道如何做,因为表单标签只能有一个“action”。如果您知道更好的方法,我将非常感谢您的建议。另一个问题是,如果我决定保留action.php文件,请选择“if else”语句也在其中定义?另外,是的,用户正在输入正确的日期格式尝试将此if语句放在html的顶部,这样它就是一个文件。然后确保它是一个php文件,并删除action=“action.php”然后在每个可能性中放置一个不同的echo,看看检查日期的if语句是否有效(例如echo'welcome';)。PHP>=5.3有DateTime::diff,这可能是一种更干净的方法。