8725 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,
Je tente de faire une vérification du formulaire via PHP. (celle en jquery semble ok, mais comme tout le monde le sait, pas suffisante)

Voici les vérifications que je veux faire :

//VERIFICATION GLOBAL DU FORMULAIRE D'AJOUT / MODIF CLIENT ET ENREGISTREMENT DES INFOS.
//traitement des erreurs en PHP et message en PHP
 if (isset($_POST["Valider"]) && $_POST["Valider"] === "Valider") //le formulaire est soumis, les erreurs php ne s'affichent pas au chargement simple de la page.
 {
    if (empty($_POST['raison_sociale'])) {$erreur2 = "Veuillez indiquer votre nom"; $erreur_global = true;}
    if (!empty($_POST['telephone']) && !is_numeric(preg_replace('/\s/', '', $_POST['telephone']))) {$erreur7 = "Le numéro de téléphone semble incorrect (01 23 45 67 89)"; $erreur_global = true;}
    if (!empty($_POST['telephone']) && strlen($_POST['telephone']) > 14 && strlen($_POST['telephone']) < 10)	{$erreur7 = "Le numéro de téléphone semble incorrect (01 23 45 67 89)"; $erreur_global = true;}
    if (empty($_POST['ville']))  {$erreur10 = "Ville absente";}
  if (!empty($_POST['mdp1']))
  {
    if (empty($_POST['mdp2'])) {$erreur3= "Merci de confirmer le mot de passe."; $erreur_global = true;}
   if (strlen($_POST['mdp1'] < 8)) {$erreur4= "Le mot de passe doit contenir au moins 8 carractères."; $erreur_global = true;}
   if ($_POST['mdp1'] != $_POST['mdp2']) {$erreur5 = "Les mots de passe ne sont pas identiques."; $erreur_global = true;}
   }
if($erreur_global = false) //s'il n'y a pas d'erreur....
  {
  include("database.php"); //connexion à la base de données
  include("traitement_client.php"); // passage des valeurs en variables et enregistre les infos. (avec la variable session ajout_ou_modif, on sait si on update ou ajoute
  }
}
//FIN DE VERIF FORM AJOUT CLIENT

J'ai une variable erreur_global, qui me dit si l'ensemble du formulaire est ok ou non.
En début de page, j'initialise cette variable à false. (il n'y a donc pas d'erreur sur le formulaire)
$erreur_global = false;

Seulement, elle ne passe jamais à true. même si $_POST['ville'] est vide.

Mon formulaire :

<form id="formulaire_ajout_clt" action="admin_modif_clients.php" method="post">
 <p><small>Informations sur le client</small></p>
  <label for="raison_sociale">Ville / Raison Sociale / Association / Nom* :</label><input id="raison_sociale" type="text" name="raison_sociale" placeholder="Nom, ville, raison sociale etc...." maxlength="100" size="40" value="<?php if(!empty($_POST['raison_sociale'])) { echo Securite::html($_POST['raison_sociale']); } elseif (!empty($_SESSION['rs'])) { echo Securite::html($_SESSION['rs']); } ?>"/>
  <?php if (!empty($erreur2)) { echo '<label for="raison_sociale" class="error">' . $erreur2 . '</label>'; } ?>
  <br/>
  <label for="email2">Email :</label><input id="email" type="email" name="email" placeholder="exemple@mail.fr" maxlength="51" size="40" value="<?php if(!empty($_POST['email'])) echo Securite::html($_POST['email'])?>"/>
  <br/>
  <label for="add1">Adresse 1 :</label><input id="add1" type="text" name="add1" size="40" value="<?php if(!empty($_POST['add1'])) echo Securite::html($_POST['add1'])?>" />
  <br/>
  <label for="add2">Adresse 2 :</label><input id="add2" type="text" name="add2" size="40" value="<?php if(!empty($_POST['add2'])) echo Securite::html($_POST['add2'])?>" />
  <br/>
  <label for="add3">Adresse 3 :</label><input id="add3" type="text" name="add3" size="40" value="<?php if(!empty($_POST['add3'])) echo Securite::html($_POST['add3'])?>" />
  <br/>
  <label for="ville">Ville :</label><input id="ville" type="text" name="ville" size="40" value="<?php if(!empty($_POST['ville'])) echo Securite::html($_POST['ville'])?>" />
  <?php if (!empty($erreur10)) { echo '<label for="ville" class="error">' . $erreur10 . '</label>'; } ?>
  <br/>
  <label for="CP">Code Postal :</label><input id="CP" type="text" name="CP" maxlength="5" value="<?php if(!empty($_POST['CP'])) echo Securite::html($_POST['CP'])?>" />
  <br/>
  <label for="telephone">Téléphone :</label><input id="telephone" type="tel" name="telephone" placeholder="06..." maxlength="14" value="<?php if(!empty($_POST['telephone'])) echo Securite::html($_POST['telephone'])?>"/>
  <?php if (!empty($erreur7)) { echo '<label for="telephone" class="error">' . $erreur7 . '</label>'; } ?>
 <p><small>Mot de passe du client</small></p>
  <label for="mdp1">Nouveau mot de passe :</label><input id="mdp1" type="password" name="mdp1" size="20" value="<?php if(!empty($_POST['mdp1'])) echo Securite::html($_POST['mdp1'])?>"/>
  <?php if (!empty($erreur4)) { echo '<label for="mdp1" class="error">' . $erreur4 . '</label>'; } ?>
  <br/>
  <label for="mdp2">Confirmer le mot de passe :</label><input id="mdp2" type="password" name="mdp2" size="20" value="<?php if(!empty($_POST['mdp2'])) echo Securite::html($_POST['mdp2'])?>"/>
  <?php if (!empty($erreur3)) { echo '<label for="mdp2" class="error">' . $erreur3 . '</label>'; } ?>
  <?php if (!empty($erreur5)) { echo '<label for="mdp2" class="error">' . $erreur5 . '</label>'; } ?>
  <br/>
 <input type="submit" name="Valider" value="Valider" title="Cliquez ici pour valider"/>
</form>


Ma vérification de la variable erreur_global se fait ainsi :
<?php if($erreur_global == true) { echo "<- ID CLIENT MODIF et -> erreur_global egale true";} else { echo "il n'y a pas d'erreur global sur le formulaire"; } ?>

Après Edit et re Edit pour mise en page des "codes", Par avance, je vous remercie de votre aide.
Modifié par Alexbass (15 Dec 2014 - 20:37)

if($erreur_global = false)


Au lieu de tester en utilisant == ou === tu assignes false à ta variable parce que tu as oublié un signe =. Du coup ta variable vaut toujours false.

Tu aurais du écrire :


if ($erreur_global == false)


Ou bien :


if ($erreur_global === false)


Un truc tout simple pour éviter ce genre d'erreur en PHP est d'inverser l'écriture des conditions. Tu mets ta constante à tester à gauche et ta variables à droite, comme ça :


// PHP va produire une erreur
if (false = $erreur_global)


Si tu te trompes PHP te sortira une erreur et tu repéreras le bug tout de suite.
Encore toi ? Smiley smile
Merci beaucoup.
Je ne pensais pas que la variable aurait pris la valeur false avec cette erreur d’écriture étant donné qu'il y a un "if" avant. J'aurais plutôt pensé qu'une erreur aurait été générée.
Du style "impossible d'executer la condition if... Smiley smile ça aurait été trop simple.

En tous cas j'ai corrigé, et merci beaucoup pour ce coup d'oeil rapide et ultra efficace.
Je me rend compte que le champ téléphone n'est pas vérifié.
Je peux par exemple mettre la valeur "45", et il ne me génère pas d'erreur. Smiley decu
Voici le code de vérif modifié :

//VERIFICATION GLOBAL DU FORMULAIRE D'AJOUT / MODIF CLIENT ET ENREGISTREMENT DES INFOS.
//traitement des erreurs en PHP et message en PHP
 if (isset($_POST["Valider"]) && $_POST["Valider"] === "Valider") //le formulaire est soumis, les erreurs php ne s'affichent pas au chargement simple de la page.
 {
    if (empty($_POST['raison_sociale'])) {$erreur2 = "Veuillez indiquer votre nom"; $erreur_global = true;}
    if (!empty($_POST['telephone']) && !is_numeric(preg_replace('/\s/', '', $_POST['telephone']))) {$erreur7 = "Le numéro de téléphone semble incorrect (01 23 45 67 89)"; $erreur_global = true;}
    if (!empty($_POST['telephone']) && strlen($_POST['telephone']) > 14 && strlen($_POST['telephone']) < 10)	{$erreur7 = "Le numéro de téléphone semble incorrect (01 23 45 67 89)"; $erreur_global = true;}
    if (empty($_POST['ville']))  {$erreur10 = "Ville absente";}
  if (!empty($_POST['mdp1']))
  {
    if (empty($_POST['mdp2'])) {$erreur3= "Merci de confirmer le mot de passe."; $erreur_global = true;}
   if (strlen($_POST['mdp1'] < 8)) {$erreur4= "Le mot de passe doit contenir au moins 8 carractères."; $erreur_global = true;}
   if ($_POST['mdp1'] != $_POST['mdp2']) {$erreur5 = "Les mots de passe ne sont pas identiques."; $erreur_global = true;}
   }
if($erreur_global == false) //s'il n'y a pas d'erreur....
  {
  include("database.php"); //connexion à la base de données
  include("traitement_client.php"); // passage des valeurs en variables et enregistre les infos. (avec la variable session ajout_ou_modif, on sait si on update ou ajoute
  }
}
//FIN DE VERIF FORM AJOUT CLIENT

Par contre, si le numéro n'est pas de type numéric, là j'ai bien l'erreur.

EDIT : je crois que je test la longueur d'une chaine string, alors que ma valeur est numérique. Donc ça bloque. Mais je suis pas sur
Modifié par Alexbass (15 Dec 2014 - 20:59)
Ouais, en fait quand tu fais :


!is_numeric(preg_replace('/\s/', '', $_POST['telephone'])))


Le code est évalué comme ça :


$resultat_de_preg_replace = preg_replace('/\s/', '', $_POST['telephone']);
!is_numeric($resultat_de_preg_replace);


Donc ton test ne vérifie pas si $_POST['telephone'] est un nombre mais si $resultat_de_preg_replace vaut vrai ou faux.

Tu dois décomposer ton action en 3 étapes : 1 tu vérifies si telephone n'est pas vide, 2 tu appliques ton preg_replace pour virer ce que tu veux, 3 tu vérifie si tu as bien des chiffres.
Modifié par LaJota (15 Dec 2014 - 21:39)
J'ai réussi. l'erreur se situait au niveau de la vérification de la longueur de la chaine de caractère.

J'ai remplacé
if (!empty($_POST['telephone']) && strlen($_POST['telephone']) > 14 && strlen($_POST['telephone']) < 10)	{$erreur7 = "Le numéro de téléphone semble incorrect (01 23 45 67 89)"; $erreur_global = true;}
par
$tel = preg_replace('/\s/', '', $_POST['telephone']);
if (!empty($_POST['telephone'])) { if(strlen($tel) > 10 OR strlen($tel) < 10)																{$erreur7 = "Le numéro de téléphone semble incorrect (01 23 45 67 89)"; $erreur_global = true;} }

vu que les espaces sont supprimés pour vérifier si c'est numérique, je peux tester s'il y a bien 10 chiffres dans mon numéro. Mais je sépare la condition de vérification "!empty".
J'ai pas réussi à faire une implémentation globale. J'ai du faire un deuxième "if".

Le test numeric avec le preg_replace fonctionne.
if (!empty($_POST['telephone']) && !is_numeric(preg_replace('/\s/', '', $_POST['telephone']))) {$erreur7 = "Le numéro de téléphone semble incorrect (01 23 45 67 89)"; $erreur_global = true;}


Merci du coup de main.
Les numéros de téléphone ne sont pas vraiment normalisés. Certains mettent des points ou des tirets entre les groupes de chiffres au lieu d'espaces, d'autre part un numéro international en France va se coder 0033 1 23 45 67 89 ou +33 1 23 45 67 89
Selon le contexte on peu être amené à complexifier le programme de saisie.
Par ailleurs c'est quelque chose qui se fait plus usuellement côté client en JS ce qui permet de décider d'un encodage interne unique et d'accepter des variantes de saisie.
PapyJP, je suis tout ouïe. Dis m'en plus Smiley smile .
Côté php, je ne vérifie pour le moment que si c'est numérique après suppression des espaces. Et que j'ai bien 10 chiffres.
Côté JS, je posterai le code que j'ai ce soir.
Le formatage en JS, c'est bien, mais si JS est désactivé?

Par avance je te remercie.
Alexbass a écrit :
PapyJP, je suis tout ouïe. Dis m'en plus Smiley smile .
Côté php, je ne vérifie pour le moment que si c'est numérique après suppression des espaces. Et que j'ai bien 10 chiffres.

C'est bien ce que j'ai vu, mais pourquoi simplement des espaces et pas des points ou des tirets? et que faire des +33 et des 0033? et des téléphones hors de France?
Tout dépend du contexte: si ton site est purement national, tu peux ignorer mes remarques, mais le minimum est que tu montres à l'utilisateur ce que tu attends (01 23 45 67 89). Personnellement je suis souvent furieux de devoir saisir à nouveau une info pour des raisons de format. Par exemple des sites internationaux qui n'acceptent pas +33 en tête (ce qui est le cas de ton algorithme) et je suis d'autant plus furieux s'il faut recommencer toute la saisie parce que la vérification est faite côté serveur et que le programmeur n'a pas prévu de garder les valeurs déjà entrées.
Alexbass a écrit :
Côté JS, je posterai le code que j'ai ce soir.
Le formatage en JS, c'est bien, mais si JS est désactivé?

Par avance je te remercie.

Si JS est désactivé? Ça existe encore? Il y a aussi des gens qui désactivent l'affichage des images de peur de voir s'aficher des grosses cochonneries. Blague à part ça doit bien faire 15 ans que je ne me suis pas posé la question.
En utilisant intelligemment la balise <noscript> on doit pouvoir faire deux versions du bouton submit, une qui appelle le script de vérification et l'autre pas, ce n'est même peu être pas nécessaire, je suppose que si bouton submit possède un onclick="verif()" la form doit être transmise sans vérification.
Personnellement mes sites ne fonctionnent qu'avec du JS et personne ne s'en est plaint jusqu'à présent. Il est vrai qu'ils ne s'adressent qu'à une population peu susceptible de désactiver JS.
En tout cas se priver des possibilités de JS parce quelques utilisateurs ont désactivé JS me semble une erreur.
Modérateur
Bonjour,

Je viens mettre mon grain de sel concernant
PapyJP a écrit :
si ton site est purement national, tu peux ignorer mes remarques

Attention toutefois car nombre de frontaliers ressortissants français disposent d'un numéro de téléphone étranger surtout à proximité des frontières réputées pour leurs faibles taxes.

La vérification par Regex d'un numéro de téléphone est très compliquée au vu des variantes possibles (sans compter aussi la bêtise humaine - nous en sommes tous témoins et parfois aussi acteurs).

Un excellent moyen de vérifier la cohérence d'un numéro de téléphone, hors regexp, est de générer l'envoi d'un SMS avec un code de vérification (Facebook, entre-autres, utilise ce procédé) mais là on frôle autant la perfection que la complication pour le codeur.
Et pour éviter l'envoi de SMS dont on est sûr qu'ils n'aboutiront pas, on peut utiliser un Regexp en amont qui vérifiera si le numéro ne contient pas de caractère alphabétique, de signes autres que le + de départ et les séparateurs.
A propos des séparateurs, une solution pour s'en débarrasser est de créer des champs mitoyens dans lesquels on ne rempli que les chiffres (un peut comme un code de logiciel si vous voyez ce dont je parle).

Voilà, c'était mon grain de sel, et celui-ci ne vient pas de Guérande Smiley cligne

Bonne journée à toutes et à tous.
bonjour à tous,

Normalement, le site est francophone et s'adresse aux français de l'hexagone.

Mais comme dit Greg_lumière, il est possible que la frontière ne soit pas si loin, et qu'il faille préciser la localisation.

Pour ce qui est des séparateurs, j'avoue ne pas du tout avoir pensé aux points, virgules, tirets, slashs etc... Seules les espaces sont venus jusqu'à mon esprit.

voici le Jquery dont je parlais :
jQuery.validator.addMethod("myPhoneNumberValidator", function(value, element) {
// no phone number is a good phone number (the field is optional)
 if (value.length == 0) { return true; }
// if the phone number field is not empty, it has to follow the fixed format
 if(!/^33 \(0\)\d \d\d \d\d \d\d \d\d$/i.test(value)) {
// ten digits starting with zero
  if (/^0(\d)(\d\d)(\d\d)(\d\d)(\d\d)$/.test(value)) {
   value = value.replace(/^0(\d)(\d\d)(\d\d)(\d\d)(\d\d)$/, "0$1 $2 $3 $4 $5");
   $(element).val(value); // also update the form element
   return true;
  }
 }
 return /^0\d \d\d \d\d \d\d \d\d$/i.test(value);
 }, 'Veuillez saisir votre numéro de téléphone dans le format suivant : <i>01 23 45 67 89</i>');
Du coup, coté php, je ne sais pas comment supprimer tous les caractères autres que '0123456789', ni vérifier que ça commence par '0'. Je pense que je ne vais pas prendre en compte le "+33" pour simplifier les choses.
Je suis un peu perdu Smiley decu
Bonjour à tous,

J'ai une autre question :

J'utilise cette fonction :
<?php
	class Securite
	{
		// Données entrantes
		public static function bdd($string)
		{
			// On regarde si le type de string est un nombre entier (int)
			if(ctype_digit($string))
			{
				$string = intval($string);
			}
			// Pour tous les autres types
			else
			{
				//$string = mysql_real_escape_string($string);
				$string = addcslashes($string, '%_');
			}
				
			return $string;

		}
		// Données sortantes
		public static function html($string)
		{
			return htmlentities($string);
		}
	}
?>
Mais je pense que je l'utilise mal.
Est-ce que je dois sécuriser les données qui s'affichent dans un formulaire, si celui-ci est soumit et non valide ?

<input id="texte1" type="text" name="texte1" value="<?php if(!empty($_POST['texte1'])) echo Securite::html($_POST['texte1'])?>"/>
Car si l'utilisateur met des accents, des apostrophe etc..., le texte qui s'affiche puis se ré affiche est a chaque fois traité par Securite::html. Et ça ressemble plus à rien?

Vous auriez un avis à me donner ?

Car si je fait "stripcslashes(html_entity_decode(Securite::html($_POST['texte1'])))", ça s'annule non? donc ça ne sert à rien...

Merci beaucoup d'avance.
Alexbass a écrit :
Est-ce que je dois sécuriser les données qui s'affichent dans un formulaire, si celui-ci est soumit et non valide ?

Oui, il ne absolument pas que l'utilisateur puisse insérer du code html dans votre page. Il faut en effet pour cela utiliser la fonction htmlspecialchars ou htmlentities.Une fonction e(), alias de htmlspecialchars est souvent très pratique.

exemple :
<input id="texte1" type="text" name="texte1" value="<?php echo e($_POST['texte1']) ?>"/>


Pour les problèmes d'injection sql, vous ne devez pas utiliser la fonction addcslashes qui rajoute des slashes dans vos données. Ce qui provoque vos doublons sur les guillemets. Pour cela il y a mysql_real_escape_string, à utiliser au moment de l'insertion dans la bdd. Mais vous devriez savoir que cette extension mysql est obsolète.

Aussi, si vous avez une vielle version de php il faut vérifier que les Magic Quotes sont désactivés.
Dans la fonction Securite::html, j'ai viré mysql_real_escape_string car ça me générait une erreur.
Je pense liée à la version de PHP. Mais je ne sais pas quelle version de PHP j'utilise. Je suis sur 1and1,

Et j'ai aussi une erreur avec mon Update :

$req = $bd->prepare('UPDATE client SET (clt_raison_sociale, clt_email, clt_adresse1, clt_adresse2, clt_adresse3, clt_ville, clt_CP, clt_telephone) VALUES(:raison_sociale, :email, :add1, :add2, :add3, :ville, :cp, :telephone) WHERE clt_id = $id_clt_modif ');
	$req->execute(array(
		'raison_sociale' => $raison_sociale,
		'email' => $email,
		'add1' => $add1,
		'add2' => $add2,
		'add3' => $add3,
		'ville' => $ville,
		'cp' => $cp,
		'telephone' => $telephone,
		));

L'erreur est généré lorsqu'un champs comporte une apostrophe, et que celle ci est échappée par un \. Certainement avec la fonction addcslash
Modifié par Alexbass (18 Dec 2014 - 23:05)
Je viens de faire ce test :
<?php
$_POST['lastname'] = "O\'reilly";
// Si les guillemets magiques sont actifs
echo $_POST['lastname'];             // O\'reilly
?><br/><?php
echo addslashes($_POST['lastname']); // O\\\'reilly
?><br/><?php
// Utilisation pour toutes les versions de PHP
if (get_magic_quotes_gpc()) {
    $lastname = stripslashes($_POST['lastname']);
}
else {
    $lastname = $_POST['lastname'];
}

// Si vous utilisez MySQL
//$lastname = mysql_real_escape_string($lastname);

echo $lastname; // O\'reilly

?>


J'obtiens le résultat suivant :
O\'reilly
O\\\'reilly
O'reilly

J'arrive pas à savoir si ça veut dire que les guillemets magiques sont actifs ou non?
Salut tout le monde.
En relisant ce matin, je comprends que les magic quotes sont actifs. Comment les désactive t'on?
Je lis aussi un peu partout, que les requettes préparées empêche l'injection sql. J'utilise justement les requettes préparées.
J'ai réussi a comprendre pourquoi les requêtes préparée était protégées en lisant ca : lien. En effet, la requête préparée attend un certain nombre d'élément et donc si on essaie de couper la requête et qu'il manque des éléments, on obtient une erreur. C'est aussi ce qui se passe avec ma requête d'update lorsqu'il y a un " \' ".

Donc si je comprend bien :
1 : je désactive magic quotes.
2 : je n'utilise plus la fonction Securite::bdd car elle utilise addcslash et mes requettes préparées me protèges déjà des injections.
3 : je garde ma protection html avec e -> htmlspecialchars

Merci d'avance de votre aide.
Alexbass a écrit :

Donc si je comprend bien :
1 : je désactive magic quotes.
2 : je n'utilise plus la fonction Securite::bdd car elle utilise addcslash et mes requettes préparées me protèges déjà des injections.
3 : je garde ma protection html avec e -&gt; htmlspecialchars.


Oui exactement cela. Pour les désactiver, tu retrouveras 3 méthodes dans la doc php : http://php.net/manual/fr/security.magicquotes.disabling.php

Mais regarde un peu sur le net, je sais qu'il y a moyen de changer la version de php chez 1and1 via une ligne dans le .htaccess.
Modifié par benj (19 Dec 2014 - 13:49)
Bonjour,
J'ai réussi à passer en php 5.5.
Y a t il une version php pour laquelle les magic quotes sont à off par défaut?
Avant d'essayer de désactiver quelque chose de déjà desactivé. Smiley smile
Cela a été supprimé avec la version 5.4 de php.

Pour voir la config de php, il te suffit de faire un phpinfo();
Salut à tous,

Je pense avoir réglé mon problème de slash et de caractères accentués grâce au passage à la version 5.5 de PHP, à l'utilisation de htmlspecialchars, ainsi que du passage en UTF8 general sur ma base mysql.

Maintenant je rencontre une erreur avec ma requête de mise à jour (UPDATE) :

Je pense que la syntaxe n'est pas bonne Smiley decu .

Le message d'erreur :
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(clt_raison_sociale, clt_email, clt_adresse1, clt_adresse2, clt_adresse3, clt_vi' at line 1' in /homepages/44/d401701383/htdocs/test/traitement_client.php:48 Stack trace: #0 /homepages/44/d401701383/htdocs/test/traitement_client.php(48): PDOStatement->execute(Array) #1 /homepages/44/d401701383/htdocs/test/admin_modif_clients.php(66): include('/homepages/44/d...') #2 {main} thrown in /homepages/44/d401701383/htdocs/test/traitement_client.php on line 48

Ma requête UPDATE :
$req = $bd->prepare('UPDATE client SET (clt_raison_sociale, clt_email, clt_adresse1, clt_adresse2, clt_adresse3, clt_ville, clt_CP, clt_telephone) VALUES(:raison_sociale, :email, :add1, :add2, :add3, :ville, :cp, :telephone) WHERE clt_id = $id_clt_modif ');
	$req->execute(array(
		'raison_sociale' => $raison_sociale,
		'email' => $email,
		'add1' => $add1,
		'add2' => $add2,
		'add3' => $add3,
		'ville' => $ville,
		'cp' => $cp,
		'telephone' => $telephone,
		));


Par avance, je vous remercie vivement de l'aide que vous m'apporterez.
Je remercie beaucoup Benj pour tous ces précieux conseils, et tout ceux qui m'ont déjà aidé.
Modifié par Alexbass (22 Dec 2014 - 15:06)
Pages :