簡體   English   中英

如果表單輸入與使用Laravel的auth(5.3)接受的值不匹配,則阻止注冊

[英]Block registration if form input doesn't match accepted values using Laravel's auth (5.3)

我有這個reference_id變量,我想用來禁止在我的網站上注冊。 基本上,如果您輸入的reference_id與列表中的一個值(〜5-10)正確匹配,那么我想將其拒絕。 與僅在電子郵件字段中輸入“測試”的方式類似,它會阻止您並說“嘿,這不是有效的電子郵件!”。

我該把邏輯放在哪里? 我在下面粘貼了我的RegisterController,因為我認為它應該與電子郵件邏輯一起放在那里。 我可以輕松地創建一個變量並執行類似的操作

$rfid=reference_id
$list=array(list)
if ($rfid==$list) {
     allow
}
else {
     reject
}

但是,即使您可以說出這一點,我也不確定它到底將如何工作,或者在其余代碼中的位置。 任何方向將不勝感激!

RegisterController:

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6|confirmed',
        'reference_id' => 'max:255',

    ]);
}

/**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return User
 */
protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
        'reference_id' => $data['reference_id'],
    ]);
}

in驗證規則中使用。 該規則的優點是它與源無關且與格式無關:

$allowedValues = implode(',', config('my.allowedKeys'));
// Or:
$allowedValues = implode(',', Reference::pluck('id')->toArray());
....
'reference_id' => 'max:255|in:'.$allowedValues,

如果需要,還可以為此規則添加自定義驗證消息

如果表中存在reference_id,則可以使用

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6|confirmed',
        'reference_id' => 'max:255|exists:table_name',

    ]);
}

如果有數組

使用in_array:$array_name進行驗證

要正確了解可用的Laravel驗證規則,請參閱: https ://laravel.com/docs/5.3/validation#rule-exists

希望對您有幫助。

如有任何查詢,請通知我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM