3 回答

TA貢獻1856條經驗 獲得超11個贊
首先,您應該將驗證設置為同時在服務器端和客戶端工作??蛻舳?,主要是為了用戶體驗,因為精通開發的人總是可以繞過瀏覽器中的任何內容。但是,根據您的聲明,您希望有一條漂亮的用戶消息并顯示該消息,無論客戶端是什么,這將幫助您的用戶更好地了解如何使用您的表單。服務器端驗證也應該到位,以防止錯誤數據保存在數據庫中。
簡而言之,您需要他們攜手合作。您不需要任何特殊的 js 庫來進行最基本的驗證。HTML5 將為您提供顯示許多需求所需的內容,而無需額外的 JavaScript。但是,如果您不喜歡 HTML5 驗證的外觀,則需要使用某種 JavaScript。但是,我總是會從使用它開始,因為它將幫助您的應用程序更輕松地滿足可訪問性標準,并且從那里,您可以通過在其上添加更精美的基于 javascript 的東西來進行迭代,使其看起來更好。
該片段將有一個警告疊加層,該疊加層不會出現在您的網站上。
<form action="">
? <label for="pwd">Password:</label>
? <input type="password" id="pwd" name="pwd"
? pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}"
? title="Must contain at least one? number and one uppercase and lowercase letter, and at least 8 or more characters">
? <input type="submit">
</form>
現在,在后端,您應該在處理表單的代碼中創建一個函數,以在將其與其他數據庫規則一起保存到數據庫之前重新檢查驗證。如果由于用戶或某些錯誤以某種方式允許繞過驗證而導致此驗證失敗,您將在表單響應中發回一條失敗消息,前端將在嘗試保存到數據庫失敗后捕獲并顯示該消息。要回答具體如何進行,需要更多有關如何設置應用程序的信息。
您還可以在數據庫中創建一個表來存儲驗證規則,并可以通過某種 API 將這些規則傳遞到前端,以便前端和后端函數可以共享相同的規則,而不必硬編碼相同的正則表達式或無論你正在處理什么規則。換句話說,這兩個驗證的單一事實點——用戶體驗檢查和數據完整性檢查。

TA貢獻1757條經驗 獲得超7個贊
我正在使用驗證密碼來檢測檢測到的弱密碼或強密碼:
我有兩個例子:
This is Pure Javascript
var code = document.getElementById("password");
var strengthbar = document.getElementById("meter");
var display = document.getElementsByClassName("textbox")[0];
code.addEventListener("keyup", function() {
checkpassword(code.value);
});
function checkpassword(password) {
var strength = 0;
if (password.match(/[a-z]+/)) {
strength += 1;
}
if (password.match(/[A-Z]+/)) {
strength += 1;
}
if (password.match(/[0-9]+/)) {
strength += 1;
}
if (password.match(/[$@#&!]+/)) {
strength += 1;
}
if (password.length < 6) {
display.innerHTML = "minimum number of characters is 6";
}
if (password.length > 12) {
display.innerHTML = "maximum number of characters is 12";
}
switch (strength) {
case 0:
strengthbar.value = 0;
break;
case 1:
strengthbar.value = 25;
break;
case 2:
strengthbar.value = 50;
break;
case 3:
strengthbar.value = 75;
break;
case 4:
strengthbar.value = 100;
break;
}
}
<body>
<form class="center-block">
<input type="text" id="password" autocomplete="off" class="form-control input-lg">
<progress max="100" value="0" id="meter"></progress>
</form>
<div class="textbox text-center"> password </div>
</body>
這是 jQuery
function ValidatePassword() {
/*Array of rules and the information target*/
var rules = [{
Pattern: "[A-Z]",
Target: "UpperCase"
},
{
Pattern: "[a-z]",
Target: "LowerCase"
},
{
Pattern: "[0-9]",
Target: "Numbers"
},
{
Pattern: "[!@@#$%^&*]",
Target: "Symbols"
}
];
//Just grab the password once
var password = $(this).val();
/*Length Check, add and remove class could be chained*/
/*I've left them seperate here so you can see what is going on */
/*Note the Ternary operators ? : to select the classes*/
$("#Length").removeClass(password.length > 6 ? "glyphicon-remove" : "glyphicon-ok");
$("#Length").addClass(password.length > 6 ? "glyphicon-ok" : "glyphicon-remove");
/*Iterate our remaining rules. The logic is the same as for Length*/
for (var i = 0; i < rules.length; i++) {
$("#" + rules[i].Target).removeClass(new RegExp(rules[i].Pattern).test(password) ? "glyphicon-remove" : "glyphicon-ok");
$("#" + rules[i].Target).addClass(new RegExp(rules[i].Pattern).test(password) ? "glyphicon-ok" : "glyphicon-remove");
}
}
/*Bind our event to key up for the field. It doesn't matter if it's delete or not*/
$(document).ready(function() {
$("#NewPassword").on('keyup', ValidatePassword)
});
.glyphicon-remove {
color: red;
}
.glyphicon-ok {
color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="form-group has-feedback">
<input class="form-control" id="NewPassword" placeholder="New Password" type="password">
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<div id="Length" class="input glyphicon-remove">Must be at least 7 charcters</div>
<div id="UpperCase" class="glyphicon glyphicon-remove">Must have atleast 1 upper case character</div>
<div id="LowerCase" class="glyphicon glyphicon-remove">Must have atleast 1 lower case character</div>
<div id="Numbers" class="glyphicon glyphicon-remove">Must have atleast 1 numeric character</div>
<div id="Symbols" class="glyphicon glyphicon-remove">Must have atleast 1 special character</div>

TA貢獻1803條經驗 獲得超3個贊
您可以在 javascript 代碼中使用 jquery.validate,
<script>
$("#form1").validate({
rules:{
password:{
required:true,
minlength:8
}
},
messages:{
password:{
required:"Password is required",
minlength:"Passowrd must be atleast 8 characters long"
}
}
});
</script>
密碼是輸入字段中的名稱屬性,對于數據庫中的圖片,您可以使用 varbinary(max)
添加回答
舉報