基本PHP $ _REQUEST

时间:2012-05-23 20:49:08

标签: php datepicker

我对PHP很新,以下问题将证明:

我有三个基本的isset()

if (isset($_REQUEST['countries'])) {
    echo "yes";
} 
else echo "no";

if  (isset($_REQUEST["depateDate"])) {
    echo "yes";
}
else echo "no";

if (isset($_REQUEST['arrivalDate'])) {
    echo "yes";
}
else echo "no";

这是表格中的HTML:

<form action="conversionOutputNew.php" method="GET">
    Depart Date:
    <input type="text" id="depateDate" name="depateDate" />

    Arrival Date:
    <input type="text" id="arrivalDate" name="arrivalDate" />

    <select multiple="multiple" name="countries[]" style="height:180px;">
        <option value="United Kingdom">United Kingdom</option>
        <option value="Australia">Australia</option>
</form>

正在发生的事情是所选国家/地区正在使用isset()进行验证,但这两个日期并非如此。我能想到的唯一可能会影响日期的是我将jQuery UI与datepicker()相关联,但删除它仍然无济于事。

感谢您的帮助和意见。

3 个答案:

答案 0 :(得分:2)

有可能导致一个空白值(可能是一个空格)来获得POST。由于它们是文本字段,请尝试执行以下操作:

if (isset($_REQUEST['departDate']) && !empty($_REQUEST['departDate'])) {

答案 1 :(得分:0)

这将测试非空输入并验证:

// use a suitable format date for preg_match()
if ($arrivalDate = trim($_REQUEST['arrivalDate']) && preg_match('/\d{4}\-\d{2}\-\d{2}/', $arrivalDate)) 
    echo "My arrival date is $arrivalDate";
else
    echo "No valid input";

答案 2 :(得分:0)

问题是,在提交表单时,日期已设置(因此,isset返回TRUE),但它们是空的。因此,您可以检查空白(使用空($ variable)php函数),以开始。

尽管如此,我认为必须设置一些更具体的规则,而不是仅依赖于isset。特别是对于日期,您可以使用正则表达式检查特定格式(例如,使用preg_match和正则表达式,如/ ^ \ d {4} -d {2} - \ d {2} $ /(以匹配YYYY-mm -dd,上述正则表达式可以进一步改进,但它只是一个例子。