PHP年龄验证

时间:2016-10-08 18:46:51

标签: php

我试图验证某个网站的访问者是否达到法定年龄或未满18岁。

我试图解决Age Verification

给出的答案

我使用了该问题/答案中的以下部分:

/**
 * @author - Sephedo
 * @for - Deedub @ Stackoverflow
 * @question - https://stackoverflow.com/questions/18751788/age-verification
 */
$min_age = 18;

if( isset( $_POST['submit'] ) )
{
    if( mktime(0, 0, 0, $_POST['month'], $_POST['day'], $_POST['year'] ) < mktime(0, 0, 0, date('n'), date('j'), ( date('Y') - $min_age ) ) )
    {
        echo("over $min_age");
    }
    else
    {
        echo("under $min_age");
    }
}

然后我的表格是:

<form class="form-horizontal" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<fieldset>

<?php
    // lowest year wanted
    $cutoff = 1910;

    // current year
    $now = date('Y');

    // build months menu
    echo '<div class="form-group">' . PHP_EOL;
    echo '<label class="col-md-4 control-label" for="selectbasic">Month</label>' . PHP_EOL;
    echo '<div class="col-md-4">' . PHP_EOL;
    echo '<select name="month" class="form-control">' . PHP_EOL;
    for ($m=1; $m<=12; $m++) {
        echo '  <option value="' . $m . '">' . date('F', mktime(0,0,0,$m)) . '</option>' . PHP_EOL;
    }
    echo '</select>' . PHP_EOL;
    echo '</div>' . PHP_EOL;
    echo '</div>' . PHP_EOL;

    // build days menu
    echo '<div class="form-group">' . PHP_EOL;
    echo '<label class="col-md-4 control-label" for="selectbasic">Day</label>' . PHP_EOL;
    echo '<div class="col-md-4">' . PHP_EOL;
    echo '<select name="day" class="form-control">' . PHP_EOL;
    for ($d=1; $d<=31; $d++) {
        echo '  <option value="' . $d . '">' . $d . '</option>' . PHP_EOL;
    }
    echo '</select>' . PHP_EOL;
    echo '</div>' . PHP_EOL;
    echo '</div>' . PHP_EOL;

    // build years menu
    echo '<div class="form-group">' . PHP_EOL;
    echo '<label class="col-md-4 control-label" for="selectbasic">Year</label>' . PHP_EOL;
    echo '<div class="col-md-4">' . PHP_EOL;
    echo '<select name="year" class="form-control">' . PHP_EOL;
    for ($y=$now; $y>=$cutoff; $y--) {
        echo '  <option value="' . $y . '">' . $y . '</option>' . PHP_EOL;
    }
    echo '</select>' . PHP_EOL;
    echo '</div>' . PHP_EOL;
    echo '</div>' . PHP_EOL;
?>

<div class="form-group">
  <label class="col-md-4 control-label" for="singlebutton">Done?</label>
  <div class="col-md-4">
    <button type="submit" class="btn btn-primary">Submit</button>
  </div>
</div>

</fieldset>
</form>

当我提交表单时,echo("over $min_age");echo("under $min_age");页面上没有新的输出。

我忽略了什么吗?

为了节省时间,我的表单的HTML输出没有PHP:

<form class="form-horizontal" method="post" action="/landing.php">
<fieldset>

<div class="form-group">
<label class="col-md-4 control-label" for="selectbasic">Month</label>
<div class="col-md-4">
<select name="month" class="form-control">
  <option value="1">January</option>
  <option value="2">February</option>
  <option value="3">March</option>
  <option value="4">April</option>
  <option value="5">May</option>
  <option value="6">June</option>
  <option value="7">July</option>
  <option value="8">August</option>
  <option value="9">September</option>
  <option value="10">October</option>
  <option value="11">November</option>
  <option value="12">December</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="selectbasic">Day</label>
<div class="col-md-4">
<select name="day" class="form-control">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
  <option value="8">8</option>
  <option value="9">9</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>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="selectbasic">Year</label>
<div class="col-md-4">
<select name="year" class="form-control">
  <option value="2016">2016</option>
  <option value="2015">2015</option>
  <option value="2014">2014</option>
  <option value="2013">2013</option>
  <option value="2012">2012</option>
  <option value="2011">2011</option>
  <option value="2010">2010</option>
  <option value="2009">2009</option>
  <option value="2008">2008</option>
  <option value="2007">2007</option>
  <option value="2006">2006</option>
  <option value="2005">2005</option>
  <option value="2004">2004</option>
  <option value="2003">2003</option>
  <option value="2002">2002</option>
  <option value="2001">2001</option>
  <option value="2000">2000</option>
  <option value="1999">1999</option>
  <option value="1998">1998</option>
  <option value="1997">1997</option>
  <option value="1996">1996</option>
  <option value="1995">1995</option>
  <option value="1994">1994</option>
  <option value="1993">1993</option>
  <option value="1992">1992</option>
  <option value="1991">1991</option>
  <option value="1990">1990</option>
  <option value="1989">1989</option>
  <option value="1988">1988</option>
  <option value="1987">1987</option>
  <option value="1986">1986</option>
  <option value="1985">1985</option>
  <option value="1984">1984</option>
  <option value="1983">1983</option>
  <option value="1982">1982</option>
  <option value="1981">1981</option>
  <option value="1980">1980</option>
  <option value="1979">1979</option>
  <option value="1978">1978</option>
  <option value="1977">1977</option>
  <option value="1976">1976</option>
  <option value="1975">1975</option>
  <option value="1974">1974</option>
  <option value="1973">1973</option>
  <option value="1972">1972</option>
  <option value="1971">1971</option>
  <option value="1970">1970</option>
  <option value="1969">1969</option>
  <option value="1968">1968</option>
  <option value="1967">1967</option>
  <option value="1966">1966</option>
  <option value="1965">1965</option>
  <option value="1964">1964</option>
  <option value="1963">1963</option>
  <option value="1962">1962</option>
  <option value="1961">1961</option>
  <option value="1960">1960</option>
  <option value="1959">1959</option>
  <option value="1958">1958</option>
  <option value="1957">1957</option>
  <option value="1956">1956</option>
  <option value="1955">1955</option>
  <option value="1954">1954</option>
  <option value="1953">1953</option>
  <option value="1952">1952</option>
  <option value="1951">1951</option>
  <option value="1950">1950</option>
  <option value="1949">1949</option>
  <option value="1948">1948</option>
  <option value="1947">1947</option>
  <option value="1946">1946</option>
  <option value="1945">1945</option>
  <option value="1944">1944</option>
  <option value="1943">1943</option>
  <option value="1942">1942</option>
  <option value="1941">1941</option>
  <option value="1940">1940</option>
  <option value="1939">1939</option>
  <option value="1938">1938</option>
  <option value="1937">1937</option>
  <option value="1936">1936</option>
  <option value="1935">1935</option>
  <option value="1934">1934</option>
  <option value="1933">1933</option>
  <option value="1932">1932</option>
  <option value="1931">1931</option>
  <option value="1930">1930</option>
  <option value="1929">1929</option>
  <option value="1928">1928</option>
  <option value="1927">1927</option>
  <option value="1926">1926</option>
  <option value="1925">1925</option>
  <option value="1924">1924</option>
  <option value="1923">1923</option>
  <option value="1922">1922</option>
  <option value="1921">1921</option>
  <option value="1920">1920</option>
  <option value="1919">1919</option>
  <option value="1918">1918</option>
  <option value="1917">1917</option>
  <option value="1916">1916</option>
  <option value="1915">1915</option>
  <option value="1914">1914</option>
  <option value="1913">1913</option>
  <option value="1912">1912</option>
  <option value="1911">1911</option>
  <option value="1910">1910</option>
</select>
</div>
</div>

<div class="form-group">
  <label class="col-md-4 control-label" for="singlebutton">Done?</label>
  <div class="col-md-4">
    <button type="submit" class="btn btn-primary">Submit</button>
  </div>
</div>

</fieldset>
</form>

1 个答案:

答案 0 :(得分:1)

您正在检查是&#34;提交&#34;在POST中设置,但您没有任何具有该名称的输入,因此将永远不会设置。尝试在提交按钮上添加名称:

<button type="submit" name="submit" class="btn btn-primary">Submit</button>