Show/hide 行列式为日期的单选按钮

Show/hide radiobuttons where the determinant is date

在注册表中我选择了比赛费用:

<p><input type="radio" name="fee" class="date1" value="30"> 30€ until 30 may</p>
    <p><input type="radio" name="fee" class="date1" value="15">child 15€ until 30 may</p>
    <p><input type="radio" name="fee" class="date2" value="50"> 50€ until 30 june</p>
    <p><input type="radio" name="fee" class="date2" value="25">child 25€ until 30 june</p>  
    <p><input type="radio" name="fee" class="date3" value="80">80€ until 10 july</p>
    <p><input type="radio" name="fee" class="date3" value="40"> 40€ child until 10 july

如何在 5 月 30 日之前只显示表格的前两行 (class=date1) 之后只有 3-4 行从 5 月 30 日到 6 月 30 日 (class=date2) 最后两行从 6 月 30 日到 7 月 10 日 (class=date3)

根据我对您的问题的理解,以下应该可行。

<?php $current_time = time(); ?>
<?php if ($current_time < mktime(0, 0, 0, 6, 1, 2015)) { ?>
  <p><input type="radio" name="fee" class="date1" value="30"> 30€ until 30 may</p>
  <p><input type="radio" name="fee" class="date1" value="15">child 15€ until 30 may</p>
<?php } else if ($current_time < mktime(0, 0, 0, 7, 1, 2015)) { ?>
  <p><input type="radio" name="fee" class="date2" value="50"> 50€ until 30 june</p>
  <p><input type="radio" name="fee" class="date2" value="25">child 25€ until 30 june</p>
<?php } else if ($current_time < mktime(0, 0, 0, 7, 11, 2015)) { ?>  
  <p><input type="radio" name="fee" class="date3" value="80">80€ until 10 july</p>
  <p><input type="radio" name="fee" class="date3" value="40"> 40€ child until 10 july
<?php } ?>

请注意,这似乎很危险,因为我可以轻松操纵请求并发送 fee=0。希望你在服务器端有一些错误检查。

---编辑---

确保在接受来自未知来源(即网络用户)的输入时禁止所有无效输入。由于您在此表单上的有效输入数量非常有限,您可以轻松检查以确保它是这些有效输入之一。

如果不进行这样的检查,有人可以更改他们的请求并发送 fee=1。然后他们可能会以 1 欧元的价格获得一张票。尽管您可能有其他流程来防止这种情况发生。

$current_time = time();
if ($current_time < mktime(0, 0, 0, 6, 1, 2015)) {
  if ($_POST['fee'] !== '15' && $_POST['fee'] !== '30') {
    // return error
  }
} else if ($current_time < mktime(0, 0, 0, 7, 1, 2015)) {
  if ($_POST['fee'] !== '25' && $_POST['fee'] !== '50') {
    // return error
  }
} else if ($current_time < mktime(0, 0, 0, 7, 11, 2015)) { 
  if ($_POST['fee'] !== '40' && $_POST['fee'] !== '80') {
    // return error
  }
}