Bonjour à tous !
Je suis débutant en PHP. Pour m'entraîner j'ai créé ce script très simple qui permet d'enregistrer un nom et une adresse email dans une base de donnée.
Voici mon script :
J'ai créé le script de tel façon que si le nom ou le mail existent déjà, il renvoi une erreur.
Ce que j'ai pour l'instant fonctionne bien, c'est à dire que si je rentre un nom + un mail qui existe déjà il me renvoi deux erreur : une pour le nom et une pour le mail.
Ma question est : comment simplifier ce script tout en conservant l'accumulation des erreurs ?
Car pour l'instant pour que sa fonctionne comme je veux les vérifs d'existence ou non en BDD sont imbriquées, et je n'ose pas imaginer la complexité du script si je rajoute des champs.
(Bien sûr ce script n'est pas du tout sécurisé mais là n'est pas la question).
Merci d'avance !
Modifié par Remay (13 May 2009 - 02:52)
Je suis débutant en PHP. Pour m'entraîner j'ai créé ce script très simple qui permet d'enregistrer un nom et une adresse email dans une base de donnée.
Voici mon script :
<?php
$mysql = mysql_pconnect('localhost','root','motDePasse');
if(!$mysql) {
echo '<h1 class="alert">Cannot connect to database.</h1>';
exit;
}
$mysql = mysql_select_db('users');
if(!$mysql) {
echo '<h1 class="alert">Cannot select to database.</h1>';
exit;
}
?>
<h1>Register</h1>
<form method="post" action="index.php">
<fieldset>
<label for="username">Username :</label>
<input type="text" name="username" />
</fieldset>
<fieldset>
<label for="email">Email :</label>
<input type="text" name="email" />
</fieldset>
<input type="submit" name="register" value="Register" />
</form>
<?php
if (isset($_POST['register'])) {
if(!empty($_POST['username']) && !empty($_POST['email'])) {
$username = mysql_real_escape_string($_POST['username']);
$email = mysql_real_escape_string($_POST['email']);
$checkusername = mysql_query("select username from users where username = '".$username."'");
if(mysql_num_rows($checkusername) == 1) {
echo '<h1 class="alert">Sorry, <span>'.$username.'</span> is taken. Please try again.</h1>';
$checkemail = mysql_query("select email from users where email = '".$email."'");
if(mysql_num_rows($checkemail) == 1) {
echo '<h1 class="alert">Sorry, <span>'.$email.'</span> is already used. Try again.</h1>';
exit;
}
} else {
$checkemail = mysql_query("select email from users where email = '".$email."'");
if(mysql_num_rows($checkemail) == 1) {
echo '<h1 class="alert">Sorry, <span>'.$email.'</span> is already used. Try again.</h1>';
exit;
} else {
$query = mysql_query("insert into users values('', '".$username."', '".$email."')");
if($query) {
echo '<h1 class="alert">Congrats! You are registered, you can now <a href="#">login</a>!</h1>';
} else {
echo '<h1 class="alert">Sorry, but we cannot register you.</h1>';
}
}
}
} else {
echo '<h1 class="alert">Sorry, but you need to complete all the field!';
exit;
}
}
?>
J'ai créé le script de tel façon que si le nom ou le mail existent déjà, il renvoi une erreur.
Ce que j'ai pour l'instant fonctionne bien, c'est à dire que si je rentre un nom + un mail qui existe déjà il me renvoi deux erreur : une pour le nom et une pour le mail.
Ma question est : comment simplifier ce script tout en conservant l'accumulation des erreurs ?
Car pour l'instant pour que sa fonctionne comme je veux les vérifs d'existence ou non en BDD sont imbriquées, et je n'ose pas imaginer la complexité du script si je rajoute des champs.
(Bien sûr ce script n'est pas du tout sécurisé mais là n'est pas la question).
Merci d'avance !
Modifié par Remay (13 May 2009 - 02:52)