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