Création Internet, référencement: dahut.be

Prestations sur Internet

 
B-6810 IZEL
Tél. /fax: 00 (0) 61/32.00.15.

Création de site

Référencement Références Contact
 
Quelques aides en programmation PHP
Cette partie reprend quelques trucs spécifiques en langage PHP.

Aide PHP - MySQL

Téléchargements

 

Aide 6. Formulaire d'inscription des utilisateurs

1 Introduction - 2. La table - 3. Création du formulaire - 3. Méthode Post - Get - 4. Traitement de l'information - 5. Récupération des données - 6. Vérification des données - 7. Vérification de l'adresse mail.

1. Introduction.

Cette partie reprend le formulaire d'inscription (obligatoire) des utilisateurs des petites annonces. La table doit être créée au préalable. 

Pour créer un formulaire, quel qu'il soit, deux méthodes sont utilisables avec leurs avantages et leurs défauts.

  1. Première méthode utilise un formulaire en HTML et un autre fichier en PHP qui vérifie les données. C'est la méthode la plus simple. Par contre, en cas de données incorrectes, elle nécessite que l'utilisateur reviennent en arrière avec le navigateur pour corriger (avec la plupart du temps tous les champs à remplir de nouveau)..

  2. Deuxième méthode utilise un seul fichier PHP qui insère et vérifie les données. On appelle de type de formulaire auto-invocant.

La méthode utilisée est un formulaire auto-invocant en méthode POST 

2. La table

Nom Variable PHP correspondante Valeur nulle autorisée valeur minimum, maximum
titre $titre Non Liste: Monsieur, Madame, Mademoiselle. (Cette partie est faite par le formulaire)
nom $nom Non 3,25 
prenom $prenom Non 3,25
adresse $adresse Oui 3,40
codepostal $codepostal Oui 4,10
ville $ville Oui 3,25
pays $pays Non 3,20
telephone $telephone Non 8,20
email $email Non 8,60, caractère @, serveur mail
username $username Non 2,25
password $password Non 5,40
bday $bday Oui chiffre entre 1 et 31
bmonth $bmonth Oui chiffre entre 1 et 12
byear $byear Oui chiffre entre 1900 et 2050

3. Le programme

<html>
<?php

// insertion de l'entête et du fichier de fonction
include('includes/header.php');
require('includes/fonctions.php');

// mise à zéro des variables
$correct=true;
$username="";
$password="";
$email="";
$nom="";
$prenom="";
$codepost="";
$ville="";
$telephone="";
$bday="";
$bmonth="";
$byear="";
$condition="";
// type d'utilisateur TM pour temporaire avant validation, US pour utilisateur
$type="US";
$regdate=date('Ymd');
?>

// création du tableau en HTML
<div align="center">
<table border="1" width="1000">
<tr>
<td width="20%" align="center" bgcolor="#CEEFD1" valign="top">
<?php
include('includes/colon-left.php');
?>
</td>
<td width="60%" align="left" valign="top">
<?php

// mise à zero des variables d'erreurs
$erreur_username="";
$erreur_password="";
$erreur_mail="";
$erreur_nom="";
$erreur_prenom="";
$erreur_codepost="";
$erreur_ville="";
$erreur_telephone="";
$erreur_bday="";
$erreur_bmonth="";
$erreur_byear="";
$erreur_conditions="";
// tests du formulaire, vérification du code POST entré dans le formulaire 
if (isset($_POST['inscription']))

 // récupération des données du formulaire
$username=ADDSLASHES($_POST['username']);
$password=ADDSLASHES($_POST['password']);
$email=ADDSLASHES($_POST['email']);
$titre=ADDSLASHES($_POST['titre']);
$nom=ADDSLASHES($_POST['nom']);
$prenom=ADDSLASHES($_POST['prenom']);
$codepost=ADDSLASHES($_POST['codepost']);
$ville=ADDSLASHES($_POST['ville']);
$telephone=ADDSLASHES($_POST['telephone']);
$bday=ADDSLASHES($_POST['bday']);
$bmonth=ADDSLASHES($_POST['bmonth']);
$byear=ADDSLASHES($_POST['byear']);

// vérification des données entrées.
if (isset($_POST['conditions']))
{
$condition=$_POST['conditions'][0];
}
if (isset($_POST['news']))
{
$news="O";
}else{
$news="N";
}

if ($email<>"")
{
list($user,$dns)=explode("@",$email);
}else
{
$user="";
$dns="";
}
if(!taille_variable($username,4,25)){
$erreur_username="Login de 4 caractères minimum, 25 maximum";
$correct=False;
}elseif (!taille_variable($password,5,40)){
$erreur_password="Mot de passe de 5 caractères minimum, 25 maximum";
$correct=False;
}elseif (!taille_variable($email,8,60)){
$erreur_mail="Adresse mail entre 8 et 60 caractères";
$correct=False;
}elseif (!strpos($email,'@')){
$erreur_mail="adresse mail non valide";
$correct=False;
}elseif(!checkdnsrr($dns)){
$erreur_mail="adresse mail non valide";
$correct=False;
}elseif (!taille_variable($nom,3,25)){
$erreur_nom="Compris entre 3 et 25 caractères";
$correct=False;
}elseif (!taille_variable($prenom,3,25)){
$erreur_prenom="Compris entre 3 et 25 caractères";
$correct=False;
}elseif (!taille_variable($codepost,4,10)){
$erreur_codepost="Compris entre 4 et 10 caractères";
$correct=False;
}elseif (!taille_variable($ville,3,25)){
$erreur_ville="Compris entre 3 et 25 caractères";
$correct=False;
}elseif ($condition<>"OFF")
{
$correct=False;
$erreur_conditions="Vous devez accepter les conditions d'utilisation du site";
}
if(strlen($telephone)<>0){
if (!taille_variable($telephone,5,20)){
$erreur_telephone="Téléphone non valide";
$correct=False;
}
}
if (strlen($bday)<>0){
if ($bday<"1"){
$erreur_bday="Jour de naissance invalide";
$correct=False;
}elseif ($bday>"31"){
$erreur_bday="Jour de naissance invalide";
$correct=False;
}
}
if (strlen($bmonth)<>0){
if ($bmonth<1){
$erreur_bmonth="Mois invalide";
$correct=False;
}elseif ($bmonth>12){
$erreur_bmonth="Mois invalide";
$correct=False;
}
}
if (strlen($byear)<>0){
if ($byear<1900){
$erreur_byear="Année invalide";
$correct=False;
}elseif ($byear>2000){
$erreur_byear="Année incorrecte";
$correct=False;
}
}
$mots_interdits=array();
$mots_interdits=motsinterdits();
If ($correct)
{
$correct=inclusinterdits($username,$mots_interdits,$correct);
$correct=inclusinterdits($nom,$mots_interdits,$correct);
$correct=inclusinterdits($prenom,$mots_interdits,$correct);
$correct=inclusinterdits($codepost,$mots_interdits,$correct);
$correct=inclusinterdits($ville,$mots_interdits,$correct);
$correct=inclusinterdits($telephone,$mots_interdits,$correct);
}
if ($correct)
{
require('includes/start.php');
// on ouvre la table
echo "Utilisateur correct<br>";
$requete="SELECT username FROM member where username='$username'";
$valeur=mysql_query($requete);
if (mysql_num_rows($valeur)<>0){
$erreur_username="Cet utilisateur existe déjà";
$correct=False;
}
$requete="SELECT email FROM member where email='$email'";
$valeur=mysql_query($requete);
if (mysql_num_rows($valeur)<>0){
$erreur_mail="Adresse Mail existe déjà";
$correct=False;
die('<meta http-equiv="refresh" content="3; URL=password.php">');

}
require('includes/stop.php');
}
if ($correct)
{// entrée de l'utilisateur
require('includes/start.php');
$requete="INSERT member SET titre='$titre',nom='$nom',prenom='$prenom',codepostal='$codepost',ville='$ville',pays='$pays',
telephone='$telephone',email='$email',username='$username',password='$password',type='$type',
bday='$bday',bmonth='$bmonth',byear='$byear',regdate='$regdate',news='$news'";
$erreur=mysql_query($requete);
$erreur1=mysql_error();
require('includes/stop.php');
// envoi du mail à l'utilisateur
echo'Utilisateur accepté: un mail va vous être envoyé, merci de votre inscription<br>';
$message=date("d/m/Y H:m:s\n")."\n Inscription sur le site: "."\n nom: ".$nom." Prénom: ".$prenom."\n Adresse mail: ".$email."\n login: ".$username."\n Mot de passe: ".$password;
$entetes = "From: \nReply-to: \n";
$sujet="Inscription sur le site de ".$titre." ".$prenom." ".$nom;
$webmaster=($email);
mail($webmaster,$sujet,$message,$entetes);
die('<meta http-equiv="refresh" content="3; URL=connexion.php">');
// pas de vérification actuellement du mai par retour

}
// fin des tests
}

// Formulaire
$form="<form method=\"POST\">
<p><b><font size=\"4\">Nom utilisateur - Login:</font></b> <input type=\"text\" name=\"username\" size=\"20\" value=\"".$username."\">";
$form=$form."<font color=\"#FF0000\"> ".$erreur_username."</font>"."
</p><p><font size=\"4\"><b>Mot de Passe:</font></b> <input type=\"password\" name=\"password\" size=\"20\" value=\"".$password."\"></font></p><font color=\"#FF0000\"> ".$erreur_password."</font>"."<p><b>Adresse Mail:</b> <input type=\"text\" name=\"email\" size=\"40\" value=\"".$email."\"></p>
<p><font color=\"#FF0000\"> ".$erreur_mail."</font></p>
<p><b>Titre (*): <select size=\"1\" name=\"titre\">
<option selected>Monsieur</option>
<option>Madame</option>
<option>Mademoiselle</option>
</select> Nom (*) <input type=\"text\" name=\"nom\" size=\"20\" value=\"".$nom."\"><font color=\"#FF0000\">".$erreur_nom."</font> Prénom (*) <input type=\"text\" name=\"prenom\" size=\"20\" value=\"".$prenom."\"></b><p><font color=\"#FF0000\"> ".$erreur_prenom."</font></p></p>
<p><b>Code Postal: <input type=\"text\" name=\"codepost\" size=\"20\" value=\"".$codepost."\"><font color=\"#FF0000\"> ".$erreur_codepost."</font> Ville: <input type=\"text\" name=\"ville\" size=\"20\" value=\"".$ville."\"></b><font color=\"#FF0000\"> ".$erreur_ville."</font></p>
<p><b>Pays: <select size=\"1\" name=\"pays\">
<option selected>Belgique</option>
<option>France</option>
<option>Luxembourg</option>
<option>Allemagne</option>
<option>Hollande</option>
<option>Suisse</option>
</select> </b></p>
<input type=\"checkbox\" name=\"conditions[]\" value=\"OFF\">
<b>J'accepte les </b><a href=\"conditions.htm\" target=\"_blank\"><b> conditions d'utilisations</b></a><font color=\"#FF0000\"> ".$erreur_conditions."</font>&nbsp;&nbsp;&nbsp;
<input type=\"checkbox\" name=\"news[]\" value=\"NEWS\" checked>Je souhaite recevoir
les news du site.
<p><u>Champs Facultatifs:</u></p>
<p>Téléphone: <input type=\"text\" name=\"telephone\" size=\"20\" value=\"".$telephone."\"><font color=\"#FF0000\"> ".$erreur_telephone."</font> Date de
Naissance: Jour <input type=\"text\" name=\"bday\" size=\"2\" value=\"".$bday."\"><font color=\"#FF0000\"> ".$erreur_bday."</font> Mois <input type=\"text\" name=\"bmonth\" size=\"2\" value=\"".$bmonth."\">
<font color=\"#FF0000\"> ".$erreur_bmonth."</font>Année <input type=\"text\" name=\"byear\" size=\"4\" value=\"".$byear."\"><font color=\"#FF0000\"> ".$erreur_byear."</font></p>
<p><input type=\"submit\" value=\"Envoyer\" name=\"inscription\"></p>
</form>";
echo $form;
?>
</tr>
</table>
</div>
<?php
function taille_variable($variable,$taille_min=0,$taille_max=0){
if(!isset($variable)){
// valeur non définie
return false;
}elseif (strlen($variable)<$taille_min){
return False;
}elseif(strlen($variable)>$taille_max){
return FALSE;
}
return True;
}
?>
</body>

</html>

4. Explications

Les différentes parties:

  1. Mise à zéro des variables du formulaire et des variables d'erreur 

  2. Si bouton envoyer utilisé, récupéré les valeurs inscrites dans le formulaire (exemple: ADDSLASHES($_POST['username']), la fonction addslashes est utilisée pour remplacer " par \"), les données sont ensuite vérifiées si elles sont vides ou incorrectes

  3. La partie suivante inclus $correct=inclusinterdits($prenom,$mots_interdits,$correct); C'est une fonction qui récupère dans une table une liste de mots interdits et évite quelques inscriptions de spams. Si un mot repris dans la liste est trouvé dans les différentes variables, la valeur $correct est mise à non, refusant l'inscription.

  4. Si toutes les données sont correctes, la valeur $correct est égale à "O" (définie au départ) et l'utilisateur est enregistré.

  5. Affichage du formulaire hors de la boucle POST


 

Numéro TVA (Arlon -Belgique): BE 0718.409.912.

Conception Internet et référencement 061/32.00.15.

1. Introduction - 5. Résumé des requêtes MySQL - 6. Inscription des utilisateurs - 7. Vérifier une adresse mail entrée dans un formulaire - 8. Quelques petites fonctions utiles - 11. Suppression des adresses Internet et mail dans les annonces - 12. Gestion d'activités


Hors développements:

Un petit calendrier en Php à utiliser sur un site Internet - Gérer un champ.