0

我正在使用一个 PHP函数来检查多个帖子字段(例如,、、)checkdate();提交的日期。即使选择了字段并且日期是有效日期,该函数也会返回 false。$_POST['month']$_POST['day']$_POST['year']checkdate()

我不明白为什么会这样?

编辑#1:实际代码的详细视图。

代码由 $_POST 提交并进入 OOP 类“新寄存器”

$register=new register(...., $_POST['month'], $_POST['day'], $_POST['year'],...);


$this->birthdate=$byear.'-'.$bmonth.'-'.$bday;
$this->b_month=(int)bmonth;
$this->b_day=(int)bday;
$this->b_year=(int)byear;

然后检查生日

    public function checkBirthdate(){

        if(checkdate($this->b_month, $this->b_day, $this->b_year)){

            return true;
        } else {

            return false;
        }
    }
4

2 回答 2

1

您的register班级需求如下所示:

class register
{
    protected $b_month;
    protected $b_day;
    protected $b_year;

    public function __construct(...., $month, $day, $year, ...)
    {
        $this->b_month = (int)$month;
        $this->b_day = (int)$day;
        $this->b_year = (int)$year;
    }

    public function checkBirthdate(){
        if(checkdate($this->b_month, $this->b_day, $this->b_year)){
            return true;
        } else {
            return false;
        }
    }
}

// usage example
$r = new register(...., $_POST['month'], $_POST['day'], $_POST['year'],...);
echo $r->checkBirthdate() ? 'Valid!' : 'Not Valid!';

根据您问题中的代码,您创建寄存器对象,然后将,b_month分配给其他对象。b_dayb_year

于 2012-12-04T08:57:51.230 回答
0

你应该做这样的事情

class Register {
 private $b_year;
 private $b_day;
 private $b_year;

public function __construct( $month,$day,$year )
{
 $this->b_year = $year;
 $this->b_month = $month;
 $this->b_day;
}

public function checkValidDate()
{
  if( checkdate($this->b_month,$this->b_day,$this->b_year) ) return true;
  return false

}

}

if( !isset( $_POST ) ) {  
<form action="" type="POST">
Month: <select name="month">
<option value="1">January</option>
<option value="2">February</option>
so on...so forth..
</select>

Day: <select name="day">
Day<option value="1">1</option>
<option value="2">2</option>
so on...so forth..
</select>

Year: <select name="year">
<option value="2012">2012</option>
<option value="2011">2011</option>
so on...so forth..
</select>
<input type="submit" value="Submit" />
</form>
} else {
$register=new register($_POST['month'], $_POST['day'], $_POST['year']);
    if( $register->checkValidDate() ) echo "Valid!";
    else echo "Invalid!";
}
于 2012-12-04T09:05:14.207 回答