Jeen

Jeen

难得糊涂

  • 财富值1120
  • 威望值190
  • 总积分3200

个人信息

  • 回复了 的回答

    $adminuser= Yii::$app->request->get('adminuser'); //有值
    $token= Yii::$app->request->get('token');
    $mytoken=$model->createToken($adminuser,$timestamp); //so排除系统因素, 值在这个方法里面应该被修改了
    。。。。
    $post['Admin']['adminuser']=$adminuser; //值变成了 null

    看了下其它回答,首先不要怀疑 get和post的混用, 这个没有任何问题。
    最开始拿到值了,后面变成null,所以你只需要找到 $adminuser 这个变量在哪个地方被篡改了 就可以解决问题了
    如上所述,建议检查 createToken 方法,看看是不是引用传参 ..

    --------------补充分割线

    反复沟通后,确认了问题在于: 提交找回密码的post请求中,没有附带相关的get参数。
    在这边补充备注一下,希望对碰到同类问题的phper有帮助。
    有兴趣的朋友推荐了解下 http协议中 get 与 post请求的差异
    就不单独回复了 😃

    噢, 那就是理解的偏差了

  • 回复了 的回答

    createToken方法贴出来

    那问题就在这边了, 因为URL里面没有 账号名, post提交时必然是取不到的。
    如果担心被恶意篡改, 用户名直接通过 \Yii::$app->getUser()->getIdentity()->adminuser 就可以拿到, 这边的adminuser 对应数据库用户表中的某个字段。
    不需要get 也不需要 post来传递这个参数,直接读取当前登录用户信息即可

  • 回复了 的回答

    createToken方法贴出来

    通过ajax 提交 也需要设置一个URL, 检查下 URL 里面是否包含了 你需要的 get参数

  • 回复了 的回答

    $adminuser= Yii::$app->request->get('adminuser'); //有值
    $token= Yii::$app->request->get('token');
    $mytoken=$model->createToken($adminuser,$timestamp); //so排除系统因素, 值在这个方法里面应该被修改了
    。。。。
    $post['Admin']['adminuser']=$adminuser; //值变成了 null

    看了下其它回答,首先不要怀疑 get和post的混用, 这个没有任何问题。
    最开始拿到值了,后面变成null,所以你只需要找到 $adminuser 这个变量在哪个地方被篡改了 就可以解决问题了
    如上所述,建议检查 createToken 方法,看看是不是引用传参 ..

    --------------补充分割线

    反复沟通后,确认了问题在于: 提交找回密码的post请求中,没有附带相关的get参数。
    在这边补充备注一下,希望对碰到同类问题的phper有帮助。
    有兴趣的朋友推荐了解下 http协议中 get 与 post请求的差异
    就不单独回复了 😃

    对于混用表示质疑?

    <form  action="/site/test?abc=def" method="post">
            input  1
           submit
    </form>
    

    ... 然后在 actionTest 里面 dump $_GET $_POST 看看
    只要处理post请求的 目标url中指定了get参数, 就可以取到, 这个还需要怀疑?
    这边题主有问题,只能说 他哪边写错了。 get post参数不能同时使用? 不可能的。 你不妨自己试试

  • 回复了 的回答

    createToken方法贴出来

    把 return $this->render('changeadminpassword',['model'=>$model]); 这个对应的视图文件 changeadminpassword 源码帖出来看看

  • 回复了 的回答

    createToken方法贴出来

    可能说的不够明白 。 你的post数据 是通过 form 提交的 还是 ajax ? 如果是 form 表单提交, 就检查下 form的action值, 为空 或者 url中包含你需要的 各个参数才行。 (可以通过浏览器查看源码,或者在视图文件里面看看)

  • 回复了 的回答

    createToken方法贴出来

    检查下表单提交页中, form 的action 对应的URL

  • 回复了 的回答

    createToken方法贴出来

    如果没有地方 会篡改这个值, 那应该是你调试打印的信息有问题 ,或者 处理post请求的URL中没有相关的get参数

  • $adminuser= Yii::$app->request->get('adminuser'); //有值
    $token= Yii::$app->request->get('token');
    $mytoken=$model->createToken($adminuser,$timestamp); //so排除系统因素, 值在这个方法里面应该被修改了
    。。。。
    $post['Admin']['adminuser']=$adminuser; //值变成了 null

    看了下其它回答,首先不要怀疑 get和post的混用, 这个没有任何问题。
    最开始拿到值了,后面变成null,所以你只需要找到 $adminuser 这个变量在哪个地方被篡改了 就可以解决问题了
    如上所述,建议检查 createToken 方法,看看是不是引用传参 ..

    --------------补充分割线

    反复沟通后,确认了问题在于: 提交找回密码的post请求中,没有附带相关的get参数。
    在这边补充备注一下,希望对碰到同类问题的phper有帮助。
    有兴趣的朋友推荐了解下 http协议中 get 与 post请求的差异
    就不单独回复了 😃

  • 从本质上来说,区别就是方法名 和 触发的顺序不同。
    如你所说的,在接收到请求并解析时,首先会实例化相关类文件
    即首先执行 __construct 中的逻辑代码
    根据框架的源码来看,第二步是执行 init 中的逻辑代码
    再到 beforeAction
    最后才是请求对应的控制器中的actionXxx 。

    当然所有的方法都是可以通过继承的方式修改,只需符合框架的逻辑执行顺序即可。 有疑问的话不妨多测试测试

总监 等级规则
3200/5000
资料完整度
50/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

9

Ta的访客

42