手动字母数字验证php

时间:2015-07-20 03:36:33

标签: php

创建大量的大写和小写字母以及0-9,以及任何其他允许的字符进行表单验证是否更安全?与使用ctype_alnum()相反。为了防止sql注入,那就是。

示例:

<?php
    $inputValue = "{$userValue}";
    $set = array(a,b,c,d...A,B,C,D....0,1,2,3...);
    if(!in_array($inputValue, $set){
       echo "Please submit only letters or numbers.";
?> 

3 个答案:

答案 0 :(得分:1)

我不经常这样说,但是在这里使用a regex check可能会更容易:

^(BOOL succeeded, NSError *error)

或者,如果您坚持使用当前路线,则可以通过执行以下操作来简化阵列声明:

if (preg_match('~[^\w\d]~', $inputValue)) {
    echo 'Please submit only letters or numbers.';
}

答案 1 :(得分:0)

您的问题的答案是否定的,两个选项之间的安全性没有差异。还值得一提的是,这不适合防止SQL注入 - 因为您应该使用预准备语句。

答案 2 :(得分:0)

您只需使用real_escape_string

在mysql中

$name = mysql_real_escape_string($_POST['username']);

同时检查此related question in Stack Overflow

在Mysqli

同时阅读此Example

$user = $_POST['username'];
$name = $mysqli->real_escape_string($user);

或者像这样使用 ctype_alnum()

同时阅读此Example

<?php
$inputValue = '$userValue';

    if (ctype_alnum($inputValue))
    {
        echo "Only letters and numbers A-Z, a-z and 0-10";
    } else
    {
        echo "Contain atleast one wrong letter";
    }

?>