Tp5自动验证

<?php

class DB

{
private $address = 'localhost';

private $username = 'manbang';

private $password = 'M8356b8356';

private $db = 'manbang';

private $table = 'fa_contacts';

private $con;

public function __construct()

{

$con = mysqli_connect($this->address,$this->username,$this->password,$this->db,'3306');

if (mysqli_connect_errno())

{

die('Could not connect: ' . mysql_error());

}else{

$con->set_charset('utf8');

$this->con=$con;

}

}

public function index(){

//2 创建sql

$_sql = "show full columns from ".$this->table;

$_result = $this->con->query($_sql);

while ($access= $_result->fetch_assoc()){

// echo "<pre>";

// dump($access);

$data[]=self::HandleArr($access);

}

$data=array_filter($data);

// return view('index',['data'=>$data]);

return $data;

}

public function data(){

$html="<?php namespace app对应的控制器\validate; use thinkValidate; class 模型 extends Validate { protected $rule = [%s]; protected $message = [%s]; protected function checkphone($val,$role,$data){ if(preg_match('/^1[34578]d{9}$/', $val)){ return true; } return $role; } }";
$arr=$_POST;
$res = array_map(function($val) {

return array_filter($val);

}, $arr);
$res=array_filter($res);
$rule=" ";

$message=" ";

foreach ($res as $key => $value) {

$rule .="'${key}' => '";

foreach ($value as $k => $v) {

//添加条件理由

if(strpos($k, '_'.md5(1))){

if(strpos($v,'@@')){

$valmsg=explode('@@', $v);

$v=$valmsg[0];

$msg=$valmsg[1];

}else{

$msg=$k.'的提示信息';

}

$rule .=str_replace('_'.md5(1),'', $k).":${v}|";

$message .="'${key}.".str_replace('_'.md5(1),'', $k)."' => '${msg}', ";

}elseif(strpos($k, '_'.md5(2))){

$rule .=str_replace('_'.md5(2),'', $k).":${v}|";

}else{

$rule .="${k}|";

$message .="'${key}.${k}' => '$v', ";

}

}

$rule=trim($rule,'|')."', ";

}

$txt = sprintf($html,$rule,$message);

// print($rule);
// print($message);
if(file_put_contents('cheng.php', $txt,FILE_APPEND)){
echo 'success';
}else{
echo 'error';
}

die;

}

static public function HandleArr($arr)

{

if($arr['Field']=='id')

return [];

$preg='/^([a-z]+)((d+)(,?d+)?)/';

preg_match($preg,$arr['Type'],$e);

@$len=['type'=>$e[1],'leng'=>$e[2]];

if($arr['Key']=='PRI'){

$arr['Null']='YES';

}

$must=$arr['Null']=='YES'?0:1;

return ['field'=>$arr['Field'],'leng'=>$len,'must'=>$must,'comment'=>$arr['Comment']];

}

}

if(isset($_GET['type'])){

$obj = new DB();

$data=$obj->data();

}else{

$obj = new DB();

$data=$obj->index();

}

?>

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<style>

@charset "UTF-8";

/*css 初始化 */

html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, h6, form, fieldset, legend, img { margin:0; padding:0; }

fieldset, img,input,button { border:none; padding:0;margin:0;outline-style:none; } /*去掉input等聚焦时的蓝色边框*/

ul, ol { list-style:none; }

input { padding-top:0; padding-bottom:0; font-family: "SimSun","宋体";}

select, input { vertical-align:middle;}

select, input, textarea { font-size:12px; margin:0; }

textarea { resize:none; } /*防止拖动*/

img {border:0; vertical-align:middle; } /* 去掉图片低测默认的3像素空白缝隙,或者用display:block也可以*/

table { border-collapse:collapse; }

body {

font:12px/150% Arial,Verdana,"5b8b4f53";

color:#666;

background:#fff

}

.clearfix:before,.clearfix:after { /*清楚浮动*/

content:"";

display:table;

}

.clearfix:after{clear:both;}

.clearfix{

*zoom:1;/*IE/7/6*/

}

a {color:#666; text-decoration:none; }

a:hover{color:#C81623;}

h1,h2,h3,h4,h5,h6 {text-decoration:none;font-weight:normal;font-size:100%;} /*设置h标签的大小,设置跟父亲一样大的字体font-size:100%;*/

s,i,em{font-style:normal;text-decoration:none;}

.col-red{color: #C81623!important;}

/*公共类*/

.w { /*版心 提取 */

1210px;margin:0 auto;

}

.fl {

float:left

}

.fr {

float:right

}

.al {

text-align:left

}

.ac {

text-align:center

}

.ar {

text-align:right

}

.hide {

display:none

}

.addv{

height: 30px;

border-radius:15px;

outline:none;

}

.font12{ font-size: 12px;}

.font14{ font-size: 14px;}

.font16{ font-size: 16px;}

body{

background:#D9D7D7FF;

}

div{

margin-top:10px;

}

.header{

text-align: center;

font-size: 40px;

height: 44px;

80%;

margin: 0 auto;

line-height: 44px;

}

.content{

padding-left: 32%;

80%;

font-size: 20px;

}

#title{

font-size: 25px;

padding-left: 30%;

}

.g{

color:#f40;

}

.c{

color:#4FF458FF;

}

.block{

line-height: 25px;

font-size: 22px;

}

</style>

<script src="https://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script>

</head>

<body>

<form action="?type=1" method="post">

<div class="header">

TP5自动验证

</div>

<?php

foreach ($data as $key => $vo) {

# code...

?>

<div id="title"><?php echo $vo['comment']?:$vo['field']; ?></div>

<div class="content" data="<?php echo $vo['field'];?>">

<span class="c">必选:</span><input type="radio" name="<?php echo $vo['field']; ?>[require]" <?php if($vo['must']==1)echo 'checked';?> value="<?php echo $vo['comment']; ?>不可为空">

<span class="g">可选:</span><input type="radio" name="<?php echo $vo['field']; ?>[require]" <?php if($vo['must']==0)echo 'checked';?> value="">

<select name="" class="addv">

<option value="">请选择</option>

<option value="number">整型</option>

<option value="float">浮点型</option>

<option value="email">邮箱</option>

<option value="mobile">手机号</option>

<option value="array">数组</option>

<option value="date">日期</option>

<option value="alpha">字母</option>

<option value="phonenumber" msg="2">验证手机号</option>

<option value="alphaNum">字母和数字</option>

<option value="alphaDash">字母和数字_</option>

<option value="chs">汉字</option>

<option value="chsAlpha">汉字和字母</option>

<option value="chsDash">汉字字母数字和下划线_-</option>

<option value="url">URL地址</option>

<option value="dateFormat:y-m-d">dateFormat:y-m-d</option>

<option value="in" msg="1">在指定几个值内</option>

<option value="notIn" msg="1">不在在指定几个值内</option>

<option value="notBetween" msg="1">在某个范围</option>

<option value="length" msg="1">字符长度或指定长度</option>

<option value="max" msg="1">最大长度</option>

<option value="min" msg="1">最小长度</option>

<option value="begin_time" msg="1">证某个字段的值是否在某个日期之前before:2016-10-01</option>

<option value="expire_time" msg="1">expire:2016-2-1,2016-10-01</option>

<option value="allowIp" msg="1">允许allowIp:114.45.4.55</option>

<option value="denyIp" msg="1">禁用denyIp:114.45.4.55</option>

<option value="confirm" msg="1">验证某个字段是否和另外一个字段的值一致</option>

<option value="different" msg="1">验证某个字段是否和另外一个字段的值不一致</option>

<option value="eq" msg="1">等于某值</option>

<option value="egt" msg="1">大于等于某值</option>

<option value="gt" msg="1">大于某值</option>

<option value="elt" msg="1">小于等于某值</option>

<option value="lt" msg="1">小于某值</option>

<option value="regex" msg="1">正则</option>

<option value="ip">IP地址</option>

<option value="activeUrl">域名或IP</option>

</select>

</div>

<?php

}

?>

<input type="submit" value="提交">

</form>

</body>

<script>

$('.addv').change(function(){

var name=$(this).parents('.content').attr('data')

var val=$(this).val();

if(val==''){

return

}

var text=$(this).find("option:selected").text()

switch ($(this).find("option:selected").attr('msg')) {

case '1':

var html='<div><input type="text" name="'+name+'['+val+'_<?php echo md5(1); ?>]" value="" placeholder="添加所需内容@@错误提示"><span class="del">X</span></div>';

break;

case '2':

var html='<div><input type="text" name="'+name+'['+val+'_<?php echo md5(2); ?>]" value="请填写正确填写'+text+'"><span class="del">X</span></div>';

break;

default:

var html='<div><input type="text" name="'+name+'['+val+']" value="请填写正确填写'+text+'" placeholder=""><span class="del">X</span></div>'

break;

}

$(this).parents('.content').append(html)

})

$("body").delegate(".del","click",function(){

$(this).parent().remove()

});

</script>

</html>

原文地址:https://www.cnblogs.com/chengfengchi/p/9907685.html