0

メールアドレスやユーザー名などの情報を更新できる機能があります。電子メール フィールドには検証がありis_unique[table.email]ます。ユーザーが電子メールを変更したくないが、国やその他の情報だけを変更したい場合、is_unique はメッセージを表示します。しかし、更新ページでそれを削除すると、ユーザーは既にデータベースにある電子メール アドレスを入力する可能性があります。

この問題を解決する最も論理的な方法は何ですか?

4

3 に答える 3

2

現在のメールアドレスの値を含む非表示フィールドをフォームに追加し、送信された値が異なる場合は検証を実行できます

于 2013-02-08T21:40:09.230 に答える
2

送信された電子メールをデータベース内の電子メールと比較します。異なる場合は、電子メール検証を使用してください。そうでない場合は、しないでください。

于 2013-02-08T21:22:05.693 に答える
2

データベース クエリを使用していて、返される行数をカウントしていると仮定すると (0 はアドレスが空いていることを意味します)、ユーザーの一意の ID を渡す必要があります。

$result = $this->db->where('email_address',$email)->where('id !=',$userid)->get('users')->num_rows();

上記で行ったことは、現在のユーザー以外の誰かが要求された電子メールでサインアップしているかどうかを確認します。このユーザーが自分の国を更新するだけであれば、エラーは発生しません。

編集: これは、カスタム フォーム検証ルール __unique_email() などに含まれます。これはコントローラーにある必要があります。

于 2013-02-08T21:22:39.343 に答える