最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php javascript表单验证实现方法
时间:2010-11-18 编辑:简简单单 来源:一聚教程网
body { padding: 10px 0px 0px 0px; }
td
{
padding: 2px 5px;
text-align: left;
}
h4 { margin: 0px; }
input.editfield, select.editfield, textarea.editfield { width: 18em; }
把下面代码保存成php文件
$form_validation_alerts = array(
'>' => "%%name%% should be more than %%num%%!",
'<' => "%%name%% should be less than %%num%%!",
'>=' => "%%name%% should be more or equal to %%num%%!",
'<=' => "%%name%% should be less or equal to %%num%%!",
'ch' => "%%name%% contains invalid characters!",
'chnum_' => "%%name%% contains invalid characters!",
'cnt >' => "you should select more than %%num%% %%name%%!",
'cnt <' => "you should select less than %%num%% %%name%%!",
'cnt >=' => "you should select at least %%num%% %%name%%!",
'cnt <=' => "you should select at most %%num%% %%name%%!",
'cnt ==' => "you should select %%num%% %%name%%!",
'date' => "please, enter a valid %%name%%!",
'email' => "please, enter a valid e-mail address!",
'empty' => "please, enter %%name%%!",
'len >' => "%%name%% should contain more than %%num%% characters!",
'len <' => "%%name%% should contain less than %%num%% characters!",
'len >=' => "%%name%% should contain at least %%num%% characters!",
'len <=' => "%%name%% should contain at most %%num%% characters!",
'len ==' => "%%name%% should contain %%num%% characters!",
'num' => "%%name%% is not a valid number!",
'radio' => "please, select %%name%%!",
'select' => "please, select %%name%%!",
'terms' => "you must agree to the terms first!");
function form_validation_alert($type, $name, $num)
{
$name = preg_replace('/^w*(w*)w*$/', "$1", $name);
$msg = $globals['form_validation_alerts'][$type];
$msg = str_replace('%%name%%', strtoupper(substr($name, 0, 1)) . strtolower(substr($name, 1, strlen($name)-1)), $msg);
$msg = str_replace('%%name%%', strtolower($name), $msg);
$msg = str_replace('%%num%%', $num, $msg);
return $msg;
}
// ***** isnan *****************************************************************
function form_validation_isnan($value)
{
return (string)(integer)$value !== (string)$value;
}
// ***** validate **************************************************************
function form_validation_validate($data, $rules)
{
$rules = preg_replace('/^(s*)(s.*)/', "$2", $rules);
$rules = preg_split('/s*;s*/', $rules);
foreach ($rules as $i => $rule)
{
$rule = preg_split('/s*:s*/', $rule);
if (count($rule) < 2) continue;
$rule[0] = preg_split('/s+/', $rule[0]);
$rule[1] = preg_split('/s+/', $rule[1]);
foreach ($rule[0] as $j => $name)
{
$name = str_replace("[]", "", $name);
if (!in_array($rule[1][0], array('cnt', 'radio', 'terms')))
if (!isset($data[$name])) return 'invalid form!';
if (!in_array($rule[1][0], array('cnt')))
if ( isset($data[$name]) && is_array($data[$name])) return 'invalid form!';
switch ($rule[1][0])
{
// ***** comparison *****
case '>':
if (form_validation_isnan($data[$name]))
return form_validation_alert('num', $name, 0);
if ($data[$name] <= $rule[1][1])
return form_validation_alert('>', $name, $rule[1][1]);
break;
case '<':
if (form_validation_isnan($data[$name]))
return form_validation_alert('num', $name, 0);
if ($data[$name] >= $rule[1][1])
return form_validation_alert('<', $name, $rule[1][1]);
break;
case '>=':
if (form_validation_isnan($data[$name]))
return form_validation_alert('num', $name, 0);
if ($data[$name] < $rule[1][1])
return form_validation_alert('>=', $name, $rule[1][1]);
break;
case '<=':
if (form_validation_isnan($data[$name]))
return form_validation_alert('num', $name, 0);
if ($data[$name] > $rule[1][1])
return form_validation_alert('<=', $name, $rule[1][1]);
break;
// ***** ch *****
case 'ch':
if (!preg_match('/^([a-za-z]+)$/', $data[$name]))
return form_validation_alert('ch', $name, 0);
break;
// ***** chnum_ *****
case 'chnum_':
if (!preg_match('/^(w+)$/', $data[$name]))
return form_validation_alert('chnum_', $name, 0);
break;
// ***** cnt *****
case 'cnt':
$cnt = isset($data[$name]) ? (is_array($data[$name]) ? count($data[$name]) : 1) : 0;
if ($rule[1][1] == '>' && $cnt <= $rule[1][2])
return form_validation_alert('cnt >', $name, $rule[1][2]);
if ($rule[1][1] == '<' && $cnt >= $rule[1][2])
return form_validation_alert('cnt <', $name, $rule[1][2]);
if ($rule[1][1] == '>=' && $cnt < $rule[1][2])
return form_validation_alert('cnt >=', $name, $rule[1][2]);
if ($rule[1][1] == '<=' && $cnt > $rule[1][2])
return form_validation_alert('cnt <=', $name, $rule[1][2]);
break;
// ***** email *****
case 'email':
if (!preg_match('/^(w+.)*(w+)@(w+.)+(w+)$/', $data[$name]))
return form_validation_alert('email', $name, 0);
break;
// ***** empty *****
case 'empty':
if ($data[$name] == '')
return form_validation_alert('empty', $name, 0);
break;
// ***** len *****
case 'len':
if ($rule[1][1] == '>' && strlen($data[$name]) <= $rule[1][2])
return form_validation_alert('len >', $name, $rule[1][2]);
if ($rule[1][1] == '<' && strlen($data[$name]) >= $rule[1][2])
return form_validation_alert('len <', $name, $rule[1][2]);
if ($rule[1][1] == '>=' && strlen($data[$name]) < $rule[1][2])
return form_validation_alert('len >=', $name, $rule[1][2]);
if ($rule[1][1] == '<=' && strlen($data[$name]) > $rule[1][2])
return form_validation_alert('len <=', $name, $rule[1][2]);
break;
// ***** num *****
case 'num':
if (form_validation_isnan($data[$name]))
return form_validation_alert('num', $name, 0);
break;
// ***** radio *****
case 'radio':
if (!isset($data[$name]))
return form_validation_alert('radio', $name, 0);
break;
// ***** select *****
case 'select':
if (!isset($data[$name]))
return form_validation_alert('select', $name, 0);
break;
// ***** terms *****
case 'terms':
if (!isset($data[$name]))
return form_validation_alert('terms', $name, 0);
break;
}
}
// ***** date *****
if ($rule[1][0] == 'date')
{
$year = $rule[0][0];
$month = $rule[0][1];
$day = $rule[0][2];
if (form_validation_isnan($data[$year ]))
return form_validation_alert('date', $year, 0);
if (form_validation_isnan($data[$month]) || $data[$month] < 0 || $data[$month] > 12)
return form_validation_alert('date', $month, 0);
if (form_validation_isnan($data[$day ]) || $data[$day ] < 0 || $data[$day ] > 31 || !checkdate($data[$month], $data[$day], $data[$year]))
return form_validation_alert('date', $day, 0);
}
}
return true;
}
相关文章
- PHP导出数据超时的优化建议解读 10-31
- PHP之mysql位运算解析 10-31
- Laravel实现登录跳转功能解析 10-31
- php双向队列解读 10-31
- Laravel异常上下文解决教程 10-24
- php数组查询元素位置方法介绍 10-24