Jeen
$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请求的差异
就不单独回复了@ck0313 噢, 那就是理解的偏差了
createToken方法贴出来
@xiaochuanworld 那问题就在这边了, 因为URL里面没有 账号名, post提交时必然是取不到的。
如果担心被恶意篡改, 用户名直接通过 \Yii::$app->getUser()->getIdentity()->adminuser 就可以拿到, 这边的adminuser 对应数据库用户表中的某个字段。
不需要get 也不需要 post来传递这个参数,直接读取当前登录用户信息即可createToken方法贴出来
@xiaochuanworld 通过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请求的差异
就不单独回复了@ck0313 对于混用表示质疑?
<form action="/site/test?abc=def" method="post"> input 1 submit </form>
... 然后在 actionTest 里面 dump $_GET $_POST 看看
只要处理post请求的 目标url中指定了get参数, 就可以取到, 这个还需要怀疑?
这边题主有问题,只能说 他哪边写错了。 get post参数不能同时使用? 不可能的。 你不妨自己试试createToken方法贴出来
@xiaochuanworld 把 return $this->render('changeadminpassword',['model'=>$model]); 这个对应的视图文件 changeadminpassword 源码帖出来看看
createToken方法贴出来
@xiaochuanworld 可能说的不够明白 。 你的post数据 是通过 form 提交的 还是 ajax ? 如果是 form 表单提交, 就检查下 form的action值, 为空 或者 url中包含你需要的 各个参数才行。 (可以通过浏览器查看源码,或者在视图文件里面看看)
createToken方法贴出来
@xiaochuanworld 如果没有地方 会篡改这个值, 那应该是你调试打印的信息有问题 ,或者 处理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 。当然所有的方法都是可以通过继承的方式修改,只需符合框架的逻辑执行顺序即可。 有疑问的话不妨多测试测试