Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...
  • 0

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


Satsu

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.

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 5
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans cette question

Meilleurs contributeurs dans cette question

5 réponses à cette question

Messages recommandés

  • 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_\.-]+@[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_\.-]+@[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é...

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 6

      problème de connexion à mon serveur local (je suis débutant dans ce genre d'entreprise )

    2. 2

      problème de lancement serveur

    3. 9
    4. 0

      [PVM/PVP] ATLAX2 - EASY PLAY

    5. 2

      problème de lancement serveur

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.