大多數表格都輸入 DOB。少數(數百人)在沒有列出出生日期的情況下通過。
HTML 表單以:
<form id="registration-form" class="forms reg-form-layout" method="POST">
并且該欄位具有必需(相關位):
<div class="field-group-h-2">
<label class="form-label field-label" id="reg-drj-dob-l" for="reg-drj-dob-f">Date of birth*</label>
<input class="form-control form-field" id="reg-drj-dob-f" type="date" name="regDateOfBirth" value="<?php if(isset($_POST["regDateOfBirth"])) echo $_POST["regDateOfBirth"]; ?>" required="required"
</div>
<div class="form-button-container">
<button class="btn btn-primary form-button" id="reg-new-submit" type="submit" value="submit" form="registration-form" name="regSubmit">Submit</button>
</div>
<p class="paragraph form-result"><?php echo $_SESSION["regResult"];?></p>
<p class="paragraph form-errors"><?php echo $_SESSION["regErrors"];?></p>
PHP 還具有驗證檢查(相關位):
$regDateOfBirth = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["regDateOfBirth"]))
{
$regDateOfBirthErr = "Date of birth (required) ";
}
else
{
$tempDateOfBirth = date_create($_POST["regDateOfBirth"]); $regDateOfBirth = date_format($tempDateOfBirth, 'd-m-Y');
}
$anyDateErr = $regDateOfBirthErr;
if (!$anyDateErr)
{
post the form data to a text file on the server and send it in an email
}
else
{
$_SESSION["regErrors"] = "There is an error with your: $anyDateErr ";
}
(請原諒因從主檔案中復制和粘貼位而造成的任何語法錯誤,非常長的檔案)
測驗時,如果不在該欄位中輸入日期,我將無法提交表單。
無論是帶有表單的電子郵件,還是我將欄位值發送到的服務器上的文本檔案,都沒有針對這一小部分用戶的 DOB。
怎么可能少部分人能空著提交呢?
會不會是瀏覽器的問題?
或者也許通過將日期欄位設定為“”最初我會導致潛在問題?
更新:
我修改了Required 屬性。謝謝
我發現了一個沒有 DOB 的表單,檢查了它的提交時間并檢查了服務器上的錯誤日志。該提交似乎產生了以下錯誤:
PHP 警告:date_format() 期望引數 1 為 DateTimeInterface,布林值在第 97 行的 /assets/php/form-reg.php 中給出
我將 PHP 驗證更改為:
if (empty($_POST["regDateOfBirth"])){$regDateOfBirthErr = "Date of birth (required) ";
}
else
{
$tempDateOfBirth = DateTime::CreateFromFormat('Y-m-d', $_POST["regDateOfBirth"]);
if ($tempDateOfBirth == FALSE){$regDateOfBirthErr = "Date of birth
format incorrect";
}
else
{
$regDateOfBirth = $tempDateOfBirth->format('d-m-Y');
}
}
謝謝
我現在有一個不同的錯誤要處理,但我需要一個新的帖子
uj5u.com熱心網友回復:
if (empty($_POST["regDateOfBirth"]))此行僅檢查它是否為空。如果我碰巧發送了錯誤的日期,那么這個條件將無意中滿足(例如'154-134-41')。
date_create($_POST["regDateOfBirth"]);如果您的日期格式不正確,此函式將回傳 false。
date_format($tempDateOfBirth, 'd-m-Y')如果您將布林值傳遞給它,這將引發與您提到的相同的例外。
更改requiredhtml 上的屬性與此問題無關。
你的服務器不應該假設它會得到正確的資料,因為你的 html 上有安全防護。請正確驗證您在服務器上的資料,無論是否檢查 html/js。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/510120.html
標籤:phphtml形式必需的
