Aller au contenu

traitement de forumlaire en PHP


sicilragazzo

Messages recommandés

COucou !

Je m'initie au PHP. Je souhaite pouvoir creer un systeme de comptes utilisateurs sur mon site web.

J'ai créé une base de donnée avec easyPHP 2.0 (Test) et une table (Comptes_Utilisateurs)

Apres avoir créer le formulaire de saisie j'ai realisé le script suivant pour ajouter les info sur ma table.

Les enregistrements ne se font jamais et je ne trouve pas l'erreur !

Pouvez vous m'aider ????

voici le script en question :

<?

mysql_connect("localhost", "root", "");

mysql_select_db("Test");

$result = mysql_query("

INSERT INTO Comptes_Utilisateurs(

Nom_Utilisateur

, Mot_de_Passe

, Adresse_Email

, Date_Inscription

, Clef_Activation

)

VALUES(

'" . $_POST["TB_Nom_Utilisateur"] . "'

, '" . md5($_POST["TB_Mot_de_Passe"]) . "'

, '" . $_POST["TB_Adresse_Email"] . "'

, '" . time() . "'

, '" . $clef_activation . "'

?>

Lien vers le commentaire
Partager sur d’autres sites

<?

mysql_connect("localhost", "root", "") or mysql_error("erreur de connexion au serveur");

mysql_select_db("Test") or mysql_error("erreur de connexion à la base");

$result = mysql_query("

INSERT INTO Comptes_Utilisateurs(

Nom_Utilisateur

, Mot_de_Passe

, Adresse_Email

, Date_Inscription

, Clef_Activation

)

VALUES(

'" . $_POST["TB_Nom_Utilisateur"] . "'

, '" . md5($_POST["TB_Mot_de_Passe"]) . "'

, '" . $_POST["TB_Adresse_Email"] . "'

, '" . time() . "'

, '" . $clef_activation . "') or mysql_error("probleme avec l'envoi des données");

?>

déjà ça je pense (mais je suis pas sur je suis nouveau aussi en PHP ^^)

Lien vers le commentaire
Partager sur d’autres sites

si c'est le code entier, il manque des ")" et un ";"

de plus il faut vérifier le retour des fonctions mysql_connect, mysql_select_db et mysql_query ou pour test rajouter des or die("erreur trucmuchu");

Merci pour ta réponse !

J'ai repris le code présenté ici >> http://www.asp-php.net/tutorial/asp-php/cr...mbre-en-php.php

j'ai modifié quelques lignes :

<form action="http://localhost/test/script.php" method="post">

Rien ne marche :(

Lien vers le commentaire
Partager sur d’autres sites

Voici le formulaire d'inscription :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>[PHP] Créer un espace membre</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="http://localhost/test/script.php" method="post">
 <p>
	  Nom d'utilisateur : <input type="text" name="TB_Nom_Utilisateur" />
 </p>
 <p>
	  Mot de passe : <input type="password" name="TB_Mot_de_Passe" />
 </p>
 <p>
	  Confirmation du mot de passe : <input type="password" name="TB_Confirmation_Mot_de_Passe" />
 </p>
 <p>
	  Adresse e-mail : <input type="text" name="TB_Adresse_Email" />
 </p>
 <p>
	  <input type="submit" name="BT_Envoyer" value="Envoyer" />
 </p>
</form>
</body>
</html>

Et la partie traitement :

<?

// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
 header("Location: index.php");
}
else
{

 // Formulaire visible par défaut
 $masquer_formulaire = false;

 // Une fois le formulaire envoyé
 if(isset($_POST["BT_Envoyer"]))
 {

	  // Vérification de la validité des champs
	  if(!ereg("^[A-Za-z0-9_]{4,20}$", $_POST["TB_Nom_Utilisateur"]))
	  {
		   $message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères<br />\n";
		   $message .= "L'utilisation de l'underscore est autorisée";
	  }
	  elseif(!ereg("^[A-Za-z0-9]{4,}$", $_POST["TB_Mot_de_Passe"]))
	  {
		   $message = "Votre mot de passe doit comporter au moins 4 caractères";
	  }
	  elseif($_POST["TB_Mot_de_Passe"] != $_POST["TB_Confirmation_Mot_de_Passe"])
	  {
		   $message = "Votre mot de passe n'a pas été correctement confirmé";
	  }
	  elseif(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$",
		   $_POST["TB_Adresse_Email"]))
	  {
		   $message = "Votre adresse e-mail n'est pas valide";
	  }
	  else
	  {

		   // Connexion à la base de données
		   // Valeurs à modifier selon vos paramètres configuration
		   mysql_connect("localhost", "root", "");
		   mysql_select_db("test");

		   // Vérification de l'unicité du nom d'utilisateur et de l'adresse e-mail
		   $result = mysql_query("
				SELECT Nom_Utilisateur
					 , Adresse_Email
				FROM Comptes_Utilisateurs
				WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
				OR Adresse_Email = '" . $_POST["TB_Adresse_Email"] . "'
		   ");

		   // Si une erreur survient
		   if(!$result)
		   {
				$message = "Une erreur est survenue lors de la création de votre compte utilisateur";
		   }
		   else
		   {

				// Si un enregistrement est trouvé
				if(mysql_num_rows($result) > 0)
				{

					 while($row = mysql_fetch_array($result))
					 {

						  if($_POST["TB_Nom_Utilisateur"] == $row["Nom_Utilisateur"])
						  {
							   $message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"];
							   $message .= "est déjà utilisé";
						  }
						  elseif($_POST["TB_Adresse_Email"] == $row["Adresse_Email"])
						  {
							   $message = "L'adresse e-mail " . $_POST["TB_Adresse_Email"];
							   $message .= "est déjà utilisée";
						  }

					 }

				}
				else
				{

					 // Génération de la clef d'activation
					 $caracteres = array("a", "b", "c", "d", "e", "f", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
					 $caracteres_aleatoires = array_rand($caracteres, 8);
					 $clef_activation = "";

					 foreach($caracteres_aleatoires as $i)
					 {
						  $clef_activation .= $caracteres[$i];
					 }

					 // Création du compte utilisateur
					 $result = mysql_query("
						  INSERT INTO Comptes_Utilisateurs(
							   Nom_Utilisateur
							   , Mot_de_Passe
							   , Adresse_Email
							   , Date_Inscription
							   , Clef_Activation
						  )
						  VALUES(
							   '" . $_POST["TB_Nom_Utilisateur"] . "'
							   , '" . md5($_POST["TB_Mot_de_Passe"]) . "'
							   , '" . $_POST["TB_Adresse_Email"] . "'
							   , '" . time() . "'
							   , '" . $clef_activation . "'
						  )
					 ");

					 // Si une erreur survient
					 if(!$result)
					 {
						  $message = "Une erreur est survenue lors de la création de votre compte utilisateur";
					 }
					 else
					 {

						  // Envoi du mail d'activation
						  $sujet = "Activation de votre compte utilisateur";

						  $message = "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
						  $message .= "http://localhost/test";
						  $message .= "/activer-compte-utilisateur.php?id=" . mysql_insert_id();
						  $message .= "&clef=" . $clef_activation;

						  // Si une erreur survient
						  if(!@mail($_POST["TB_Adresse_Email"], $sujet, $message))
						  {
							   $message = "Une erreur est survenue lors de l'envoi du mail d'activation<br />\n";
							   $message .= "Veuillez contacter l'administrateur afin d'activer votre compte";
						  }
						  else
						  {

							   // Message de confirmation
							   $message = "Votre compte utilisateur a correctement été créer<br />\n";
							   $message .= "Un email vient de vous être envoyer afin de l'activer";

							   // On masque le formulaire
							   $masquer_formulaire = true;

						  }

					 }

				}

		   }

	  }

	  // Fermeture de la connexion à la base de données
	  mysql_close();

 }

}

?>

:iloveyou:

Lien vers le commentaire
Partager sur d’autres sites

quand tu fais ton if(isset($_POST['truc'])) pour verifier que tu as bien recu quelquechose, print tes variables

ensuite, prepare ta requete dnas une string, et print la avant de l'envoyer (tu y vera plus claire sur ce que tu fais)

genre, une fois que t'es connecte et que t'as select ta db:

$sql = "INSERT INTO Comptes_Utilisateurs (Nom_Utilisateur, Mot_de_Passe, Adresse_Email, Date_Inscription, Clef_Activation) VALUES('$_POST[\'TB_Nom_Utilisateur\']', 'MD5($_POST[\'TB_Mot_de_Passe\'])', '$_POST[\'TB_Adresse_Email\']', 'time()', '$clef_activation'";

echo $sql."\n";

$result = mysql_query($sql);

et bon, la j'ai repris les choses tellles que tu les avait faites sans relire ton code, mais...

-> debarasse toi des $_POST et cie.: c'est casse-coui*** a utiliser, et quand tu fais un echo de ton $_POST, ca passe pas, utilise des $login, $pass, etc.

-> verifie tes valeures de retours et met des messages d'erreur au besoin

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...