如何检查字符串是否是字母数字并且可以在PHP中包含空格?

时间:2013-09-03 14:16:32

标签: php mysql

我一直在尝试使用PHP进行安全搜索查询。

到目前为止,这是我的代码,这是错误的:

else if(!ctype_alpha($searchkey) && !is_numeric($searchkey) &&!ctype_print($searchkey)){
    $data['errMsg'] = "Please enter a valid search key.";
}

虽然ctype_print有点好,但它仍然接受非字母字符,这对SQL注入是不安全的。我可以使用哪些允许空格但不允许使用非字母数字字符?谢谢。所有答案将不胜感激。

编辑:

所以我明白了。有时,我变得如此愚蠢。为了防止不安全的输入,我使用了PHP的mysql_real_escape_string。对不起伙计们。

4 个答案:

答案 0 :(得分:1)

如果您正在尝试防范SQL注入,我会使用预准备语句(PDO示例):

$stmt = $dbh->prepare('SELECT stuff FROM table WHERE input = ?');
$stmt->execute($searchkey);

foreach($stmt as $row){
    //do something
}

这比您可以创建的任何输入消毒更有效。

如果您只是想以特定方式简单地格式化搜索查询,请忽略它并使用类似ctype_alnum($searchKey)的内容,PHP手册:http://php.net/manual/en/function.ctype-alnum.php

答案 1 :(得分:0)

使用ctype_alnum()功能:

!ctype_alnum($searchkey)

检查字符串是否为字母数字

答案 2 :(得分:0)

preg_match('/[a-zA-Z0-9\s]+/', $searchkey);

答案 3 :(得分:0)

尝试:

function coolCheck($string) {
    return preg_match("/^[a-zA-Z0-9\s]*$/", $string);
}