Я пишу код, практикующий инструкции PHP if и else и проверку формы .
основная идея заключается в следующем: после ввода имени, DOB и электронной почты и нажатия кнопки отправки, на основе DOB они вводят кнопку, которая ведет к следующим:
страница, рассказывающая им, что они слишком молоды, чтобы пить (notwelcome.php)
ИЛИ
-а странице, рассказывающей им, что они могут заказать напиток (welcome.php)
2 страницы (notwelcome.php & welcome.php) извлекаются из отдельного файла с именем action.php, как это показано :
<?php include('welcome.php'); include('notwelcome.php'); ?>
Это то, что я пытался … но не работает. ничего не происходит .. Как будто код if еще не существует 🙁
<?php if ($_POST['submit']) { $dob = $_POST['dob']; if (isset ($_POST['dob'] )> 12/31/1992) { header("Location: notwelcome.php"); } else { header("Location: welcome.php");} } ?>
Помогите. Я начинающий, и я ударил небольшой удар по дороге в моем коде.
дополнительная информация:
Код HTML выглядит следующим образом:
<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>
Попробуй это. Кроме того, вам не нужно include
эти файлы, если вы не хотите, чтобы они отображались на странице, прежде чем обрабатывать форму. Я бы проверял, чтобы у вас был правильный путь. Вы также хотели бы сделать так, чтобы пользователи вводили 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-коде вы можете добавить дополнительные условия, чтобы проверить правильность диапазонов.
<?php if (isset($_POST['date']) && isset($_POST['month']) && isset($_POST['year']) ) { $dob = date_format (date_create ($_POST['year']."-".$_POST['month']."-".$_POST['date']), "Ymd"); if ($dob > date("Ymd", 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>
Вероятно, есть более элегантный способ сделать это, но это сработало для меня:
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 года.