php Laravel电子邮件重复检查作业

rqqzpn5f  于 2023-06-21  发布在  PHP
关注(0)|答案(1)|浏览(99)

register.blade.php

@if(session('duplicate_email'))
        <script>
            alert("{{ session('duplicate_email') }}");
        </script>
    @endif
    
    <script>

        $(".btn-submit").on('click', function () {
            var formData = $('.myForm').serialize();  
            var email = document.getElementById("email").value;
            
            var emailRegex = /^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/;
            if (!emailRegex.test(email)) {
                alert("유효하지 않은 이메일 형식입니다.");
            }
       
            $.ajax({
                url: '/register',  
                type: 'POST',
                data: formData,   
                success: function(response) {
                    console.log(response);  
                    window.location.href = "/login";
                },
                error: function(xhr, status, error) {
                    console.log(error); 
                }
            });              
        });   
        
    </script>

RegisterController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Models\Admin;
use App\Http\Requests\StorePostRequest;
use Illuminate\Support\Facades\Hash;

class RegisterController extends Controller
{

    public function showRegistrationForm()
    {
        return view('auth.register', [
            '1' => 1
        ]);
    }

    public function store(StorePostRequest $request)
    {
        $email = $request->input('email');
        $existingUser = Admin::where('email', $email)->first();

        if ($existingUser) {
            $request->session()->flash('duplicate_email', '이미 사용 중인 이메일입니다.');
            return redirect()->route('register');
        }

        Admin::create([
            'name' => $request->input('name'), 
            'email' => $request->input('email'),
            'password' => Hash::make($request->input('password')),
        ]);

        return view('auth.login');
    }
}

StorePostRequest.php

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StorePostRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
     */
    public function rules()
    {
        return [
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email',
            'password' => 'required|string|min:6|confirmed',
        ];
    }

    public function attributes()
    {
        return [
            'password_confirmation' => '비밀번호 확인',
        ];
    }

    public function messages()
    {
        return [
            'name.required' => '이름을 입력해주세요.',
            'email.required' => '이메일을 입력해주세요.',
            'email.email' => '유효한 이메일 주소를 입력해주세요.',
            'password.required' => '비밀번호를 입력해주세요.',
            'password.min' => '비밀번호는 최소 6자 이상이어야 합니다.',
            'password.confirmed' => ':비밀번호가 일치하지 않습니다.',

        ];
    }
}

在Laravel项目中实现会员注册功能的过程中,通过检查重复的电子邮件来打开警报弹出窗口是一项任务。
在 AJAX 将数据传递到服务器并检查RegisterController.php文件中是否有store方法值之后,duplicate_email值将通过View中的警报通知发送。
当看上面的代码时,如果有任何不正确的语法代码,请回复。

zmeyuzjn

zmeyuzjn1#

把这个换了

if ($existingUser) 
    {
     $request->session()->flash('duplicate_email', '이미 사용 중인 이메일입니다.');
     return redirect()->route('register');
    }

到这个

if ($existingUser) 
{

 return response()->json([
        'message' => 'Duplicate email'
    ], 400);

}

并在错误处理中对此进行修改

error: function(response)
{
  Alert(response.responseJSON.message); // this will show duplicate email message
}

相关问题