Attribution d'un rang sur formulaire

Ika Pro Messages postés 161 Statut Membre -  
 ReDLoG -
Bonjour,


J'aimerais savoir comment faire pour qu'un utilisateur de mon site puisse avoir un rang en fonction d'un mot entré.

Voici mon code :

<?php
include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="default/style.css" rel="stylesheet" title="Style" />
<title>Inscription</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="images/logo.png" alt="Espace Membre" /></a>
</div>
<?php
//On verifie que le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['age']) and $_POST['username']!='')
{
//On enleve lechappement si get_magic_quotes_gpc est active
if(get_magic_quotes_gpc())
{
$_POST['username'] = stripslashes($_POST['username']);
$_POST['password'] = stripslashes($_POST['password']);
$_POST['passverif'] = stripslashes($_POST['passverif']);
$_POST['email'] = stripslashes($_POST['email']);
$_POST['age'] = stripslashes($_POST['age']);
}
//On verifie si le mot de passe et celui de la verification sont identiques
if($_POST['password']==$_POST['passverif'])
{
//On verifie si le mot de passe a 6 caracteres ou plus
if(strlen($_POST['password'])>=6)
{
//On verifie si lemail est valide
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
{
//On echape les variables pour pouvoir les mettre dans une requette SQL
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$age = mysql_real_escape_string($_POST['age']);
$magique = mysql_real_escape_string($_POST['magique']);
$ip = $_SERVER["REMOTE_ADDR"];
//On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
if($dn==0)
//on vérifie que le mot magique est bien ecrit

{
//On recupere le nombre dutilisateurs pour donner un identifiant a lutilisateur actuel
$dn2 = mysql_num_rows(mysql_query('select id from users'));
$id = $dn2+1;
$password = isset($_POST['password']) ? trim(md5($_POST['password'])) : '';
//On enregistre les informations dans la base de donnee
if(mysql_query('insert into users(id, username, password, email, age, magique, signup_date, ip) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$age.'", "'.$magique.'", "'.time().'", "'.$ip.'")'))
{
//Si ca a fonctionne, on naffiche pas le formulaire
$form = false; ?>
<div class="message">Vous avez bien été inscrit. Vous pouvez dorénavant vous connecter.<br />
<a href="connexion.php">Se connecter</a></div>
<meta http-equiv="refresh" content="3;url=connexion.php" />


<?php
}
else
{
//Sinon on dit quil y a eu une erreur
$form = true;
$message = 'Une erreur est survenue lors de l\'inscription.';
}
}
else
{
//Sinon, on dit que le pseudo voulu est deja pris
$form = true;
$message = 'Un autre utilisateur utilise déjà le nom d\'utilisateur que vous désirez utiliser.';
}
}
else
{
//Sinon, on dit que lemail nest pas valide
$form = true;
$message = 'L\'email que vous avez entré n\'est pas valide.';
}
}
else
{
//Sinon, on dit que le mot de passe nest pas assez long
$form = true;
$message = 'Le mot de passe que vous avez entré contien moins de 6 caractères.';
}
}
else
{
//Sinon, on dit que les mots de passes ne sont pas identiques
$form = true;
$message = 'Les mots de passe que vous avez entré ne sont pas identiques.';
}
}
else
{
$form = true;
}
if($form)
{
//On affiche un message sil y a lieu
if(isset($message))
{
echo '<div class="message">'.$message.'</div>';
}
//On affiche le formulaire
?>
<div class="content">
<form action="sign_up.php" method="post">
Veuillez remplir ce formulaire pour vous inscrire:<br />
<div class="center">
<label for="username">Nom d'utilisateur</label><input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="password">Mot de passe<span class="small">(6 caractères min.)</span></label><input type="password" name="password" /><br />
<label for="passverif">Mot de passe<span class="small">(vérification)</span></label><input type="password" name="passverif" /><br />
<label for="email">Email(ne sera pas visible)</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="age">Ton age<span class="small"></span></label><input type="text" name="age" value="<?php if(isset($_POST['age'])){echo htmlentities($_POST['age'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="magique">Mot magique (si membre de l'equipe)<input type="text" name="magique" value="<?php if(isset($_POST['magique'])){echo htmlentities($_POST['magique'], ENT_QUOTES, 'UTS-8');} ?>" /></br>
<input type="submit" value="Envoyer" />
</div>
</form>
</div>
<?php
}
?>

</body>
</html>

Je m'explique mieux :

Je demande d'entrer un mot dans le champ : "magique" si ce mot est "rien", par exemple, il à le rang "utilisateur", s'il à le mot " capitaine", il à le rang "capitaine", mais que se soit automatique.

Comment faire ?

PS : le champ "rang" est créé dans la table de ma base de donnée.

4 réponses

astuces72 Messages postés 8349 Date d'inscription   Statut Membre Dernière intervention   1 641
 
slt

je vois pas bien ou est ton problème si ça enregistre le mot qu'il faut dans ta base ?
c'est après peut être ?
et bien quand il se connecte, il faut contrôler ce "mot magique" pour savoir quel rang il a !
0
Ika Pro Messages postés 161 Statut Membre 4
 
c'est justement mon souci.

Il y à le formulaire pour mettre le mot magique, dans ma base il y à le champs "magique" et " rang" mais je n'arrive pas à faire ce qui suit :

SI "aucun" est écrit, alors le rang est utilisateur
SI "capitaine" est écrit alors le rang est capitaine.

Tu aurais un tuto ou un code à me filer ?
0
ReDLoG
 
Bonsoir,

A l'endroit voulu de ton script tu ajoutes :
if($_POST['magique'] == 'capitaine') { 
 $rang = 'capitaine'; 
} else { 
 $rang = 'utilisateur'; 
}

Et tu remplaces la variable $magique par la variable $rang dans la requête d'insertion (INSERT) :
//On enregistre les informations dans la base de donnee 
if(mysql_query('INSERT INTO users(id, username, password, email, age, magique, signup_date, ip) VALUES ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$age.'", "'.$rang.'", "'.time().'", "'.$ip.'")')) {

Par la suite, tu pourras toujours connaître le rang suite à une requête SELECT et en mettant la valeur du rang en session :
$_SESSION['rang'] = $data['magique'];


Cdlt.
0
astuces72 Messages postés 8349 Date d'inscription   Statut Membre Dernière intervention   1 641
 
hello

il faut que tu utilises les sessions.
https://www.php.net/manual/fr/session.examples.basic.php
0
Ika Pro Messages postés 161 Statut Membre 4
 
j'ai les sessions sur mon site, avec un formulaire qui demande le mot magique qui permettra de pouvoir attribuer un rang.

Mais je n'arrive pas à faire.
0