0

我对 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() 验证所选国家/地区,但两个日期都没有。我能想到的唯一可能对日期产生影响的是我有datepicker()与之关联的 jQuery UI,但删除它仍然没有帮助。

感谢您的帮助和意见。

4

3 回答 3

2

有可能某些东西会导致发布一个空白值(可能是空格)。由于它们是文本字段,请尝试执行以下操作:

if (isset($_REQUEST['departDate']) && !empty($_REQUEST['departDate'])) {
于 2012-05-23T20:52:41.903 回答
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";
于 2012-05-23T20:56:03.490 回答
0

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

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

于 2012-05-23T20:59:53.643 回答