我設計了一個使用HTML和PHP的客戶表單。但現在的問題是,驗證表單。我希望像asp.net頁面那樣進行驗證:只要文本框控件失去焦點,驗證器就會顯示狀態。使用PHP動態驗證HTML表單
這是可能的PHP?
我設計了一個使用HTML和PHP的客戶表單。但現在的問題是,驗證表單。我希望像asp.net頁面那樣進行驗證:只要文本框控件失去焦點,驗證器就會顯示狀態。使用PHP動態驗證HTML表單
這是可能的PHP?
沒有Javascript支持,這是不可能的,即使ASP.NET使用Javascript來協助驗證表單中的輸入字段。
您正在研究AJAX解決方案或JS驗證客戶端+ PHP服務器端驗證(始終需要執行客戶端+服務器驗證)。
但是不,沒有純PHP用於客戶端驗證,PHP是服務器端。
當你說你想要驗證發生「當文本框失去焦點」,這意味着你的意圖是做客戶端驗證。我極力阻止你這樣做,因爲客戶端「任何事物」都不應該被信任。所有的驗證都應該在服務器端完成。
現在,您可能希望使用一些jQuery來通過在瀏覽器中進行驗證來增強表單的「用戶體驗」,但請不要誤解,這僅用於展示。
下面的代碼應該引領你在正確的方向
// $clean_post: Assumes you already sanitized for SQL injection attack vectors and
// that you have already ensured proper character encoding.
// Example is for a hypothetical first name
if(empty($clean_post[ 'first_name' ]))
{
// Do something to let the user know that first name is required
}
else
{
// They entered a first name, this is good. Now check for
// invalid characters. We will allow A-Z , backtick, apostrophe, space and dash
if(preg_match("/[^a-zA-Z `'\-]/" , $clean_post[ 'first_name' ]))
{
// Do something because they have illegal characters.
}
}
你需要使用JavaScript/JQuery的實時驗證。如果您必須使用PHP來驗證輸入,則可以使用AJAX調用來驗證輸入和返回的PHP腳本。下面是類似於AJAX調用看起來像從輸入框中獲取值並將其傳遞給PHP腳本的內容。如果PHP腳本打印出「已通過」,那麼一切都很好,但如果沒有,則會刪除該值並提醒用戶。
$.ajax({
type:'post',
data:'value='+$('#inputFieldID').val();
url:'path-to-validate-script.php',
success:function(msg){
if (msg != "passed") {
$('#inputFieldID').val('');
alert("Invalid Input!");
}
}
});
以下是關於驗證的事情:客戶端驗證看起來不錯,可以非常快地進行設置。這對用戶更好,因爲它可以「做更多」來指示問題(vs只是沒有JavaScript的PHP)
但是,這是一個大,但它不是萬無一失的。你關掉了Javascript,你的驗證在水裏死了。依賴於任何JavaScript或jQuery對您的數據輸入不負責任......所以,您將不得不依靠混合解決方案 - 前端和後端。並且不要忘記數據消毒,要麼......或者您最終會以little Bobby Tables作爲您的網站用戶之一。
我公司確實將表格作爲其業務的核心部分。如果我要做自定義驗證,我會發瘋,把自己從屋頂上拋下。我爲use this script節省時間....它是快速,有效,和萬無一失,只需一行或兩個代碼,包括在課堂上的幾個字,使其工作。再次,這只是雙管齊下混合方法的前端部分。
在後端,當您提交時,如果驗證失敗,只需要讓函數返回問題輸入,並指示回UI以便可以引發警告。在我的應用程序中,我在最初隱藏的表單頂部有一個集中的「問題」警報區域,它捕獲PHP發出的所有後端驗證問題並將它們顯示在一個位置。如果他們花時間來覆蓋我的前端驗證,他們應該不得不通過一個巨大的錯誤信息,我想。
您的回答完全忽略了您無法單獨依靠前端驗證的事實。關掉JavaScript,你的解決方案就成了一塊無用的代碼。是的,用於前端驗證的Javascript,但你只給出了一半的答案。 – bpeterson76