我对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()
相关联,但删除它仍然无济于事。
感谢您的帮助和意见。
答案 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,上述正则表达式可以进一步改进,但它只是一个例子。