博客列表 >第16章 cms实战开发7(网站设置页面作业)-2019年11月22日20时00分

第16章 cms实战开发7(网站设置页面作业)-2019年11月22日20时00分

Tommy-黄天浩的博客
Tommy-黄天浩的博客原创
2019年11月28日 21:58:43760浏览

参考 网站设置,完成“系统菜单”下的其他设置功能:

SEO设置页面seo.blade.php源码:

<!DOCTYPE html>
<head>
    <title>SEO设置管理</title>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="/static/css/style.css"  media="all">
    <script type="text/javascript" src="/static/js/jquery3.4.1.js"></script>
    <script type="text/javascript" src="/static/layer/layer.js"></script>
    <script type="text/javascript" src="/static/js/phpcn.js"></script>
</head>
<body>
<div class="phpcn-title">SEO设置</div>
<form class="phpcn-form phpcn-bg-fff phpcn-p-10">
    @csrf
    <input type="hidden" name="_keys" value="site_seo">
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">网站标题:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="title" placeholder="请输入网站标题" class="phpcn-input" value="{{$values['title']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">关键词:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="keywords" placeholder="请输入关键词" class="phpcn-input" value="{{$values['keywords']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">网站描述:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="descs" placeholder="请输入描述" class="phpcn-input" value="{{$values['descs']}}">

        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <button class="phpcn-button" type='button' onclick="site_save();">保存</button>
    </div>
</form>
</div>
<script type="text/javascript">
    function site_save() {
        $.post('/admins/site/save',$('input').serialize(),function (res) {
            if(res.code>0){
                layer.alert(res.msg,{icon:2});
            }else{
                layer.msg(res.msg,{icon:1});
                setTimeout(function () {
                    window.location.reload();
                },1000);
            }
        },'json')
    }
</script>
</body>
</html>

QQ截图20191128214710.png

基本设置页面index.blade.php源码:

<!DOCTYPE html>
<head>
    <title>基本设置</title>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="/static/css/style.css"  media="all">
    <script type="text/javascript" src="/static/js/jquery3.4.1.js"></script>
    <script type="text/javascript" src="/static/layer/layer.js"></script>
    <script type="text/javascript" src="/static/js/phpcn.js"></script>
</head>
<body>
   <div class="phpcn-title">基本设置</div>
      <form class="phpcn-form phpcn-bg-fff phpcn-p-10">
         @csrf
            <input type="hidden" name="_keys" value="site_basic">
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">网站名称:</label>
            <div class="phpcn-input-inline">
               <input type="text" name="site_title" placeholder="请输入网站名称" class="phpcn-input" value="{{$values['site_title']}}">
            </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">上传LOGO图片:</label>
            <button class="phpcn-button" type='button' onclick="$('#file_upload').click();">上传LOGO图片</button>
            <img id="pre_img"  style="height: 38px;" onmouseover="show_img()" onmouseleave="hide_img()" />
            <span style="color: gray;">LOGO 为PNG/JPG/GIF 格式图片</span>
              <iframe name="frame1" id="frame1" style="display: none;"></iframe>
              <input type="hidden" name="site_logo" id="imgurl" value="">
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">网站目录:</label>
            <div class="phpcn-input-inline">
               <input type="text" name="site_folder" placeholder="请输入网站目录" class="phpcn-input" value="{{$values['site_folder']}}">
            </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">网站域名:</label>
            <div class="phpcn-input-inline">
               <input type="text" name="site_domain" placeholder="请输入网站域名" class="phpcn-input" value="{{$values['site_domain']}}">
            </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">网站开关:</label>
             <div class="phpcn-input-inline phpcn-form-switch2" >
               <input type="radio" name="site_status" value="0" title="关站" >
               <input type="radio" name="site_status" value="1" title="开站" checked="checked">
             </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">管理员邮箱:</label>
            <div class="phpcn-input-inline">
               <input type="text" name="adminer_email" placeholder="请输入管理员邮箱" class="phpcn-input" value="{{$values['adminer_email']}}">
            </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">附件状态统计:</label>
             <div class="phpcn-input-inline phpcn-form-switch2" >
{{--               <input type="radio" name="annex_status" value="0" title="关闭" {{$values['annex_status']==0?'checked':''}}>--}}
{{--               <input type="radio" name="annex_status" value="1" title="开启" {{$values['annex_status']==1 || !$values['annex_status']?'checked':''}}>--}}
                    <input type="radio" name="annex_status" value="0" title="关闭" >
                    <input type="radio" name="annex_status" value="1" title="开启" checked="checked">
             </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">引用css路径:</label>
            <div class="phpcn-input-inline">
               <input type="text" name="static_css" placeholder="请输入引用css路径" class="phpcn-input" value="{{$values['static_css']}}">
            </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">引用js路径:</label>
            <div class="phpcn-input-inline">
               <input type="text" name="static_js" placeholder="请输入js路径" class="phpcn-input" value="{{$values['static_js']}}">
            </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">引用图片资源路径:</label>
            <div class="phpcn-input-inline">
               <input type="text" name="static_image" placeholder="请输入图片资源路径" class="phpcn-input" value="{{$values['static_image']}}">
            </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">引用附件路径:</label>
            <div class="phpcn-input-inline">
               <input type="text" name="static_annex" placeholder="请输入附件路径" class="phpcn-input" value="{{$values['static_annex']}}">
            </div>
         </div>
         <div class="phpcn-form-item phpcn-bg-fff">
            <button class="phpcn-button" type='button' onclick="site_save();">保存</button>
         </div>
      </form>
      <form target="frame1" enctype="multipart/form-data" action="/admins/image/index" method="post" style="display: none;">
         @csrf
           <input type="file" name="file_upload" id="file_upload" onchange="upload_img(this)">
       </form>
   </div>
<script type="text/javascript">
        function site_save() {
            $.post('/admins/site/save',$('input').serialize(),function (res) {
                if(res.code>0){
                    layer.alert(res.msg,{icon:2});
                }else{
                    layer.msg(res.msg,{icon:1});
                    setTimeout(function () {
                        window.location.reload();
                    },1000);
                }
            },'json')
        }
</script>
</body>
</html>

QQ截图20191128214748.png

安全设置页面security.blade.php源码:

<!DOCTYPE html>
<head>
    <title>安全设置管理</title>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="/static/css/style.css"  media="all">
    <script type="text/javascript" src="/static/js/jquery3.4.1.js"></script>
    <script type="text/javascript" src="/static/layer/layer.js"></script>
    <script type="text/javascript" src="/static/js/phpcn.js"></script>
</head>
<body>
<div class="phpcn-title">安全设置</div>
<form class="phpcn-form phpcn-bg-fff phpcn-p-10">
    @csrf
    <input type="hidden" name="_keys" value="site_security">
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">后台最大登陆失败次数:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="login_faild" class="phpcn-input" value="{{$values['login_faild']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">每分钟访问次数:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="visit_time" class="phpcn-input" value="{{$values['visit_time']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">后台访问域名:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="sys_domain" class="phpcn-input" value="{{$values['sys_domain']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">错误日志预警大小:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="log_size" class="phpcn-input" value="{{$values['log_size']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">设置:</label>
        <div class="phpcn-input-inline phpcn-form-checkbox2" >
            <input type="checkbox" name="use_log" title="启用后台操作日志" value="1" {{isset($values['use_log'])?'checked':''}}>
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <button type="button" class="phpcn-button" onclick="site_save();">保存</button>
    </div>
</form>
</div>
<script type="text/javascript">
    function site_save() {
        $.post('/admins/site/save',$('input').serialize(),function (res) {
            if(res.code>0){
                layer.alert(res.msg,{icon:2});
            }else{
                layer.msg(res.msg,{icon:1});
                setTimeout(function () {
                    window.location.reload();
                },1000);
            }
        },'json')
    }
</script>
</body>
</html>

QQ截图20191128214805.png

邮箱设置页面email.blade.php源码:

<!DOCTYPE html>
<head>
    <title>Email设置</title>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
        <link rel="stylesheet" href="/static/css/style.css"  media="all">
    <script type="text/javascript" src="/static/js/jquery3.4.1.js"></script>
    <script type="text/javascript" src="/static/layer/layer.js"></script>
    <script type="text/javascript" src="/static/js/phpcn.js"></script>
    <style>
        .phpcn-form-lable{width:180px;}
        .phpcn-input-inline{margin-left: 210px;}
    </style>
</head>
<body>
<div class="phpcn-tab phpcn-bg-fff">
    <dl>
        <dd class="phpcn-tab-on">邮箱配置</dd>
        <dd>发送测试</dd>
    </dl>
</div>
<form class="phpcn-form phpcn-bg-fff phpcn-p-10">
    @csrf
    <input type="hidden" name="_keys" value="site_email">
    <div class="phpcn-tab-item">
        <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">邮件发送模式:</label>
            <div class="phpcn-input-inline phpcn-form-radio">
                <input type="radio" name="send_type" value="1" title="SMTP发送" {{$values['send_type']==1?'checked':''}}>
                <input type="radio" name="send_type" value="2" title="MAIL模块发送" {{$values['send_type']==2?'checked':''}}>
            </div>
        </div>
        <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">邮件服务器:</label>
            <div class="phpcn-input-inline">
                <input type="text" name="server_address" placeholder="请输入邮件服务器地址" class="phpcn-input" value="{{$values['server_address']}}">
            </div>
        </div>
        <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">邮件发送端口:</label>
            <div class="phpcn-input-block">
                <input type="text" name="port" placeholder="邮件发送端口" class="phpcn-input" value="{{$values['port']}}">
            </div>
        </div>
        <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">发件人地址:</label>
            <div class="phpcn-input-inline">
                <input type="text" name="from_address" placeholder="发件人地址" class="phpcn-input" value="{{$values['from_address']}}">
            </div>
        </div>
        <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">AUTH LOGIN验证:</label>
            <div class="phpcn-input-inline phpcn-form-switch2" >
                <input type="radio" name="auth_check" value="0" title="关闭" {{isset($values['auth_check']) && ($values['auth_check']==0 || !$values['auth_check'])?'checked':''}}>
                <input type="radio" name="auth_check" value="1" title="开启" {{isset($values['auth_check']) && $values['auth_check']==1?'checked':''}}>
            </div>
        </div>
        <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">用户名:</label>
            <div class="phpcn-input-inline">
                <input type="text" name="check_user" placeholder="验证用户名" class="phpcn-input" value="{{$values['check_user']}}">
            </div>
        </div>
        <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">密码:</label>
            <div class="phpcn-input-inline">
                <input type="text" name="check_pwd" placeholder="验证密码" class="phpcn-input" value="{{$values['check_pwd']}}">
            </div>
        </div>
        <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">加密方式:</label>
            <div class="phpcn-input-block phpcn-form-select">
                <select name="encryption">
                    <option value="1" {{isset($values['encryption']) && $values['encryption']==1?'selected':''}}>TLS</option>
                    <option value="2" {{isset($values['encryption']) && $values['encryption']==2?'selected':''}}>SSL</option>
                </select>
            </div>
        </div>
        <div class="phpcn-form-item phpcn-bg-fff">
            <label class="phpcn-form-lable">发件人名称:</label>
            <div class="phpcn-input-block">
                <input type="text" name="name" placeholder="发件人名称" class="phpcn-input" value="{{isset($values['name'])?$values['name']:''}}">
            </div>
        </div>
        <div class="phpcn-form-item phpcn-bg-fff">
            <button class="phpcn-button" type='button' onclick="site_save();">保存</button>
        </div>
    </div>
    <div class="phpcn-tab-item">
        <div class="phpcn-form-item phpcn-bg-fff phpcn-clear">
            <div class="phpcn-form-item phpcn-bg-fff">
                <label class="phpcn-form-lable">测试邮件标题:</label>
                <div class="phpcn-input-inline">
                    <input type="text" name="subject" placeholder="测试邮件标题" class="phpcn-input" value="{{isset($values['subject'])?$values['subject']:''}}">
                </div>
            </div>
            <div class="phpcn-form-item phpcn-bg-fff">
                <label class="phpcn-form-lable">测试邮件内容:</label>
                <div class="phpcn-input-inline">
                    <textarea placeholder="测试邮件内容" class="phpcn-textarea" name="content">{{isset($values['content'])?$values['content']:''}}</textarea>
                </div>
            </div>
            <div class="phpcn-form-item phpcn-bg-fff">
                <label class="phpcn-form-lable">收件人邮箱地址:</label>
                <div class="phpcn-input-inline">
                    <input type="text" name="to" placeholder="收件人邮箱地址" class="phpcn-input" value="{{isset($values['to'])?$values['to']:''}}">
                </div>
            </div>
            <div class="phpcn-input-inline phpcn-l phpcn-ml-30">
                <button class="phpcn-button phpcn-bg-yellow" type='button' onclick="check_email();">发送测试</button>
            </div>
        </div>
    </div>
</form>
<script type="text/javascript">
    function site_save() {
        $.post('/admins/site/save',$('input').serialize(),function (res) {
            if(res.code>0){
                layer.alert(res.msg,{icon:2});
            }else{
                layer.msg(res.msg,{icon:1});
                setTimeout(function () {
                    window.location.reload();
                },1000);
            }
        },'json')
    }
</script>
</body>
</html>

QQ截图20191128214815.png

SMS设置页面sms.blade.php源码:

<!DOCTYPE html>
<head>
    <title>SMS设置管理</title>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="/static/css/style.css"  media="all">
    <script type="text/javascript" src="/static/js/jquery3.4.1.js"></script>
    <script type="text/javascript" src="/static/layer/layer.js"></script>
    <script type="text/javascript" src="/static/js/phpcn.js"></script>
    <style>
        .phpcn-input{width:250px;}
    </style>
</head>
<body>
<div class="phpcn-title">短信通知自定义配置</div>
<form class="phpcn-form phpcn-bg-fff phpcn-p-10" i='{{$values ? count($values) : 3}}'>
    @csrf
    <input type="hidden" name="_keys" value="site_sms">
    @if($values)
        @foreach($values as $k=>$v)
            <div class="phpcn-form-item">
                <div class="phpcn-input-block">
                    <input type="text" name="key{{$loop->iteration}}[]" placeholder="请输入配置名,例:accessKeyId" class="phpcn-input" value="{{$k}}">
                </div>
                <div class="phpcn-input-block">
                    <input type="text" name="key{{$loop->iteration}}[]" placeholder="请输入值" class="phpcn-input" value="{{$v}}">
                </div>
                <div class="phpcn-input-block">
                    <button type="button" class="phpcn-button phpcn-bg-red" onclick="form_del(this);">&nbsp;&nbsp;删除 &nbsp;&nbsp;</button>
                </div>
            </div>
        @endforeach
    @else
        <div class="phpcn-form-item">
            <div class="phpcn-input-block">
                <input type="text" name="key1[]" placeholder="请输入配置名,例:accessKeyId" class="phpcn-input" value="bbbbbbbbb">
            </div>
            <div class="phpcn-input-block">
                <input type="text" name="key1[]" placeholder="请输入值" class="phpcn-input" value="222222222">
            </div>
        </div>
    @endif
    <button type="button" class="phpcn-button phpcn-bg-black phpcn-m-10" onclick="form_add(this);">&nbsp;&nbsp;添加更多 &nbsp;&nbsp;</button>

    <div class="phpcn-form-item phpcn-bg-fff">
        <button class="phpcn-button" type='button' onclick="site_save();">保存</button>
    </div>
</form>
</div>

<script type="text/javascript">
    function site_save() {
        $.post('/admins/site/save',$('input').serialize(),function (res) {
            if(res.code>0){
                layer.alert(res.msg,{icon:2});
            }else{
                layer.msg(res.msg,{icon:1});
                setTimeout(function () {
                    window.location.reload();
                },1000);
            }
        },'json')
    }

    function form_add(data){
        var i = parseInt($(data).parent('.phpcn-form').attr('i')) + 1;
        var html = '<div class="phpcn-form-item phpcn-bg-fff">';
        html += '<div class="phpcn-input-block">';
        html += '    <input type="text" placeholder="请输入配置名" name="key'+i+'[]" class="phpcn-input" value="">';
        html += '  </div>';
        html += '  <div class="phpcn-input-block">';
        html += '    <input type="text" placeholder="请输入值" name="key'+i+'[]" class="phpcn-input" value="">';
        html += '   </div>';
        html += '   <div class="phpcn-input-block">';
        html += '<button type="button" class="phpcn-button phpcn-bg-red" onclick="form_del(this);">&nbsp;&nbsp;删除 -&nbsp;&nbsp;</button>';
        html += '   </div>';
        html += '</div>';
        $(data).before(html);
        $(data).parent('.phpcn-form').attr('i',i);
    }

    function form_del(data){
        var i = parseInt($(data).parents('.phpcn-form').attr('i'));
        $(data).parents('.phpcn-form').attr('i',i-1);
        $(data).parents('.phpcn-form-item').remove();
    }
</script>
</body>
</html>

QQ截图20191128214825.png

附件设置页面annex.blade.php源码:

<!DOCTYPE html>
<head>
    <title>Annex设置管理</title>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="/static/css/style.css"  media="all">
    <script type="text/javascript" src="/static/js/jquery3.4.1.js"></script>
    <script type="text/javascript" src="/static/layer/layer.js"></script>
    <script type="text/javascript" src="/static/js/phpcn.js"></script>
    <style>
        .phpcn-form-lable{width:180px;}
        .phpcn-input-inline{margin-left:210px;}
        .phpcn-input{display:inline-block;width:30%;}
    </style>
</head>
<body>
<div class="phpcn-title">附件配置</div>
<form class="phpcn-form phpcn-bg-fff phpcn-p-10">
    @csrf
    <input type="hidden" name="_keys" value="site_annex">
    <div class="phpcn-form-item phpcn-bg-fff">
        <label class="phpcn-form-lable">GD库检测:</label>
        <div class="phpcn-input-inline">
            <button class="phpcn-button" type='button' onclick="check_gd();">检测</button>
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff">
        <label class="phpcn-form-lable">允许上传大小:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="upload_size" placeholder="请输入上传大小" class="phpcn-input" value="{{$values['upload_size']}}"><span class='phpcn-ml-30 phpcn-color-999'>单位:M</span>
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff">
        <label class="phpcn-form-lable">允许上传类型:</label>
        <div class="phpcn-input-inline phpcn-form-checkbox">
            <input type="checkbox" name="upload_type[]" title=".jpg" value=".jpg"  {{isset($values['upload_type']) && in_array('.jpg',$values['upload_type'])?'checked':''}}>
            <input type="checkbox" name="upload_type[]" title=".png" value=".png"  {{isset($values['upload_type']) && in_array('.png',$values['upload_type'])?'checked':''}}>
            <input type="checkbox" name="upload_type[]" title=".gif" value=".gif"  {{isset($values['upload_type']) && in_array('.gif',$values['upload_type'])?'checked':''}}>
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff">
        <label class="phpcn-form-lable">是否开启图片水印:</label>
        <div class="phpcn-input-inline phpcn-form-radio">
            <input type="radio" name="is_watermark" value="1" title="开启" {{isset($values['is_watermark']) && $values['is_watermark']==1?'checked':''}}>
            <input type="radio" name="is_watermark" value="0" title="关闭" {{isset($values['is_watermark']) && $values['is_watermark']==0?'checked':''}}>
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff">
        <label class="phpcn-form-lable">水印图片最大宽度:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="watermark_width" placeholder="请输入水印图片宽度" class="phpcn-input" value="{{$values['watermark_width']}}"><span class='phpcn-ml-30 phpcn-color-999'>单位:px</span>
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">水印图片最大高度:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="watermark_height" placeholder="请输入水印图片高度" class="phpcn-input" value="{{$values['watermark_height']}}"><span class='phpcn-ml-30 phpcn-color-999'>单位:px</span>
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">水印图片地址:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="watermark_url" placeholder="请输入水印图片地址" class="phpcn-input" value="{{$values['watermark_url']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff">
        <label class="phpcn-form-lable">水印透明度:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="watermark_transparent" placeholder="水印透明度" class="phpcn-input" value="{{$values['watermark_transparent']}}"><span class='phpcn-ml-30 phpcn-color-999'>范围:0-1</span>
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff">
        <label class="phpcn-form-lable">JPEG水印质量:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="watermark_quality" placeholder="水印透明度" class="phpcn-input" value="{{$values['watermark_quality']}}"><span class='phpcn-ml-30 phpcn-color-999'>范围:0-1</span>
        </div>
    </div>

    <div class="phpcn-form-item phpcn-bg-fff">
        <label class="phpcn-form-lable">水印位置:</label>
        <div class="phpcn-input-inline phpcn-form-select">
            <select name="watermark_position" lay-filter="watermark_position">
                <option value="0" {{isset($values['watermark_position']) && $values['watermark_position']==0?'selected':''}}>随机位置</option>
                <option value="1" {{isset($values['watermark_position']) && $values['watermark_position']==1?'selected':''}}>顶部居左</option>
                <option value="2" {{isset($values['watermark_position']) && $values['watermark_position']==2?'selected':''}}>中部居左</option>
                <option value="3" {{isset($values['watermark_position']) && $values['watermark_position']==3?'selected':''}}>底部居左</option>
                <option value="4" {{isset($values['watermark_position']) && $values['watermark_position']==4?'selected':''}}>顶部居右</option>
                <option value="5" {{isset($values['watermark_position']) && $values['watermark_position']==5?'selected':''}}>中部居右</option>
                <option value="6" {{isset($values['watermark_position']) && $values['watermark_position']==6?'selected':''}}>底部居右</option>
            </select>
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <button class="phpcn-button" type='button' onclick="site_save();">保存</button>
    </div>
</form>
</div>
<script type="text/javascript">
    function site_save() {
        $.post('/admins/site/save',$('input').serialize(),function (res) {
            if(res.code>0){
                layer.alert(res.msg,{icon:2});
            }else{
                layer.msg(res.msg,{icon:1});
                setTimeout(function () {
                    window.location.reload();
                },1000);
            }
        },'json')
    }

    function check_gd(){
        $.get('/admins/site/check_gd',{},function(res){
            if(res.code>0){
                return layer.msg(res.msg,{icon:2});
            }
            layer.msg(res.msg,{icon:1});
        },'json');
    }
</script>
</body>
</html>

QQ截图20191128214835.png

微信设置页面wechat.blade.php源码:

<!DOCTYPE html>
<head>
    <title>Wechat设置管理</title>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="/static/css/style.css"  media="all">
    <script type="text/javascript" src="/static/js/jquery3.4.1.js"></script>
    <script type="text/javascript" src="/static/layer/layer.js"></script>
    <script type="text/javascript" src="/static/js/phpcn.js"></script>
</head>
<body>
<div class="phpcn-title">微信公众号设置</div>
<form class="phpcn-form phpcn-bg-fff phpcn-p-10">
    @csrf
    <input type="hidden" name="_keys" value="site_wechat">
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">AppID:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="AppID" placeholder="请输入开发者ID(AppID)" class="phpcn-input" value="{{$values['AppID']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">AppSecret:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="AppSecret" placeholder="请输入开发者密码(AppSecret)" class="phpcn-input" value="{{$values['AppSecret']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">Token:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="Token" placeholder="请输入Token" class="phpcn-input" value="{{$values['Token']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">EncodingAESKey:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="EncodingAESKey" placeholder="请输入EncodingAESKey" class="phpcn-input" value="{{$values['EncodingAESKey']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <label class="phpcn-form-lable">回调URL:</label>
        <div class="phpcn-input-inline">
            <input type="text" name="url" placeholder="请输入url" class="phpcn-input" value="{{$values['url']}}">
        </div>
    </div>
    <div class="phpcn-form-item phpcn-bg-fff ">
        <button class="phpcn-button" type='button' onclick="site_save();">保存</button>
    </div>
</form>
</div>
<script type="text/javascript">
    function site_save() {
        $.post('/admins/site/save',$('input').serialize(),function (res) {
            if(res.code>0){
                layer.alert(res.msg,{icon:2});
            }else{
                layer.msg(res.msg,{icon:1});
                setTimeout(function () {
                    window.location.reload();
                },1000);
            }
        },'json')
    }
</script>
</body>
</html>

QQ截图20191128214844.png

site控制器源码:

<?php

namespace xpcms\Http\Controllers\admins;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use xpcms\Http\Controllers\Controller;

class Site extends Controller
{
    //基本设置首页
    public function index(){
        $res=DB::table('xpcms_sys_setting')->where('keys','site_basic')->item();
        $data['values']=json_decode($res['values'],true);
//        exit('ewjiofeiow');
        return view('admins/site/index',$data);
    }

    //SEO设置页面
    public function seo(){
        $res=DB::table('xpcms_sys_setting')->where('keys','site_seo')->item();
        $data['values']=(array)json_decode($res['values']);
        return view('admins/site/seo',$data);
    }

    //安全设置页面
    public function security(){
        $res=DB::table('xpcms_sys_setting')->where('keys','site_security')->item();
        $data['values']=json_decode($res['values'],true);//两种转数组方法
        return view('admins/site/security',$data);
    }

    //邮箱设置页面
    public function email(){
        $res=DB::table('xpcms_sys_setting')->where('keys','site_email')->item();
        $data['values']=json_decode($res['values'],true);
        return view('admins/site/email',$data);
    }

    //SMS设置页面
    public function sms(){
        $res=DB::table('xpcms_sys_setting')->where('keys','site_sms')->item();
        $data['values']=json_decode($res['values'],true);
        return view('admins/site/sms',$data);
    }

    //Annex设置页面
    public function annex(){
        $res=DB::table('xpcms_sys_setting')->where('keys','site_annex')->item();
        $data['values']=json_decode($res['values'],true);
        return view('admins/site/annex',$data);
    }

    //Wechat设置页面
    public function wechat(){
        $res=DB::table('xpcms_sys_setting')->where('keys','site_wechat')->item();
        $data['values']=json_decode($res['values'],true);
        return view('admins/site/wechat',$data);
    }

    //网站设置保存
    public function save(Request $req){
        $data=$req->all();
        $keys=$data['_keys'];
        unset($data['_keys']);
        unset($data['_token']);

    //判断是否是SMS
        if ($keys=='site_sms'){
            $arr = [];
            foreach($data as $v){
                if(!$v[0] || !$v[1]){
                    exit(json_encode(array('code'=>1,'msg'=>'提交失败,表单有空值')));
                }
                $arr[$v[0]] = $v[1];
            }
            $tmp=json_encode($arr);
        }else{
            $tmp=json_encode($data);
        }
        unset($data);
        $data['values']=$tmp;

    //判断是插入还是更新
        $set=DB::table('xpcms_sys_setting')->where('keys',$keys)->item();
        if ($set){
            $res=DB::table('xpcms_sys_setting')->where('keys',$keys)->update($data);
        }else{
            $res=DB::table('xpcms_sys_setting')->where('keys',$keys)->insert($data);
        }
    //插入是否成功返回到前端
        if (!$res){
            exit(json_encode(array('code'=>1,'msg'=>'设置保存失败')));
        }else{
            exit(json_encode(array('code'=>0,'msg'=>'设置保存成功')));
        }
    }

    //GD库检测
    public function check_gd(){
        //function_exists();在已经定义的函数列表(包括系统自带的函数和用户自定义的函数)中查找 function_name,存在返回true否则false
        if(function_exists('gd_info')) {
            $gd_info = @gd_info();
            $msg = '<!--<font color="red">√</font> -->GD库已开启<br/>版本为:'.$gd_info["GD Version"];
            $code = 0;
        }else{
            $msg = '<!--<font color="red">×</font> -->GD库未开启';
            $code = 1;
        }
        exit(json_encode(array('code'=>$code,'msg'=>$msg)));
    }
}

路由源码:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

/*
    Route::get('/', function () {
        return view('welcome');
    });
 */


Route::get('/admins/account/login','admins\Account@login')->name('login');
Route::post('/admins/account/dologin','admins\Account@dologin')->middleware('throttle:5,1');//登陆次数限制
Route::get('/admins/account/captcha','admins\Account@captcha');

Route::namespace('admins')->middleware(['auth','rights'])->group(function (){
//    网站后台管理
    Route::get('/admins/home/index','Home@index');
    Route::get('/admins/home/welcome','Home@welcome');

//    网站设置管理
    Route::get('/admins/site/index', 'Site@index');//基本设置
    Route::get('/admins/site/seo', 'Site@seo');//SEO设置
    Route::get('/admins/site/security', 'Site@security');//安全设置
    Route::get('/admins/site/email', 'Site@email');//邮箱设置
    Route::get('/admins/site/sms', 'Site@sms');//SMS设置
    Route::get('/admins/site/annex', 'Site@annex');//annex设置
    Route::get('/admins/site/check_gd', 'Site@check_gd');//GD库检测
    Route::get('/admins/site/wechat', 'Site@wechat');//Wechat设置
    Route::post('/admins/site/save', 'Site@save');//保存

//    管理员管理
    Route::get('/admins/admin/index','Admin@index');//主页
    Route::get('/admins/admin/add','Admin@add');//添加
    Route::post('/admins/admin/save','Admin@save');//保存
    Route::post('/admins/admin/del','Admin@del');//删除

//角色管理
    Route::get('/admins/groups/index','Groups@index');//主页
    Route::get('/admins/groups/add','Groups@add');//添加
    Route::post('/admins/groups/save','Groups@save');//保存

//后台菜单管理
    Route::get('/admins/menus/index','Menus@index');//主页
    Route::get('/admins/menus/add','Menus@add');//添加
    Route::post('/admins/menus/save','Menus@save');//保存
    Route::post('/admins/menus/del','Menus@del');//删除
});

总结:

1、最后的成品还存在如下几个问题,blade页面html的页头部分都是一样可以放到一个文件然后再去调用,以及js代码也是一样的。

2、基本设置里面的上传LOGO还没弄明白,准备看了接下来老师的文章上传图片再去做,网站开关按钮,和附件状态统计按钮有bug,点击附件开关按钮,值会变成网站开关按钮的值,并且传不到后台。

3、邮箱设置的AUTH LOGIN验证按钮和附件配置水印位置无法获取到值,应该是框架的bug。

4、在blade页面获取数组的值得时候,为了严谨,都应该加上isset()判断下是否存在,否则input的value设置为空值。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议