我有一个基本脚本,可以生成年龄验证的下拉列表。我想要做的是在开始时为每个下拉列表添加选项。因此,对于白天,第一个选项是“日”,月 - “月”,年 - “年”,每个值为0.这是代码:
<?php
//define the year
$thisYear = date('Y');
$filtered = array_map("strip", $_POST);
function strip($val){
$val = strip_tags($val);
$val = htmlentities($val,ENT_QUOTES);
return $val;
}
function renderDropDown($name, $opts, $valueIsKey=true){
$out = array();
$out[] = '<select name="'.$name.'">';
foreach($opts as $key => $val){
if($valueIsKey){
$out[] = '<option value="'.$key.'">'.$val.'</option>';
} else {
$out[] = '<option value="'.$val.'">'.$val.'</option>';
}
}
$out[] = '</select>';
return implode("\n", $out);
}
if($_POST['submit'] != 'submit' && !isset($_POST['submit'])){
//define text months
for($i=2; $i<=13; $i++){
$calTime = mktime(0, 0, 0, $i, 0, $thisYear);
$months[date('m', $calTime)] = date('M', $calTime);
}
$renderHTML = true;
} else {
//try to construct a valid date from post data
if(checkdate($filtered['months'], $filtered['days'], $filtered['years'])){
//valid date..check if they are 18+
$validAge = $thisYear - 18;
if($filtered['years'] <= $validAge){
//inside you go
die('yes');
} else {
header('Location: http://www.google.com');
}
} else {
//invalid date.. try again mr hacker
}
}
if($renderHTML){
?>
<form name="ageVerifier" action="" method="post">
Day: <?php print(renderDropDown('days', range(1,31), false)); ?>
Month: <?php print(renderDropDown('months', $months)); ?>
Year: <?php print(renderDropDown('years', range($thisYear, $thisYear-100), false)); ?>
<input type="submit" name="submit" value="submit" />
</form>
<?php
}
?>
对此有任何帮助将不胜感激。
干杯, 克里斯
答案 0 :(得分:0)
我不确定这是否是你需要的。
function renderDropDown($name, $opts, $valueIsKey=true){
$out = array();
$out[] = '<select name="'.$name.'">';
$out[] = '<option value="0">'.ucfirst($name).'</option>';
foreach($opts as $key => $val){
if($valueIsKey){
$out[] = '<option value="'.$key.'">'.$val.'</option>';
} else {
$out[] = '<option value="'.$val.'">'.$val.'</option>';
}
}
$out[] = '</select>';
return implode("\n", $out);
}
这很简单,但每个名称的末尾都有复数s
。您可能希望向函数添加参数$title
,因此它将变为:
function renderDropDown($name, $opts, $title, $valueIsKey=true){
[...]
$out[] = '<option value="0">'.$title.'</option>';
[...]
}
您可以使用以下内容调用该函数:
renderDropDown('days', range(1,31), "Day", false);
修改:您可能需要查看this。
希望有所帮助。
-Alberto
答案 1 :(得分:0)
你可以这样做 - 我在renderDropDown
函数中添加了一个额外的参数;你只需传递你想要的第一个值作为最后一个参数。
作为注释,您可能需要进行一些额外的输入检查。添加“日”等默认值意味着您现在可能存在无效输入。
function renderDropDown($name, $opts, $valueIsKey=true, $default=null){
$out = array();
$out[] = '<select name="'.$name.'">';
if ($default)
$out[] = "<option value=''>{$default}</option>";
foreach($opts as $key => $val){
if($valueIsKey){
$out[] = '<option value="'.$key.'">'.$val.'</option>';
} else {
$out[] = '<option value="'.$val.'">'.$val.'</option>';
}
}
$out[] = '</select>';
return implode("\n", $out);
}