Php - Verification inscription
Bonjour,
J'ai crée sur mon site un formulaire d'inscription mais comment vérifier si le pseudo n'est pas déjà utilisé et aussi comment vérifier que les deux mots de passes correspondent ?
et ensuite pour le formulaire de connexion comment afficher une erreur si l'utilisateur a mal écrit son MDP ou son pseudo ?
voici mes codes :
traitement.php pour l'inscription :
traitementconnexion.php
J'ai crée sur mon site un formulaire d'inscription mais comment vérifier si le pseudo n'est pas déjà utilisé et aussi comment vérifier que les deux mots de passes correspondent ?
et ensuite pour le formulaire de connexion comment afficher une erreur si l'utilisateur a mal écrit son MDP ou son pseudo ?
voici mes codes :
traitement.php pour l'inscription :
<?php
if(!isset($_POST['pseudo'])) { echo ' erreur : pseudo'; }
if(!isset($_POST['pass'])) { echo ' erreur : pass'; }
if(!isset($_POST['email'])) { echo ' erreur : email'; }
else{
$pseudo=$_POST["pseudo"];
$pass=$_POST["pass"];
$email=$_POST["email"];
// Connexion au serveur MySQL
$db=mysql_connect("localhost","root","")or die("Erreur de connexion au serveur");
// Connexion à la base devillersbdd
mysql_select_db("footclic",$db)or die ("Erreur de connexion à la base footclic");
// Requête Ajout de l'utilisateur créé dans le formulaire
$MonSql="INSERT INTO membres(pseudo, pass, email) VALUES('$pseudo','$pass','$email')";
// Envoie de la requête
mysql_query($MonSql);
// Fermeture de la connexion
mysql_close($db);
// Message de confirmation
echo("Votre inscription est bien enregistrée. <br />");
header('Location: footclic.php');
}
?>
traitementconnexion.php
<?php session_start();
if(isset($_POST['connexion']) && !empty($_POST['pseudo']) && !empty($_POST['pass']))
{
// Vérification
}
else
{
include("../connexionfootclic.php");
}
// Connexion à la BDD
$bdd=mysql_connect("localhost","root","");
mysql_select_db("footclic", $bdd);
$query = "SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."' AND pass='".$_POST['pass']."' ";
$result = mysql_query($query);
if(mysql_num_rows($result))
{
$donnees = mysql_fetch_array($result);
$_SESSION['pseudo'] = $donnees['pseudo'];
$_SESSION['pass'] = $donnees['pass'];
header('location:footclic.php');
}
?>
23 réponses
-
ça fonctionne y'avais juste une erreur avec $erreur et $error ^^
sais-tu comment sécuriser mon site ? -
Voici mon fichier connexionfootclic.php :
<?php session_start(); $erreur = 0; if(isset($_POST['connexion']) && !empty($_POST['pseudo']) && !empty($_POST['pass'])) { // Connexion à la BDD $bdd=mysql_connect("localhost","root",""); mysql_select_db("footclic", $bdd); $query = mysql_query("SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."' AND pass='".$_POST['pass']."'"); if(mysql_num_rows($query) > 0) { $donnees = mysql_fetch_array($query); $_SESSION['pseudo'] = $donnees['pseudo']; $_SESSION['pass'] = $donnees['pass']; header('location:footclic.php'); } else { $erreur = 2; } } else { $erreur = 1; } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="style.css" /> <title>FootClic</title> </head> <body> <header> <div id="titre"> <img src="images/Ballon.gif" alt="" id="logo"/> <h1> FootClic </h1></br> <h3> Actus et Sondages sur le Football </h3> </div> <nav> <ul> <li><a href="footclic.php">ACCUEIL</a></li> <li><a href="Pronos.php">PRONOS</a></li> <li><a href="debatsfootclic.php">ACTUS</a></li> <li><a href="#">SONDAGES</a></li> <li><a href="inscriptionfootclic.php">INSCRIPTION</a></li> <li><a href="connexionfootclic.php">CONNEXION</a></li> </ul> </nav> </header> <div id="banniere_image"> </div> <section> <article> <form action="connexionfootclic.php" method="POST" id="formconnexion"> <ul> <label>Pseudo</label></br> <input name="pseudo" type="text"></br> <label>Mot de passe</label></br> <input name="pass" type="password"><br/> <input class="boutonConnexion" name="connexion" type="submit" value="Se connecter"> </ul> <?php if($error==1) { echo "<p style='color: red'>Veuillez remplir correctement les champs</p>"; } if($error==2) { echo "<p style='color: red'>".$_POST['pseudo']." n'existe pas !</p>"; } ?> </form> </article> </section> <footer> <div id="contact"> <p> <a href="devillersbenjamin60@gmail.com">Contactez moi</a><p> </div> <div id="imagefooter"> <img src="images/Ballon.gif"/> </div> </footer> </html> -
J'ai fais comme au dessus j'ai tout mis dans le fichier connexionfootclic.php et quand je test, il veut allez sur la page traitementconnexion.php alors que je lui demande pas
-
On va simplifier le système:
<?php session_start();
$erreur = 0;
if(isset($_POST['connexion']) && !empty($_POST['pseudo']) && !empty($_POST['pass']))
{
// Connexion à la BDD
$bdd=mysql_connect("localhost","root","");
mysql_select_db("footclic", $bdd);
$query = mysql_query("SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."' AND pass='".$_POST['pass']."'");
if(mysql_num_rows($query) > 0) {
$donnees = mysql_fetch_array($query);
$_SESSION['pseudo'] = $donnees['pseudo'];
$_SESSION['pass'] = $donnees['pass'];
header('location:footclic.php');
} else {
$erreur = 2;
}
}
else
{
$erreur = 1;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" />
<title>FootClic</title>
</head>
<body>
<header>
<div id="titre">
<img src="images/Ballon.gif" alt="" id="logo"/>
<h1> FootClic </h1></br>
<h3> Actus et Sondages sur le Football </h3>
</div>
<nav>
<ul>
<li><a href="footclic.php">ACCUEIL</a></li>
<li><a href="Pronos.php">PRONOS</a></li>
<li><a href="debatsfootclic.php">ACTUS</a></li>
<li><a href="#">SONDAGES</a></li>
<li><a href="inscriptionfootclic.php">INSCRIPTION</a></li>
<li><a href="connexionfootclic.php">CONNEXION</a></li>
</ul>
</nav>
</header>
<div id="banniere_image">
</div>
<section>
<article>
<form action="connexionfootclic.php" method="POST" id="formconnexion">
<ul>
<label>Pseudo</label></br>
<input name="pseudo" type="text"></br>
<label>Mot de passe</label></br>
<input name="pass" type="password"><br/>
<input class="boutonConnexion" name="connexion" type="submit" value="Se connecter">
</ul>
<?php
if($error==1) { echo "<p style='color: red'>Veuillez remplir correctement les champs</p>"; }
if($error==2) { echo "<p style='color: red'>".$_POST['pseudo']." n'existe pas !</p>"; }
?>
</form>
</article>
</section>
<footer>
<div id="contact">
<p>
<a href="devillersbenjamin60@gmail.com">Contactez moi</a><p>
</div>
<div id="imagefooter">
<img src="images/Ballon.gif"/>
</div>
</footer>
</html>
-
Bizarre, je ne peux pas me connecter quand je fais une erreur de mdp (normal) mais il n'y pas de messages qui s'affiche :s
-
Dans ton cas, l'idéal serait d'ajouter dans le formulaire une variable PHP erreur qui par défaut (vide) ne serait pas affiché, mais si une valeur lui est affectée, elle s'affiche.
PS: tout ceci est du bidouillage, on peut faire ça plus proprement (par la suite).
CONNEXIONFOOTCLIC.PHP (remplace juste le formulaire par celui-ci):
<form action="traitementconnexion.php" method="POST" id="formconnexion">
<ul>
<label>Pseudo</label></br>
<input name="pseudo" type="text"></br>
<label>Mot de passe</label></br>
<input name="pass" type="password"><br/>
<input class="boutonConnexion" name="connexion" type="submit" value="Se connecter">
</ul>
<?php if(isset($error) && $error==1) { echo "<p style='color: red'>Veuillez remplir correctement les champs</p>"; } ?>
</form>
---------------------------------------
TRAITEMENTCONNEXION.PHP
<?php session_start();
$erreur = 0;
if(isset($_POST['connexion']) && !empty($_POST['pseudo']) && !empty($_POST['pass']))
{
// Connexion à la BDD
$bdd=mysql_connect("localhost","root","");
mysql_select_db("footclic", $bdd);
$query = mysql_query("SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."' AND pass='".$_POST['pass']."'");
if(mysql_num_rows($query) > 0) {
$donnees = mysql_fetch_array($query);
$_SESSION['pseudo'] = $donnees['pseudo'];
$_SESSION['pass'] = $donnees['pass'];
header('location:footclic.php');
} else {
$erreur = 1;
}
}
else
{
$erreur = 1;
}
include "connexionfootclic.php";
?> -
dac merci :)
connexionfootclic.php:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="style.css" /> <title>FootClic</title> </head> <body> <header> <div id="titre"> <img src="images/Ballon.gif" alt="" id="logo"/> <h1> FootClic </h1></br> <h3> Actus et Sondages sur le Football </h3> </div> <nav> <ul> <li><a href="footclic.php">ACCUEIL</a></li> <li><a href="Pronos.php">PRONOS</a></li> <li><a href="debatsfootclic.php">ACTUS</a></li> <li><a href="#">SONDAGES</a></li> <li><a href="inscriptionfootclic.php">INSCRIPTION</a></li> <li><a href="connexionfootclic.php">CONNEXION</a></li> </ul> </nav> </header> <div id="banniere_image"> </div> <section> <article> <form action="traitementconnexion.php" method="POST" id="formconnexion"> <ul> <label>Pseudo</label></br> <input name="pseudo" type="text"></br> <label>Mot de passe</label></br> <input name="pass" type="password"><br/> <input class="boutonConnexion" name="connexion" type="submit" value="Se connecter"> </ul> </form> </article> </section> <footer> <div id="contact"> <p> <a href="devillersbenjamin60@gmail.com">Contactez moi</a><p> </div> <div id="imagefooter"> <img src="images/Ballon.gif"/> </div> </footer> </html>
et traitementconnexion.php :<?php session_start(); include "connexionfootclic.php"; if(isset($_POST['connexion']) && !empty($_POST['pseudo']) && !empty($_POST['pass'])) { // Connexion à la BDD $bdd=mysql_connect("localhost","root",""); mysql_select_db("footclic", $bdd); $query = mysql_query("SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."' AND pass='".$_POST['pass']."'"); if(mysql_num_rows($query) > 0) { $donnees = mysql_fetch_array($query); $_SESSION['pseudo'] = $donnees['pseudo']; $_SESSION['pass'] = $donnees['pass']; header('location:footclic.php'); } else { echo "Votre pseudo ou mot de passe ne correspond pas"; } } else { echo "Veuillez remplir tous les champs du formulaire de connexion"; } ?> -
Envoi le code complet de la page (formulaire + code php) pour que je puisse t'aider efficacement ;)
-
La phrase s'affiche en dessous de la page. sais-tu comment faire pour l'afficher en dessous du formulaire ?
-
ah j'ai réussi c'est bon :)
-
Je ne comprends pas :s j'ai vérifié et le fichier se trouve avec tous les autres normalement :s
-
L'erreur indique que le fichier connexionfootclic.php n'existe pas, le script ne trouve pas le fichier ;)
-
J'ai ces 2 erreurs :
Warning: include(../connexionfootclic.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\traitementconnexion.php on line 3
Warning: include() [function.include]: Failed opening '../connexionfootclic.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\traitementconnexion.php on line 3 -
Ceci devrait faire l'affaire ;)
<?php session_start();
include("../connexionfootclic.php");
if(isset($_POST['connexion']) && !empty($_POST['pseudo']) && !empty($_POST['pass']))
{
// Connexion à la BDD
$bdd=mysql_connect("localhost","root","");
mysql_select_db("footclic", $bdd);
$query = mysql_query("SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."' AND pass='".$_POST['pass']."'");
if(mysql_num_rows($query) > 0) {
$donnees = mysql_fetch_array($query);
$_SESSION['pseudo'] = $donnees['pseudo'];
$_SESSION['pass'] = $donnees['pass'];
header('location:footclic.php');
} else {
echo "Votre pseudo ou mot de passe ne correspond pas";
}
}
else
{
echo "Veuillez remplir tous les champs du formulaire de connexion";
}
?>
mysql_real_escape_string fait parti de la sécurité à appliquer, mais on verra ça ensuite. -
Merci ça fonctionne très bien :)
Mais sais-tu comment par exemple placer l'echo "votre pseudo ou mdp ne corresponds pas" en rouge et en dessous du formulaire ? stp
Pour sécuriser il ne faut pas rajouter sa mysql_real_escape_string ? -
Bonjour,
En règle général si l'utilisateur à mal écrit son pseudo ou mot de passe, c'est son problème !
Je tiens à préciser que le code n'est absolument pas sécurisé, on verra cette étape une fois les problèmes résolus ;)
En reprenant votre code :
<?php session_start();
if(isset($_POST['connexion']) && !empty($_POST['pseudo']) && !empty($_POST['pass']))
{
// Vérification
}
else
{
include("../connexionfootclic.php");
}
// Connexion à la BDD
$bdd=mysql_connect("localhost","root","");
mysql_select_db("footclic", $bdd);
$query = mysql_query("SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."' AND pass='".$_POST['pass']."'");
if(mysql_num_rows($query) > 0) {
$donnees = mysql_fetch_array($query);
$_SESSION['pseudo'] = $donnees['pseudo'];
$_SESSION['pass'] = $donnees['pass'];
header('location:footclic.php');
} else {
echo "Votre pseudo ou mot de passe ne correspond pas";
}
?>
-
Merci !!!
et est-ce que tu sais ensuite pour le formulaire de connexion comment afficher une erreur si l'utilisateur a mal écrit son MDP ou son pseudo ? stp -
Il suffit de comparer la valeur de ces deux champs :
if($_POST['pass'] == $_POST['pass_verif']) {
// OK
} else {
echo "Les mots de passe ne sont pas identiques, veuillez corriger l'erreur.";
}
-
J'ai fait sa :
<?php if($_POST['pseudo'] != "" && $_POST['pass'] != "" && $_POST['email']) { $pseudo=$_POST["pseudo"]; $pass=$_POST["pass"]; $email=$_POST["email"]; // Connexion au serveur MySQL $db=mysql_connect("localhost","root","")or die("Erreur de connexion au serveur"); // Connexion à la base devillersbdd mysql_select_db("footclic",$db)or die ("Erreur de connexion à la base footclic"); // REQUETE PSEUDO DEJA PRIS ? $test = mysql_query("SELECT id FROM membres WHERE pseudo = '".$pseudo."'"); if(mysql_num_rows($test) > 0) { echo "Un utilisateur porte déja ce nom, veuillez en choisir un autre."; exit; } // Requête Ajout de l'utilisateur créé dans le formulaire $MonSql="INSERT INTO membres(pseudo, pass, email) VALUES('$pseudo','$pass','$email')"; // Envoie de la requête mysql_query($MonSql); // Fermeture de la connexion mysql_close($db); // Message de confirmation echo("Votre inscription est bien enregistrée. <br />"); header('Location: footclic.php'); } else{ echo "Attention, au moins un des champs n'a pas été remplit !"; } ?>
et cela fonctionne correctement =)
Est-ce que tu sais comment faire pour vérifier le mot de passe avec le champ "retapez le mot de passe" ? -
Il faut tester avec !empty($champs) qui va tester le contenu du champ en question.
- 1
- 2
Suivant