2013-02-08 2 views
0

J'ai une fonction qui vous permet de mettre à jour vos informations, comme l'email et le nom d'utilisateur. Le champ de courrier électronique a une validation is_unique[table.email]. Quand permet de dire que l'utilisateur ne veut pas changer l'email, mais seulement le pays ou d'autres informations, is_unique va afficher le message. Mais si je le supprime dans la page de mise à jour, l'utilisateur peut mettre une adresse e-mail qui est déjà dans la base de données.CodeIgniter | Comment résoudre ce problème logique?

Quelle serait la meilleure méthode logique pour résoudre ce problème?

Répondre

2

En supposant que vous utilisez une requête de base de données et en comptant le nombre de lignes, il retourne (0 signifiant que l'adresse est gratuite), vous aurez envie de passer l'identifiant unique de l'utilisateur ainsi que:

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

Ce que je juste ci-dessus va vérifier si quelqu'un d'autre que notre utilisateur actuel est inscrit avec l'e-mail demandé. Si cet utilisateur veut simplement mettre à jour son pays, il ne déclenchera pas d'erreur.

edit: Cela serait dans votre règle de validation de formulaire personnalisé __unique_email() ou quelque chose de similaire. Ce qui doit être dans le contrôleur.

2

Comparez l'e-mail envoyé à l'e-mail dans la base de données. Si c'est différent, utilisez la validation par email. Si non, ne le faites pas.

+0

quelle serait la meilleure façon de le faire dans le contrôleur? – Grigor

2

vous pouvez ajouter un champ caché dans votre formulaire contenant la valeur de l'adresse e-mail actuelle alors si la valeur soumise est différente terme la validation

Questions connexes