Vérifier si le nom d'utilisateur existe AOP
Comment pourrais-je être en mesure de vérifier de multiples facteurs, combinés au lieu de vérifier pour chacun d'eux? Donc, fondamentalement, je suis en utilisant PDO et je dois veiller à ce que les noms d'utilisateur et les e-mails sont uniques. Alors, comment dois-je procéder? J'ai vu
if ( $sthandler->rowCount() > 0 ) {
//do something here
}
Mais est-il une meilleure manière de le faire. Aussi, si il n'y a pas quelqu'un peut m'expliquer comment j'allais l'utiliser.
MODIFIER
Voici mon code de requête que les entrées dans la base de données
<?php
try {
$handler = new PDO('mysql:host=localhost;dbname=s','root', '*');
$handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
exit($e->getMessage());
}
$name = $_POST['name'];
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$password1 = $_POST['passwordconf'];
$ip = $_SERVER['REMOTE_ADDR'];
//Verifcation
if (empty($name) || empty($username) || empty($email) || empty($password) || empty($password1))
{
echo "Complete all fields";
}
//Password match
if ($password != $password1)
{
echo $passmatch = "Passwords don't match";
}
//Email validation
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo $emailvalid = "Enter a valid email";
}
//Password length
if (strlen($password) <= 6){
echo $passlength = "Choose a password longer then 6 character";
}
function userExists($db, $user)
{
$userQuery = "SELECT * FROM userinfo u WHERE u.user=:user;";
$stmt = $db->prepare($userQuery);
$stmt->execute(array(':user' => $user));
return !!$stmt->fetch(PDO::FETCH_ASSOC);
}
$user = 'userName';
$exists = userExists($db, $user);
if(exists)
{
//user exists already.
}
else
{
//user doesn't exist already, you can savely insert him.
}
if(empty($passmatch) && empty($emailvalid) && empty($passlength)) {
//Securly insert into database
$sql = 'INSERT INTO userinfo (name ,username, email, password, ip) VALUES (:name,:username,:email,:password,:ip)';
$query = $handler->prepare($sql);
$query->execute(array(
':name' => $name,
':username' => $username,
':email' => $email,
':password' => $password,
':ip' => $ip
));
}
?>
Afficher plus de votre code.
La n'est pas vraiment plus que ça. Une fois que j'ai assurez-vous que l'entrée est valide je l'insère dans la base de données. Je vais encore ajouter plus de @implacable
La n'est pas vraiment plus que ça. Une fois que j'ai assurez-vous que l'entrée est valide je l'insère dans la base de données. Je vais encore ajouter plus de @implacable
OriginalL'auteur user3574362 | 2014-04-26
Vous devez vous connecter pour publier un commentaire.
oh, je vois ce que tu veux dire, j'ai modifié ton code pour ajouter de la logique @user3574362
Hmm. Ne semble pas à l'entrée, l'entrée dans la base de données, ou l'écho des messages d'erreurs
ne l'insérez le travail avant de changer le code?
Oui. J'ai ajouté mon code complet maintenant. Juste au cas où il pourrait d'été de quelque chose que je ne peux pas montrer à l'origine du problème..
OriginalL'auteur meda
Quelque chose comme cela devrait fonctionner:
modifié la réponse.
Pas de travail....
Je me demande si vous avez même essayé de le comprendre. vous devriez avoir changé utilisateur nom d'utilisateur, vous devriez être en mesure de comprendre.
OriginalL'auteur Jonast92
Le code vous montrer a pas beaucoup de sens pour vérifier si le nom d'utilisateur et e-mail sont uniques. Vous devez définir
UNIQUE KEY
sur la base de données.Vous devriez essayer de faire
INSERT
et vérifier les erreurs si des données existent déjà. Si vous voulez le faire avec des étapes:1
vérifier si il n'y est entrée pour que le nom d'utilisateur/email2
insérer si ce n'est pas que parfois, vous pouvez obtenir 2 entrées pour 2 simultanément séances (généralement qui se passe si l'utilisateur soumettre le formulaire deux fois rapidement)OriginalL'auteur pawel7318