Laravel学习7修改密码

先贴一段前端的代码:


<!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> &raquo; 修改密码
</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传到前端的方法。
            }


        }
    }
    //
}

坑我都注释了,希望大家可以从其中得到收益和启发。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值