Page 1 sur 1

Formulaire login + mot de passe

Posté : 07 mars 2009, 16:03
par kalisson
Bonjour.

Je suis débutant en php. J'ai créé une base de donnée avec easyphp que j'ai appelé TEST1 et une table que j'ai appelé Client.
La table client contient les champs suivants : login et mdp (pour mot de passe).

J'ai créé un formulaire simple en html.
-login
-mot de passe
-confirmer le mot de passe

Je souhaiterais que mon client puisse s'inscrire en remplissant ces 3 champs et que ces données aillent dans ma base de donnée. Le système vérifie la concordance des « mots de passe »,
et il vérifie aussi que la configuration (« pseudo », « mot de passe ») n’est pas déjà utilisée, rejetant la demande sinon.

J'ai tenté de faire ceci avec différents codes php mais sans succès.... Je suis un peu désespéré.

Quelqu'un aurait - il une idée du code à utiliser svp ?

Merci d'avance

P.S : Ci-dessous le code html de mon formulaire

Code : Tout sélectionner

<form> <p>Entrer un login <input type="text" name="login" maxlength="250"> </p> <p>Entrer un Mot de passe <input type="password"name="mdp" maxlength="10" id="mdp"> </p> <p>Confirmer le mot de passe <input name="conf_pass" type="password" id="conf_pass" /> </p> <p> <input type="reset" name="Reset" id="button" value="Annuler" /> <input name="Cr&eacute;er" type="submit" value="Créer le profil" /> </p> </form>

Posté : 07 mars 2009, 16:21
par sylvaing26
Il nous faudrai aussi ta page de traitement du formulaire en php
Je ne remarque aucune balise action pour ton formulaire ni method

Posté : 07 mars 2009, 16:32
par kalisson
Je ne sais pas trop comment incorporer les balises method et acton pour l'instant. En php j'ai ca comme code :

Code : Tout sélectionner

<?php # // on teste si le visiteur a soumis le formulaire if (isset($_POST['Client']) && $_POST['Client'] == 'Client') { // on teste l'existence de nos variables. On teste également si elles ne sont pas vides if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['mdp']) && !empty($_POST['mdp'])) && (isset($_POST['conf_pass']) && !empty($_POST['conf_pass']))) { // on teste les deux mots de passe if ($_POST['mdp'] != $_POST['conf_pass']) { $erreur = 'Les 2 mots de passe sont différents.'; } else { $base = mysql_connect ('localhost', 'root', 'mdp'); mysql_select_db ('TEST1', $base); // on recherche si ce login est déjà utilisé par un autre membre $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); if ($data[0] == 0) { $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")'; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); session_start(); $_SESSION['login'] = $_POST['login']; header('Location: membre.php'); exit(); } else { $erreur = 'Un membre possède déjà ce login.'; } } } else { $erreur = 'Au moins un des champs est vide.'; } } ?>

Posté : 07 mars 2009, 17:56
par Invité
Voila un nouveau code php qui marche un peu mieux mais je n'arrive pas a rentrer les données dans la table :

Code html modifié :

Code : Tout sélectionner

br /><form method="post" action="enregistrer_client.php"> <p>Entrer un login <input type="text" name="login" maxlength="250"> </p> <p>Entrer un Mot de passe <input type="password"name="mdp" maxlength="10" id="mdp"> </p> <p>Confirmer le mot de passe <input name="conf_pass" type="password" id="conf_pass" /> </p> <p> <input type="reset" name="B1" id="button" value="Annuler" /> <input name="B2" type="submit" value="Créer le profil" /> <a href="inscription.php" target="_top"></a> </p> </form></div>

Code php modifié

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <?php function rediriger (){ echo("je veux me rediriger"); header ("location : http://localhost/default.htm"); exit; } ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php if(!mysql_connect('localhost','root')) {echo"Je ne sais pas accéder à ma base"; exit();} else { mysql_select_db('reservations'); $login=$_POST['login']; $mdp=$_POST['mdp']; $conf=$_POST['conf_pass']; if($mdp==$conf) {echo "vous allez ajouter le client suivant".$login."BRAVO"; $requeteinsert="insert controle set login='$login',mdp='$mdp'"; $valeur=mysql_query($requeteinsert); echo("<br> FELICITATIONS - VOUS ETES ENREGISTRE"); } else { echo "incohérence entre mot de passe et confirmation";exit();} } mysql_close(); ?> <p><a href="Default.html"></a></p> </body> </html>

Posté : 07 mars 2009, 23:03
par rolusseum
function rediriger (){
echo("je veux me rediriger");
header ("location : http://localhost/default.htm");
exit;
}
Pas de echo avant un header
http://www.phpfrance.com/tutoriaux/ind ... rediriger

Posté : 08 mars 2009, 12:26
par kalisson
Comme ca alors ?


Code : Tout sélectionner

function rediriger (){ header ("location : http://localhost/default.htm"); exit; }

Posté : 08 mars 2009, 18:43
par AB

Posté : 08 mars 2009, 20:38
par Invité
Merci mais je n'y arrive toujours pas.

Ma base de donné s'appelle reservations et ma table ou je veux que les données aillent s'appelle clients. Ou se trouve l'erreur dans le code ?

MErci

Code : Tout sélectionner

<?php header('Content-type: text/html; charset=UTF-8'); function Verif_magicquotes ($chaine) { if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine); return $chaine; } $message = null; if (isset($_POST['pseudo'])) { $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null; $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null; if(isset($pseudo,$pass)) { $hostname = "localhost"; $database = "clients"; $username = "root"; $password = ""; $connection = mysql_connect($hostname, $username, $password) or die(mysql_error()); mysql_select_db($database, $connection); mysql_query("SET NAMES 'utf8'"); $nom = mysql_real_escape_string($pseudo); $password = mysql_real_escape_string($pass); $requete = "SELECT count(*) as nb FROM membres WHERE pseudo = '".$nom."'"; $req_exec = mysql_query($requete) or die(mysql_error()); $resultat = mysql_fetch_assoc($req_exec); if ($resultat['nb'] == 0) { $insertion = "INSERT INTO membres(pseudo,pass,date_enregistrement) VALUES('".$nom."', '".$password."', NOW())"; $inser_exec = mysql_query($insertion) or die(mysql_error()); if ($inser_exec === true) { session_start(); $_SESSION['login'] = $pseudo; $message = 'Votre inscription est enregistrée. <a href = "#">Cliquez ici pour vous connecter</a>'; } } else { $message = 'Ce pseudo est déjà utilisé, changez-le.'; } } else { $message = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.'; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Formulaire d'inscription - tutoriel PHP France</title> <link href="ma_feuille_de_style.css" rel="stylesheet" type="text/css" /> <style type="text/css"> <!-- #page #content form p #button { text-align: center; } --> </style> </head> <body> <div id="header"> <div id="logo"> <h1>Elvis</h1><h2>Loueur de véhicules</h2> </div> <div id="menu"> <ul> <li><a href="Default.html">Accueil</a></li> <li><a href="Informations.htm">Informations</a></li> <li><a href="Services.htm">Services</a></li> <li><a href="News.htm">Nouveautés</a></li> <li><a href="Contact.htm">Contact</a></li> </ul> </div> </div> <div id="splash"> <p><em>&ldquo;Quisque dictum integer nisl risus sagittis convallis rutrum id congue and nibh.&rdquo;</em></p> </div> <div id="page"> <div id="content"> <h1>Bienvenue chez Elvis !</h1> <p>Elvis, solution de location de voitures et utilitaires pour entreprises et particulier.</p> <br /><form method="post" action="#"> <p>Entrer un login <input type="text" name="pseudo" maxlength="250"> </p> <p>Entrer un Mot de passe <input type="password"name="pass" maxlength="10" > </p> <p>Confirmer le mot de passe <input name="conf_pass" type="password" /> </p> <p> <input type="reset" name="B1" id="button" value="Annuler" /> <input name="B2" type="submit" value="Créer le profil" id="valider"/> <a href="#" target="_top"></a> </p> </form></div> <div id="sidebar"> <p> <h7>Les News en bref</h7> </p> <ul> <li> <h3>8 Mars</h3> 2 nouveaux modèles "luxe" disponibles</li> <li> <h3>1 Mars</h3> Déjà plus de 2 000 clients</li> <li> <h3>9 Février</h3> 12 nouveaux modèles disponibles</li> </ul> </div> </div> <div id="footer"> <p id="legal">Copyright &copy; 2009 Elvis. Tous droits réservés.</p> </div> </body> </html>

Posté : 08 mars 2009, 21:05
par Nico
Tu as quoi comme erreur ?

Posté : 08 mars 2009, 21:53
par AB
Comme dit Nico il faudrait que tu nous dise ce qui ne fonctionne pas.

Sinon le code du tuto est fonctionnel (si tu suis les conseils de mise en place indiqués). Essaies de le faire fonctionner dans une autre page. Si tu n'y arrive pas dis nous l'erreur que cela retourne.

Posté : 08 mars 2009, 22:05
par AB
Je viens de voir quelques erreurs : tu dis que ta base s'appelle "reservations" et dans le dernier code tu mets $database = "clients";

Ensuite les requêtes du tuto son faites pour une table nommées "membres", il faudrait remplacer par "clients" si ta table s'appelle clients. Il faudrait vérifier également que les champs correspondent.

Bref apparemment vu que tu es débutant, je te conseillerais plutôt de faire fonctionner le code du tuto et ensuite de le modifier pour l'adapter à tes besoins. Vas y doucement et prend le temps de comprendre ce que tu fais sinon tu n'y arriveras pas ou tu sera embêté pour la moindre modification.

Posté : 09 mars 2009, 19:42
par Invité
J'ai une erreur sur le password alors que je n'ai pas de mot de passe en local ??? C'est bizare non ?

Code : Tout sélectionner

Warning: mysql_connect() [function.mysql-connect]: Acc�s refus� pour l'utilisateur: 'root'@'@localhost' (mot de passe: NON) in C:\Program Files\EasyPHP 3.0\www\Elvis\xxx.php on line 36 Acc�s refus� pour l'utilisateur: 'root'@'@localhost' (mot de passe: NON)

Posté : 09 mars 2009, 22:27
par Calimero
Il faut toujours bien lire un message d'erreur, je t'ai mis les parties "bizarres" en rouge :
Warning: mysql_connect() [function.mysql-connect]: Acc�s refus� pour l'utilisateur: 'root'@'@localhost' (mot de passe: NON) in C:\Program Files\EasyPHP 3.0\www\Elvis\xxx.php on line 36
Acc�s refus� pour l'utilisateur: 'root'@'@localhost' (mot de passe: NON)

Posté : 09 mars 2009, 23:27
par kalisson
et sais tu comment résoudre mon probleme stp ?
J'ai utilise le script suivant :

Code : Tout sélectionner

<?php echo "Je désire enregistrer un nouvel utilisateur"; if(!mysql_connect('localhost','root')) {echo "Je ne sais pas accéder à ma base"; exit();} else { mysql_select_db('reservations'); $nom=$_POST['votrenom']; $code=$_POST['votremotpasse']; $confirmation=$_POST['confirmation']; if($code==$confirmation) {echo " vous allez ajouter l'internaute suivant ".$nom."BRAVO"; $requeteinsert="insert membres set nom='$nom', pass='$code'"; $valeur=mysql_query($requeteinsert); echo("<br><br> felicitations"); } else { echo "incohérence entre les mots de passe"; exit(); } } mysql_close(); ?>