Jump to content
×
×
  • Create New...
  • 0

Ajout d'un champ sur l'inscription [MT2-CMS]


Satsu
 Share

Question

Bonjour a tous, aujourd'hui j'amerai rajouter un champ dans la page d'inscription de mon site (propulsé par MT2-CMS).

 

J'aimerai donc savoir quelle est la démarche a suivre sachant que le champ sera une textbox.

Je veux également que ce qui est marqué dans la textbox s'inscrive sur ma base de donnée table account, il me faut donc les informations nécessaires pour créer la colonne dans ma table account.

 

Version des files : rien a voir

Domaine (Base de données, Core, etc.) : Site

Votre niveau (débutant, intermédiaire, avancé) : intermédiaire

 

Merci d'avance et,

En postant ma demande d'aide, j'affirme avoir lu et accepté le règlement des demandes d'aides.

Link to comment
Share on other sites

  • Answers 5
  • Created
  • Last Reply

Top Posters For This Question

Top Posters For This Question

5 answers to this question

Recommended Posts

  • 0

Il vous faut travailler sur 3 fronts. D'un côté, le formulaire d'affichage, d'un autre, le traitement du champs et enfin l'enregistrement dans la base de données.

 

Commençons par voir le formulaire. Si vous n'avez pas modifié votre CMS, il est contenu dans inscription.tpl.

Rajoutez un champs textarea où vous le voulez entre les balises

comme ceci :


 

Vous avez créé le nouveau champs dans le formulaire.

 

Passons maintenant à son traitement via PHP ! Pour cela, direction inscription.php. Repérez les lignes de traitement :

 

Commençons par sécuriser la variable comme ceci :

 

	$texte = mysql_real_escape_string($_POST['texte']);

 

//Si on envoie le formulaire et que l'inscription est activé
if(isset($_POST['login']) and isset($_POST['mail']) and isset($_POST['mdp']) and $CONFIG['inscription'] == 1) 
{
$tpl->assign('envoie_form', '1');

//Sécurité : On protège les variables.

$pseudo=mysql_real_escape_string($_POST['login']);        
$mdp=mysql_real_escape_string($_POST['mdp']);
$mail=mysql_real_escape_string($_POST['mail']);
$texte = mysql_real_escape_string($_POST['texte']); 

$errors = '';

//Si le mail est valide
if(preg_match('#^[a-zA-Z0-9_\.-][email protected][a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$#', $mail))
{
	//Si le pseudo est supérieur à  4 caractères et inférieur à  17 caractères.
	if (strlen(trim($pseudo)) > 4 && strlen(trim($pseudo)) < 17)
	{
		//Si le mot de passe est supérieur à  4 caractères et inférieur à  17 caractères.
		if (strlen(trim($mdp)) > 4 && strlen(trim($mdp)) < 17)
		{
			//On vérifie que le pseudo n'existe pas.
			mysql_select_db("account");
			$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM `account` WHERE login='$pseudo'");
			if (mysql_result($sql, 0, 'nb_pseudo') == 0)
			{
				$date = date("Y-m-d H:i:s");

				//Insertion dans la base de donnée
				$sql="INSERT INTO account (login, password, email, create_time, cash, rang) VALUES ('$pseudo', password ('$mdp'), '$mail', '$date', '0', '1')";
				mysql_query($sql) or die (mysql_error());

			}
			else { $errors =5; }//5: Ce pseudo est déjà utilisé.
		}
		else { $errors =4; }//4: Le mot de passe doit être compris entre 5 et 16 caractères.
	}
	else { $errors =3; }//3:Le pseudo doit être compris entre 5 et 16 caractères.
}
else { $errors =2; }//2: Votre email est invalide.


if($errors == '') //Si l'inscription a fonctioné
{ $tpl->assign('valid_form', '1'); }
else //Sinon on charge les erreurs
{ $tpl->assign('valid_form', $errors); }

}

 

Notre objectif est de rajouter le traitement de notre champs variable. Pour cela, il nous faut rajouter une condition.

 

if (isset($texte) AND $texte != "") //Si l'utilisateur a rempli le champs
{

... //on continue

}
else
{
$errorrs = 15; //L'utilisateur n'a pas rempli le champs de texte. On génère une erreur qui sera identifiée sous le chiffre 15 purement arbitraire pour la suite.
}

 

Glissons ça dans notre code

 

//Si on envoie le formulaire et que l'inscription est activé
if(isset($_POST['login']) and isset($_POST['mail']) and isset($_POST['mdp']) and $CONFIG['inscription'] == 1) 
{
$tpl->assign('envoie_form', '1');

//Sécurité : On protège les varriables.

$pseudo=mysql_real_escape_string($_POST['login']);        
$mdp=mysql_real_escape_string($_POST['mdp']);
$mail=mysql_real_escape_string($_POST['mail']);
$texte = mysql_real_escape_string($_POST['texte']); 

$errors = '';

//Si le mail est valide
if(preg_match('#^[a-zA-Z0-9_\.-][email protected][a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$#', $mail))
{
	//Si le pseudo est supérieur à  4 caractères et inférieur à  17 caractères.
	if (strlen(trim($pseudo)) > 4 && strlen(trim($pseudo)) < 17)
	{
		//Si le mot de passe est supérieur à  4 caractères et inférieur à  17 caractères.
		if (strlen(trim($mdp)) > 4 && strlen(trim($mdp)) < 17)
		{
			if (isset($texte) AND $texte != "") //Si l'utilisateur a rempli le champs texte
			{
				//On vérifie que le pseudo n'existe pas.
				mysql_select_db("account");
				$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM `account` WHERE login='$pseudo'");
				if (mysql_result($sql, 0, 'nb_pseudo') == 0)
				{
					$date = date("Y-m-d H:i:s");

					//Insertion dans la base de donnée
					$sql="INSERT INTO account (login, password, email, create_time, cash, rang) VALUES ('$pseudo', 	password ('$mdp'), '$mail', '$date', '0', '1')";
					mysql_query($sql) or die (mysql_error());

				}
				else { $errors =5; }//5: Ce pseudo est déjà utilisé.
			}
			else { $errors = 15; } //15 : champs de texte non rempli.
		}
		else { $errors =4; }//4: Le mot de passe doit être compris entre 5 et 16 caractères.
	}
	else { $errors =3; }//3:Le pseudo doit être compris entre 5 et 16 caractères.
}
else { $errors =2; }//2: Votre email est invalide.


if($errors == '') //Si l'inscription a fonctioné
{ $tpl->assign('valid_form', '1'); }
else //Sinon on charge les erreurs
{ $tpl->assign('valid_form', $errors); }


}

 

Nous avons presque fini !

 

Allons dans la base de données account. Rajoutez un champs de type text de nom texte dans votre table account (je pense que vous savez faire).

 

Il nous faut modifier la requête sql de manière à ce qu'il enregistre notre variable.

 

Transformons la requête comme ceci :

$sql="INSERT INTO account (login, password, email, create_time, cash, rang, texte) VALUES ('$pseudo', 	password ('$mdp'), '$mail', '$date', '0', '1', '$texte')";

 

Une dernière chose, nous avons parlé d'un code erreur toute à l'heure :

$errors = 15;

 

Retournons dans inscription.tpl et repérons ces lignes

 

Votre email est invalide.
Le pseudo doit être compris entre 5 et 16 caractères.
Le mot de passe doit être compris entre 5 et 16 caractères.
Ce pseudo est déjà utilisé.

 

C'est la définition des messages d'erreur en fonction du numéro que nous avons mis toute à l'heure, 15 ! Rajoutons donc la ligne :

Vous n'avez pas rempli la zone de texte.

 

Et voilà ! Nous avons fini !

 

PS : Un mini tuto de la sorte prend un peu de temps ! Il est possible que j'ai oublié des choses, c'est tellement vite arrivé...

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.