0

私はPHPにかなり慣れていませんが、次の質問で証明されます。

私は3つの基本的なものを持っ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() で検証されていますが、2 つの日付は検証されていません。日付に影響を与える可能性があると私が考えることができる唯一のことは、jQuery UI がdatepicker()関連付けられていることですが、それを削除しても解決しませんでした。

あなたの助けと意見に感謝します。

4

3 に答える 3

2

何かが原因で空白の値 (おそらく空白) が POST される可能性があります。これらはテキスト フィールドなので、次のようにしてみてください。

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 に答える