css 完美垂直居中解决方案兼容ie8以上等其他浏览器

css 完美垂直居中解决方案兼容ie8以上等其他浏览器

<!DOCTYPE html>
<html>
<head>
    <title>DIV水平垂直居中 </title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
        #outer {
            display:table;
            height:400px;
            #position:relative;
            overflow:hidden;
        }
        #middle {
            width:300px;
            height: 400px;;
            display:table-cell;
            vertical-align:middle;
            #position:absolute;
            #top:50%;
            background: #F0E68C;
        }
        #inner {
            #position:relative;
            #top:-50%;

        }
    </style>
</head>
<body>
<div id="outer">
    <div id="middle">
        <div id="inner">
           水平居中</br>
           水平居中</br>
           水平居中</br>
           水平居中</br>
        </div>
    </div>
</div>
</body>
</html>
<script type="text/javascript">
    //显示浏览器版本
    document.getElementById('ver').innerHTML = navigator.userAgent;
</script>

移动端的写法

<!DOCTYPE html>
<html>
<head>
    <title>DIV水平垂直居中 </title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
   
        #middle {
            width:30%;
            height: 10rem;
            display:table-cell;
            vertical-align:middle;
            background: #F0E68C;
        }
   
    </style>
</head>
<body>
    <div id="middle">
           水平居中</br>
           水平居中</br>
           水平居中</br>
           水平居中</br>
    </div>
</body>
</html>

ps:不能用绝对定位否则失效(可以加到外面一层)

swoole不断的切换前端链接方法 防止攻击

php不断的切换前端链接方法 防止攻击

swoole写法 每分钟生成一次url后缀 返回到客户端让他们更新

//定时器要写在WorkerStart这个里面哦
$ws->on(‘WorkerStart’, function ($serv, $worker_id) {
/*1分钟更新一次url 防止ddos攻击*/
swoole_timer_tick(60000, function ($timer_id) use ($serv) {
$houzhui = getRandom(8, 1);
commonupdateinfo(array(‘houzhui’ => $houzhui), ‘id’, 1, ‘urlhouzhui’);

});
});






php这里也要更新  请求的接口地址也要读取数据库更新过来来弄
<pre>
 /*读取url后缀*/
        $sql = 'select houzhui from yinjiatoupiao_urlhouzhui1 where id=1 limit 1';
        $houzhui = $this->commongetinfo($sql)[0]['houzhui'];
        if (ACTION_NAME == "toupiao") {
            $pos = strpos(ACTION_NAME, strval($houzhui));
            if (!is_numeric($pos)) {
                if (isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) == "xmlhttprequest") {
                    echo json_encode(array('success' => 0, 'msg' => '请不要用微信自带的刷新,可以点击页面上底部菜单进行刷新'));
                    exit();
                } else {
                    header("Content-type:text/html;charset=utf-8");
                    echo "<script>alert('请不要用微信自带的刷新,可以点击页面上菜单底部进行刷新');</script>";
                    exit;
                };
            } else {
                $url = rtrim(ACTION_NAME, $houzhui);
                $this->$url();
                exit();
            }
        }

ps:前端 通过ajax来控制接口地址 先获取后zhui 接口地址+后缀+ 初始化首页生成的随机字符串 而不是刷新页面来改接口 而不是用长连接返回因为连接数太多消耗资源太大

css3软键盘不盖住输入框的方法

css3软键盘不盖住输入框的方法

弹出软键盘的时候 最外面的容器高度就发生了变化 要减去软键盘高度了

var bodyheight
 bodyheight = $('body').height();
   var bodywidth = $('body').width();
    $('.p6a input').on('click', function() {
        var inputwarptop = $(this).parents('.inputwarp').position().top;
        $('.p6a').css('height', bodyheight);
        $('.p6a').css('width', bodywidth);
        $('.p6a_bg').css('height', bodyheight);
        $('.p6a_bg').css('width', bodywidth);
        $('.swiper-container').css('height', bodyheight);
        $('.swiper-container').css('width', bodywidth);
        $('.swiper-container').css('top', '-' + (inputwarptop - 100) + 'px');
        $('.swiper-slide').css('height', bodyheight);
        $('.swiper-slide').css('width', bodywidth);
        //判断是否关闭键盘
        setTimeout(function() {
            var aa = setInterval(function() {
                var actbodyheight = $('body').height();
                if (bodyheight == actbodyheight) {
                    $('.swiper-container').css('top', '0px');
                    clearInterval(aa);
                }
            }, 200)
        }, 1000)
    })

PHP关于access_token失效问题

PHP关于access_token失效问题 有时候PHP设置了缓存 明明就是没有过期 但却提示失效
这情况一般就是
1 多个appid和secrete 生成的access_token互相覆盖了 所以 这种情况必须要区分
2 看看代码是不是多个地方生成access_token 当生成新的access_token旧的就会5分钟后失效 (一般发生别的项目也在有这个 所以把你这个覆盖了)

以上情况方法都不是那么就用下面方法
目前最稳妥的方法就是用swoole写定时器 每个小时刷新一下access_token 写入数据库

PHP array_multisort实现二维数组排序

PHP array_multisort实现二维数组排序

参数中的数组被当成一个表的列并以行来进行排序 – 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

SORT_ASC – 默认,按升序排列。(A-Z)
SORT_DESC – 按降序排列。(Z-A)
随后可以指定排序的类型:

SORT_REGULAR – 默认。将每一项按常规顺序排列。
SORT_NUMERIC – 将每一项按数字顺序排列。
SORT_STRING – 将每一项按字母顺序排列


<?php 
   
    function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){  
        if(is_array($arrays)){  
            foreach ($arrays as $array){  
                if(is_array($array)){  
                    $key_arrays[] = $array[$sort_key];  
                }else{  
                    return false;  
                }  
            }  
        }else{  
            return false;  
        } 
        array_multisort($key_arrays,$sort_order,$sort_type,$arrays);  
        return $arrays;  
    } 
   
    $person =  array( 
                    array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180), 
                    array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150), 
                    array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156), 
                    array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190), 
                    array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200), 
                    array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110), 
                    array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170) 
                ); 
       
    var_dump($person); 
       
    $person = my_sort($person,'name',SORT_ASC,SORT_STRING); 
   
    var_dump($person); 
       
    $person = my_sort($person,'weight'); 
   
    var_dump($person); 
?>