Page 1 sur 3

Formulaire inscription

Posté : 22 févr. 2012, 16:15
par Larker
Bonjour,

Je viens vour voir sur ce forum pour solliciter votre aide étant donné que je rencontre un problème dans mon formulaire d'inscription.

voici le code:

Code : Tout sélectionner

<?php session_start(); $BDD = mysql_connect("localhost","root",""); mysql_select_db("database"); ?> <?php // On met les variables utilisé dans le code PHP à FALSE (C'est-à-dire les désactiver pour le moment). $error = FALSE; $registerOK = FALSE; // On regarde si l'utilisateur est bien passé par le module d'inscription if(isset($_POST["register"])){ // On regarde si tout les champs sont remplis, sinon, on affiche un message à l'utilisateur. if($_POST["login"] == NULL OR $_POST["pass"] == NULL OR $_POST["pass2"] == NULL){ // On met la variable $error à TRUE pour que par la suite le navigateur sache qu'il y'a une erreur à afficher. $error = TRUE; // On écrit le message à afficher : $errorMSG = "Tout les champs doivent être remplis !"; } // Sinon, si les deux mots de passes correspondent : elseif($_POST["pass"] == $_POST["pass2"]){ // On regarde si le mot de passe et le nom de compte n'est pas le même if($_POST["login"] != $_POST["pass"]){ // Si c'est bon on regarde dans la base de donnée si le nom de compte est déjà utilisé : $sql = "SELECT login FROM users WHERE login = '".$_POST["login"]."' "; $sql = mysql_query($sql); // On compte combien de valeur à pour nom de compte celui tapé par l'utilisateur. $sql = mysql_num_rows($sql); // Si $sql est égal à 0 (c'est-à-dire qu'il n'y a pas de nom de compte avec la valeur tapé par l'utilisateur if($sql == 0){ // Si tout va bien on regarde si le mot de passe n'exède pas 60 caractères. if(strlen($_POST["pass"] < 60)){ // Si tout va bien on regarde si le nom de compte n'exède pas 60 caractères. if(strlen($_POST["login"] < 60)){ // Si le nom de compte et le mot de passe sont différent : if($_POST["login"] != $_POST["pass"]){ // Si tout ce passe correctement, on peut maintenant l'inscrire dans la base de données : $sql = "INSERT INTO users (login,pass) VALUES ('".$_POST["login"]."','".$_POST["pass"]."')"; $sql = mysql_query($sql); // Si la requête s'est bien effectué : if($sql){ // On met la variable $registerOK à TRUE pour que l'inscription soit finalisé $registerOK = TRUE; // On l'affiche un message pour le dire que l'inscription c'est bien déroulé : $registerMSG = "Inscription réussie ! Vous êtes maintenant membre du site."; // On le met des variables de session pour stocker le nom de compte et le mot de passe : $_SESSION["login"] = $_POST["login"]; $_SESSION["pass"] = $_POST["pass"]; // Comme un utilisateur est différent, on crée des variables de sessions pour "varier" l'utilisateur comme ceci : // echo $_SESSION["login"]; (bien entendu avec les balises PHP, sinons cela ne marchera pas. } // Sinon on l'affiche un message d'erreur (généralement pour vous quand vous testez vos scripts PHP) else{ $error = TRUE; $errorMSG = "Erreur dans la requête SQL<br/>".$sql."<br/>"; } } // Sinon on fais savoir à l'utilisateur qu'il a mis un nom de compte trop long. else{ $error = TRUE; $errorMSG = "Votre nom compte ne doit pas dépasser <strong>60 caractères</strong> !"; $login = NULL; $pass = $_POST["pass"]; } } } // Si le mot de passe dépasse 60 caractères on le fait savoir else{ $error = TRUE; $errorMSG = "Votre mot de passe ne doit pas dépasser <strong>60 caractères</strong> !"; $login = $_POST["login"]; $pass = NULL; } } // Sinon on affiche un message d'erreur lui disant que ce nom de compte est déjà utilisé. else{ $error = TRUE; $errorMSG = "Le nom de compte <strong>".$_POST["login"]."</strong> est déjà utilisé !"; $login = NULL; $pass = $_POST["pass"]; } } // Sinon on fais savoir à l'utilisateur qu'il doit changer le mot de passe ou le nom de compte else{ $error = TRUE; $errorMSG = "Le nom de compte et le mot de passe doivent êtres différents !"; } } // Sinon si les deux mots de passes sont différents : elseif($_POST["pass"] != $_POST["pass2"]){ $error = TRUE; $errorMSG = "Les deux mots de passes sont différents !"; $login = $_POST["login"]; $pass = NULL; } // Sinon si le nom de compte et le mot de passe ont la même valeur : elseif($_POST["login"] == $_POST["pass"]){ $error = TRUE; $errorMSG = "Le nom de compte et le mot de passe doivent être différents !"; } } ?> <?php mysql_close($BDD); ?> <?php // On affiche les erreurs : if($error == TRUE){ echo "<p align="center" style="color:red;">".$errorMSG."</p>"; } ?> <?php // Si l'inscription s'est bien déroulée on affiche le succès : if($registerOK == TRUE){ echo "<p align="center" style="color:green;"><strong>".$registerMSG."</strong></p>"; } ?> <html> <head> <title>Création d'un formulaire d'inscription en HTML</title> </head> <body> <form action="index.php" method="post"> <table> <tr> <td><label for="login"><strong>Nom de compte :</strong></label></td> <td><input type="text" name="login" id="login"/></td> </tr> <tr> <td><label for="pass"><strong>Mot de passe :</strong></label></td> <td><input type="password" name="pass" id="pass"/></td> </tr> <tr> <td><label for="pass2"><strong>Confirmez le mot de passe :</strong></label></td> <td><input type="password" name="pass2" id="pass2"/></td> </table> <input type="submit" name="register" value="S'inscrire"/> </form> </body> </html>
Et voilà ce que sa m'affiche une fois le fichier uploadé:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /public_html/index.php on line 176

Merci de bien vouloir m'aider.

Re: Formulaire inscription

Posté : 22 févr. 2012, 16:17
par xTG
Tu as des erreurs partout en fait. Tu n'échappes pas les double quotes des attributs HTML.
Ce que tu as :
if($registerOK == TRUE){ echo "<p align="center" style="color:green;"><strong>".$registerMSG."</strong></p>"; }
Ce qu'il faut :
if($registerOK == TRUE){ echo "<p align=\"center\" style=\"color:green;\"><strong>".$registerMSG."</strong></p>"; }
// ou
if($registerOK == TRUE){ echo '<p align="center" style="color:green;"><strong>'.$registerMSG.'</strong></p>'; }

Re: Formulaire inscription

Posté : 22 févr. 2012, 16:22
par Larker
ça marche pas sa met erreur requete sql mais il reste sa en haut

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /public_html/index.php:1) in /public_html/index.php on line 3

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'sgextinction6'@'node08.cluster1.local.easy-hebergement.net' (using password: NO) in /public_html/index.php on line 5

Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /public_html/index.php on line 6

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /public_html/index.php on line 6

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /public_html/index.php on line 171

Re: Formulaire inscription

Posté : 22 févr. 2012, 16:25
par Larker
c'est bon j'ai arrangé le problème il ne reste que sa

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /public_html/index.php:1) in /public_html/index.php on line 3

Re: Formulaire inscription

Posté : 22 févr. 2012, 16:46
par xTG
Tu dois avoir des caractères invisibles ou des espaces avant <?php

Re: Formulaire inscription

Posté : 22 févr. 2012, 16:51
par Larker
c'est bon merci :wink:

Re: Formulaire inscription

Posté : 23 févr. 2012, 01:32
par AB
En cas de besoin y'a ce tuto

Fais attention avec l'emploi de strlen, cette fonction n'est pas compatible utf-8 ...

Re: Formulaire inscription

Posté : 23 févr. 2012, 10:26
par Larker
Très bien, merci encore de votre aide :wink:

Re: Formulaire inscription

Posté : 23 févr. 2012, 11:17
par Larker
J'ai un nouveau problème, j'ai voulut essayer le formulaire du lien que AB m'a donné ci dessus, et je n'arrive pas à masquer les pages pour les personnes non connectés et je voudrais aussi une fois la connexion réussi que le membre soit rediriger vers le fichier index.php

Pouvez vous m'aider svp

Re: Formulaire inscription

Posté : 23 févr. 2012, 11:22
par Thibaud C
Comme dis dans le tuto :
if(!isset($_SESSION['login'])) {die('Vous devez être enregistré pour accéder à cette partie du site');}

// mon blabla de ma page pour les enregistrés


Redirection d'une page header('Location:http://monurl.fr/mondossier/index.php');exit; par exemple

Re: Formulaire inscription

Posté : 23 févr. 2012, 11:28
par Larker
Oui mais j'ai essayé de mettre le code

Code : Tout sélectionner

Code php if(!isset($_SESSION['login'])) {die('Vous devez être enregistré pour accéder à cette partie du site');} // mon blabla de ma page pour les enregistrés
et j'arrive quand meme à accéder à la page sans etre connecté

Re: Formulaire inscription

Posté : 23 févr. 2012, 11:34
par Larker
C'est bon sa marche mais quel code dois je ajouter pour que une fois ça affiché: "Vous devez être enregistré pour accéder à cette partie du site",
Le visiteur soit redirigé automatiquement sur le fichier connexion.php ?

Re: Formulaire inscription

Posté : 23 févr. 2012, 11:35
par Thibaud C
ton $_SESSION['login'] doit être présent dans n'importe quel cas alors hum :/ peux tu me montrer un exemple de ton code de la page qui s'affiche dans tous les cas ? ( à la déconnexion il faut détruire cette variable )

Re: Formulaire inscription

Posté : 23 févr. 2012, 11:37
par Larker
Non mais c'est bon sa marche, j'aurais juste besoin d'aide par rapport à ce que j'ai dit ci dessus svp

Re: Formulaire inscription

Posté : 23 févr. 2012, 11:40
par Thibaud C
if(!isset($_SESSION['login'])) { header('Location:http://monurl.fr/mondossier/index.php');exit;}

Je ne pense pas qu'on puisse être rediriger depuis un DIE, si tu veux une page de transition crée la toi même avec une redirection JS et un timer disant qu'il faut être connecté et qu'il va être redirigé dans X secondes.
( ou tu peux afficher un message d'erreur sur ton index.php )