• 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>

  • 相关阅读:
    [置顶] 图书推荐:SQL Server 2012 T-SQL基础 Itzik Ben-Gan
    UVA1366-----Martian Mining------DP
    动态规划——最长公共子序列(LCS)
    需求分析挑战之旅(疯狂的订餐系统)(3)——背景-需要-需求规格
    JavaScript学习笔记(四十四) 装饰器
    C中的volatile用法
    Java注解Annotation学习
    非常好!讲逻辑回归的,讲得很透彻
    RPC的学习 & gprotobuf 和 thrift的比较
    僵尸进程学习 & 进程状态列表 & Linux信号学习
  • 原文地址:https://www.cnblogs.com/chengfengchi/p/9907685.html
Copyright © 2020-2023  润新知