2013-05-29 79 views
2

我怎樣才能請求密碼只是數字來創建新用戶?如何請求密碼僅爲創建新用戶的號碼?

這可能是一個愚蠢的問題,但我沒有找到如何讓密碼爲數字[0-9]! 另一個相關的問題:我怎麼能要求密碼只是數字[1-9]?

我試過這個,但它沒有工作!

<input type="password" name="password" maxlength="30" type="number" value="<?php echo htmlentities($password); ?>" /> 
+1

Type = number僅適用於新一代瀏覽器 –

+2

爲什麼密碼只能是數字?讓他們輸入任何東西有什麼不對? –

+0

@傑克:我有一個想法,我想證明它:) – MRAN

回答

0

除了服務器端檢查(必須的)和客戶端JavaScript檢查(良好的可用性),你可以使用HTML5 pattern屬性。它由一些瀏覽器支持,並且在它們中,即使JavaScript被禁用,它也提供客戶端檢查。例如:

<input type="password" name="password" maxlength="30" pattern="\d+"> 

MDN info on input在這方面已經過時了。根據HTML5 CR,pattern屬性也被允許用於[input type=password][2],並且現代瀏覽器(包括IE 10)以這種方式支持它。

+0

感謝..這是足夠偉大的,但從數字[1-9]只? – MRAN

+0

我在developer.mozilla.org上搜索過,但是我沒有發現pattern =「\ d +」..!的任何內容。我怎樣才能找到更多關於它的信息? – MRAN

+1

只允許從1到9的數字,使用'pattern =「[1-9] +」'。該值的語法與JavaScript正則表達式中的語法相同,只是需要匹配整個字符串;這粗略地說對應於開始時隱含的「^」,並且在模式結尾處隱含「$」。 –

1

在您的代碼中有2 type屬性,我認爲這是行不通的。讓typepassword

在javascript或php中驗證用戶輸入,如果輸入是數字,則只能保存到數據庫。

在JavaScript中使用函數isNaN

編號:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN

在PHP中使用is_numeric

編號:http://php.net/manual/en/function.is-numeric.php

+0

你不應該鏈接文件到w3schools。詳情可以在這裏找到(http://w3fools.com)。您可能想鏈接到[Mozilla開發者網絡](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN)。 – Touki

+0

@Touki:我編輯它,謝謝你的網址:) –

+0

數據應該驗證客戶端*和*服務器端,而後者通常更重要。客戶端檢查太容易繞過。 –

1

使用JavaScript來捕捉按鍵(keyup)和扔掉的那些不是數字。基本上,您將輸入的值輸入input,刪除最後一個字符,然後將其放回。有了jQuery,這實際上非常簡單。

您可以使用服務器端檢查,然後通知您的用戶他們需要重新開始......但如果這種情況發生在您身上,您會知道什麼是糟糕的用戶界面。 JavaScipt是​​客戶端的原因。

+0

謝謝你們提供這方面的信息,我用Jukka K. Korpela先生回答.. – MRAN

1

它應該是服務器端檢查,因爲否則可以很容易地由前端操縱。

您可以使用正則表達式來操縱輸入或者簡單地通過檢查:

if (is_int($_POST['password'])) { 
    // continue 
} 
else { 
    // break 
} 

is_int文檔:http://php.net/manual/en/function.is-int.php也有相關的功能

+0

謝謝你們提供這方面的信息.. – MRAN

3

您可以使用正則表達式這樣

$pass = preg_replace('/[^0-9]/', '', $password); 

這隻會取0到9之間的數值。對於1到9只需更改該值。 還theres一個is_numericintval功能PHP

if(is_numeric($pass)){ 
$password = $pass; 
} else { 
//Error message 
} 
+0

我很喜歡這個,我會試試看,但我最好使用is_int,對嗎? – MRAN

+1

正則表達式可能是一種選擇,但它是您的選擇。選擇你感覺舒適的地方。 – Nabil

1
function checkNumKey(evt) 
    { 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 

    return true; 
    } 

在腳本中包含標籤此功能。 然後在文本框中調用它,但是你想要

例如,

<input type="text" onkeypress="javascript:return checkNumKey(event);" /> 
+1

這不會阻止將文字粘貼到字段中,不是嗎?我會建議檢查整個字段與任何按鍵後的正則表達式'.replace(/ [^ 0-9] /,'')' –

+1

如果你這樣做...你還應該使用服務器端檢查...但這將有助於向啓用了JS的用戶提供反饋。 – techtheatre

+0

謝謝大家的信息.. – MRAN

0

如果妳正在尋找一個客戶端驗證,你可以使用jQuery

$(document).ready(function(){ 
    $("#name_ajax").change(function(){ 

     if($.isNumeric($("#name_ajax").val())){ 
     return; 
     } 
     else { 
     alert ('not allowed'); 
     } 
    } 
}) 

其中name_ajax是文本字段的ID。

不要忘了包括jQuery庫

+0

謝謝你的信息.. – MRAN

相關問題