2

我如何要求密码为数字才能创建新用户?

这可能是一个愚蠢的问题,但我没有找到如何让密码仅为数字 [0-9]!另一个相关问题:我如何要求密码仅为数字 [1-9]?

我试过这个,但它没有用!

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

7 回答 7

3

您可以像这样使用正则表达式

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

这只会取 0 到 9 之间的数值。对于 1 到 9,只需更改值。还有一个用于 php的is_numericintval函数

if(is_numeric($pass)){
$password = $pass;
} else {
//Error message
}
于 2013-05-29T06:22:36.830 回答
1

您的代码中有 2 个type属性,我认为这不起作用。让它type成为password

验证 javascript 或 php 中的用户输入,如果输入是数字,则仅保存到 darabase。

在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

于 2013-05-29T06:15:24.447 回答
1

使用 JavaScript 捕获按键 ( keyup) 并丢弃不是数字的按键。基本上,您将输入的值input取出,删除最后一个字符,然后将其放回原处。使用 jQuery,这实际上非常简单。

您可以使用服务器端检查,然后通知您的用户他们需要重新开始......但是如果您曾经遇到过这种情况,您就会知道糟糕的 UI 会造成什么后果。JavaScipt 是客户端是有原因的。

于 2013-05-29T06:16:51.717 回答
1

它应该是服务器端检查,否则很容易被前端操纵。

您可以使用正则表达式来操作输入或简单地通过以下方式检查它:

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

is_intdocs:http ://php.net/manual/en/function.is-int.php还有相关函数

于 2013-05-29T06:17:23.157 回答
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;
  }

在脚本标签中包含这个函数。并根据需要在 textBox 上调用它

例如

<input type="text" onkeypress="javascript:return checkNumKey(event);" />
于 2013-05-29T06:23:57.827 回答
0

如果您正在寻找客户端验证,您可以使用 jQuery

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

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

name_ajax文本字段的 id 在哪里。

不要忘记包含 jquery 库

于 2013-05-29T06:42:40.400 回答
0

除了服务器端检查(必须)和客户端 JavaScript 检查(有利于可用性)之外,您还可以使用 HTML5pattern属性。一些浏览器支持它,并且在它们中,即使禁用 JavaScript,它也提供客户端检查。例子:

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

在这方面,MDN 上的信息input已经过时。根据 HTML5 CR,该pattern属性也允许用于 [ input type=password][2],并且现代浏览器(包括 IE 10)以这种方式支持它。

于 2013-05-29T09:13:03.457 回答