先贴一段前端的代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="_token" content="{{ csrf_token()}}"/> <link rel="stylesheet" href="{{asset('resources/views/admin/style/css/ch-ui.admin.css')}}"> <link rel="stylesheet" href="{{asset('resources/views/admin/style/font/css/font-awesome.min.css')}}"> <script type="text/javascript" src="{{asset('resources/views/admin/style/js/jquery.js')}}"></script> <script type="text/javascript" src="{{asset('resources/views/admin/style/js/ch-ui.admin.js')}}"></script> <script type="text/javascript"> $(document).ready(function () { /* $("input[name='sub']").click(function () { var opass = $("input[name='password_o']").val(); var pass = $("input[name='password_c']").val(); var pass1 = $("input[name='password']").val(); if (pass != pass1) { alert('两次输入的新密码不一致'); } $.ajax({ url: "{{url('admin/newpass')}}",//互交的地址(控制器) type: "POST",//专递的方法 data: { user_pass: opass, user_newpass: pass, },//互交的数据(post 上传的数据 数据名为user_name 内容是my_data) dataType: "json",//选择专递文件类型 headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }, error: function (XMLHttpRequest, textStatus, errorThrown) {//抛出错误信息 alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); }, success: function (data, status) {//如果调用php成功 if (data == 1) { alert('原密码错误'); } if (data == 2) { alert('跟新失败'); } if (data == 7) { alert('修改成功'); } else{ alert(data); } } }) });*/ /*$("input[name='password_c']").focusout(function () { var pass = $("input[name='password_c']").val(); var pass1 = $("input[name='password']").val(); if (pass != pass1) { $("span[name='tishi']").text('两次输入密码不一致'); } else { $("span[name='tishi']").css('color', 'green'); $("span[name='tishi']").text('正确'); } })*/ }) </script> </head> <body> <!--面包屑导航 开始--> <div class="crumb_warp"> <!--<i class="fa fa-bell"></i> 欢迎使用登陆网站后台,建站的首选工具。--> <i class="fa fa-home"></i> <a href="#">首页</a> » 修改密码 </div> <!--面包屑导航 结束--> <!--结果集标题与导航组件 开始--> <div class="result_wrap"> <div class="result_title"> <h3>修改密码</h3> </div> </div> <!--结果集标题与导航组件 结束--> <div class="result_wrap"> <form method="post" action="{{url('admin/newpass')}}"> {{csrf_field()}} <table class="add_tab"> <tbody> @if(count($errors)>0) @foreach($errors->all() as $error){{--得到后端传过来的错误值--}} {{$error}} @endforeach @endif <tr> <th width="120"><i class="require">*</i>原密码:</th> <td> <input type="password" name="password_o"> </i>请输入原始密码</span> </td> </tr> <tr> <th><i class="require">*</i>新密码:</th> <td> <input type="password" name="password"> </i>新密码6-20位</span> </td> </tr> <tr> <th><i class="require">*</i>确认密码:</th> <td> <input type="password" name="password_confirmation"> </i>再次输入密码</span><span name="tishi" style="color:red"></span> </td> </tr> <tr> <th></th> <td> <input type="submit" value="提交" > <input type="button" class="back" οnclick="history.go(-1)" value="返回"> </td> </tr> </tbody> </table> </form> </div> </body> </html>
中间的一段jquery可以忽略,那是我用来测试ajax的当然是没有成功。
接下来就是后端代码:
<?php namespace App\Http\Controllers\Admin; use App\Http\Model\User; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Redis; class PassController extends ComController { public function Show() { return view('admin.pass'); } public function Change() { if ($Input = Input::all()) {//验证post $rules = [ 'password_o' => 'required|between:6,20', 'password' => 'required|between:6,20|confirmed', 'password_confirmation' => 'required|between:6,20', ];//定义规则 $msg = [ 'password_o.required' => '原密码不能为空', 'password_o.between' => '原密码位数为6-20位', 'password.required' => '新密码不能为空', 'password.between' => '新密码位数为6-20位', 'password_confirmation.required' => '确认密码不能为空', 'password_confirmation.between' => '确认密码位数为6-20位', 'password.confirmed' => '两次密码输入不一致', ];//定义返回错误显示 $validatoer = \Illuminate\Support\Facades\Validator::make($Input, $rules, $msg);//这是一个坑 //需要注意的是又很多的Validator类而只有现在的这个类是有make方法的。!!! if ($validatoer->passes()) {//通过验证为true反之为false $usersession = json_decode(Redis::get(session_id()));//取得redis中的身份信息穿化成php数组 $user=User::where('user_id', $usersession->user_id)->first();//这里也需要注意调用数组中的身份数组中的user_id时用的是对象方法不然会报错 //$user=User::where('user_id', $usersession-['user_id'])->first();可以试一下!!! if ($user != null) {//这里就不多说了和登录一样比对密码然后保存需要修改的密码 if (Crypt::decrypt($user->user_pass) != $Input['password']) { $user->user_pass = Crypt::encrypt($Input['password']); if ($user->update()) { return redirect('admin/index'); } } else { return back()->with('errors', '原密码错误'); } } } else { return back()->withErrors($validatoer);//这是取到前面Validatoer类中的msg传到前端的方法。 } } } // }
坑我都注释了,希望大家可以从其中得到收益和启发。