PHP 表单验证函数

标签 php regex validation function

我目前正在编写一些 PHP 表单验证(我已经验证了客户端)并且有一些重复代码,我认为它们可以在一个不错的小 PHP 函数中运行良好。但是我无法让它工作。我确定这只是语法问题,但我无法确定。

感谢任何帮助。

//Validate phone number field to ensure 8 digits, no spaces.
if(0 === preg_match("/^[0-9]{8}$/",$_POST['Phone']) {
    $errors['Phone'] = "Incorrect format for 'Phone'";
}

if(!$errors) {
    //Do some stuff here....
}

我发现我写了很多验证代码,我可以通过创建一个函数来节省一些时间和一些代码行。

//Validate Function
function validate($regex,$index,$message) {
    if(0 === preg_match($regex,$_POST[$index])) {
        $errors[$index] = $message;
    }

然后这样调用它....

validate("/^[0-9]{8}$/","Phone","Incorrect format for Phone");

谁能看出为什么这行不通?

请注意,我在处理此问题时禁用了客户端验证以尝试触发错误,因此我为“电话”发送的值无效。

最佳答案

让我们尝试一些更深思熟虑的事情。

你想像这样使用它:

if (validate(...)) {
    // It's ok
}

那么我建议这样做:

function validate($regex, $index, $message, &$errors) {     
    if (isset($_POST[$index]) && 1 === preg_match($regex, $_POST[$index])) {
        return true;            
    }
    $errors[$index] = $message; 
    return false;        
}

现在您有机会在出现错误时转储验证,或者您可以将这些传入的 $errors 链接起来并用验证错误填充它。没有使用全局变量。

关于PHP 表单验证函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13945836/

相关文章:

php - Laravel 组管理路由

php - 如何在 PhalconPHP 中运行 RAW SQL 查询

php - 如何使用 html 表单的输入根据显示的结果更新 sql 表中的字段,这些结果本身就是 sql 查询的输出?

javascript - 使用正则表达式 (regex) 替换 jQuery/JavaScript 中的选定文本

sql - 正则表达式获取除范围内的所有数字

使用带过滤的公式的 Excel 数据验证列表

php - 从YouTube网址获取视频ID的模式

javascript - 如何编写正则表达式来匹配 Javascript 对象名称?

validation - 如何在 Google 表格中执行动态/相关下拉菜单?

asp.net - asp.net 中的人体高度、体重验证