PHP Laravel登录注册功能错误提示不显示问题排查
问题原因及修复方案
核心原因
你编写的登录、注册Blade视图中没有对Laravel返回的错误信息做渲染逻辑,控制器中withErrors()方法会将错误信息存入Session的全局$errors变量中,页面没有调用该变量输出错误,自然没有提示展示。
具体修复步骤
1. 修复注册页面错误提示
打开registration.blade.php,找到number字段对应的代码段,在输入框下方补充错误输出逻辑:
<input class="text-input-full-width" type="text" placeholder="Enter your number" name="number" required> <!-- 新增错误提示 --> @error('number') <div style="color: red; font-size: 14px; margin: 4px 0;">{{ $message }}</div> @enderror <br>
如果需要展示其他字段的验证错误,同理在对应字段下方补充对应@error('字段名')的逻辑即可。
2. 修复登录页面错误提示
打开login.blade.php,找到number字段对应的代码段,同样补充错误输出逻辑:
<input class="text-input" type="text" placeholder="Enter your number" name="number"> <!-- 新增错误提示 --> @error('number') <div style="color: red; font-size: 14px; margin: 4px 0;">{{ $message }}</div> @enderror
其他需要排查的潜在问题
- 确认你的登录、注册路由都定义在
routes/web.php文件中,或者手动绑定了web中间件:Laravel的Session、$errors全局变量共享都依赖web中间件组,缺少该中间件会导致错误信息无法传递到视图。 - 修正注册逻辑的密码加密逻辑:你当前
RegisterController创建用户时直接存储明文密码,Auth::attempt()方法会默认对传入密码做哈希校验,会导致永远登录失败。修改User::create中的password赋值逻辑:
先在控制器顶部引入哈希类:
再修改密码字段赋值:use Illuminate\Support\Facades\Hash;'password' => Hash::make($request['password']), - 补充后端验证规则:当前注册逻辑只验证了number和password两个字段必填,其他前端标记必填的字段没有后端校验,建议补全验证规则避免数据库写入异常。
内容的提问来源于stack exchange,提问作者Дмитрий Гвоздиенко
相关产品推荐
相关产品推荐

