Controler formulaire
Résolu/Fermé
mart03
Messages postés
279
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
5 juin 2012
-
15 avril 2009 à 17:43
mart03 Messages postés 279 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 5 juin 2012 - 15 avril 2009 à 21:00
mart03 Messages postés 279 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 5 juin 2012 - 15 avril 2009 à 21:00
A voir également:
- Controler formulaire
- Formulaire de réclamation facebook - Guide
- Formulaire instagram compte suspendu - Guide
- Formulaire rempli - Guide
- Confirmer le nouvel envoi du formulaire err_cache_miss ✓ - Forum HTML
- Google Chrome : "Nouvel envoi du formulaire" - Forum Google Chrome
14 réponses
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
15 avril 2009 à 18:16
15 avril 2009 à 18:16
fonctions de contrôle standard:
strlen() (taille des chaînes)
preg_match (recherche de motifs, complexe)
strip_tags (occulte les balises html)
à toi de voir, sinon il existe un paquet de tutos. Si tes conditions ne sont pas vérifiées lors de l'envoi, tu annules l'envoi^^ tout simple
strlen() (taille des chaînes)
preg_match (recherche de motifs, complexe)
strip_tags (occulte les balises html)
à toi de voir, sinon il existe un paquet de tutos. Si tes conditions ne sont pas vérifiées lors de l'envoi, tu annules l'envoi^^ tout simple
Je rajouterais à cette liste, trilm(), les ctype_digit() et assimilés, filter_var() si tu disposes d'une version de php très récente.
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
15 avril 2009 à 18:34
15 avril 2009 à 18:34
+1 pour trim() et ctype_digit, mais filter_var, c'est pas un peu compliqué pour un débutant?
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
15 avril 2009 à 18:39
15 avril 2009 à 18:39
Non, c'est pas très complexe à utiliser :)
Le dom, ça c'est complexe pour un débutant :D
Le dom, ça c'est complexe pour un débutant :D
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
15 avril 2009 à 18:58
15 avril 2009 à 18:58
mdr en effet :D
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mart03
Messages postés
279
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
5 juin 2012
21
15 avril 2009 à 19:05
15 avril 2009 à 19:05
Merci mais je les mais a quelle endroit car comme je suis un peu débutant dans la matière je ne sait pas trop ou les mettre car mon formulaire et composer d'une adresse email, le nom et le mot de passe merci de m'indiquer la voit !
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
15 avril 2009 à 19:33
15 avril 2009 à 19:33
On peut visionner ton code ?
Sans ça, je ne vois pas comment on pourrait t'aiguiller.
Sans ça, je ne vois pas comment on pourrait t'aiguiller.
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
15 avril 2009 à 19:43
15 avril 2009 à 19:43
je suggère de l'inciter à faire une visite sur siteduzero.com, histoire de voir un peu comment faire simplement ses traitements de données^^ (les tuto sont pas trop mal faits^^) :p
mart03
Messages postés
279
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
5 juin 2012
21
15 avril 2009 à 19:51
15 avril 2009 à 19:51
Voici le code d'inscription.php :
<?php
session_start();// ici on lance la session
$erreur_mail=0;
if($_POST){
//mysql_select_db(martin_feau, clients); //sélection de la base de données
$FORMemail=$_POST['Email'];
$FORMpass=$_POST['password'];
include('dbconnect.php');
$query_rsClient = "SELECT LOGIN FROM identification_tbl WHERE LOGIN = '$FORMemail' ";
$rsClient = mysql_query($query_rsClient , $db) or die(mysql_error());
$totalRows_rsClient = mysql_num_rows($rsClient);
if ($totalRows_rsClient==0)
{
$insertSQL = "INSERT INTO identification_tbl (LOGIN,PASSWORD) VALUES ( '$FORMemail', '$FORMpass')";
$Result1 = mysql_query($insertSQL , $db) or die(mysql_error());
$clientID=mysql_insert_id();//récupère l'identifiant client attibué
// mémorisation des paramètres dans la session
$statut="client";
session_register("clientID");// on enregistre son ID
session_register("statut"); // on enregistre son statut de client
header("Location:index.php"); // ici si tout est ok on redirige le visiteur vers son menu
}
else
{
$erreur_mail=1;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Création d'un compte</title>
<style type="text/css">
<!--
body,td,th {
font-family: Georgia, Times New Roman, Times, serif;
font-size: 16px;
color: #000;
}
body {
background-color: #06F;
}
strong {
font-family: Georgia, "Times New Roman", Times, serif;
font-size: 16px;
color: #F00;
}
u {
font-family: Georgia, "Times New Roman", Times, serif;
font-size: 36px;
color: #000;
}
-->
</style><head></head>
<body>
<div align="center"><u>Création d'un compte</u><br />
<?php
if ($erreur_mail==1)
{
?>
<br />
<br />
<strong>L'émail :<?php echo $FORMemail ?> : existe déjà dans notre base de données Choisissez un autre mail ou utilisez le compte déjà créé <br />
<?php
$erreur_mail=0; // ici on efface la valeur de la variable erreur_mail
}
?>
</strong></div>
<div align="center">
<p> </p>
<form action="inscription.php" method="post" name="Inscription" id="Inscription">
<p>Nom :
<label>
<input type="text" name="Nom" id="Nom" tabindex="1" />
</label>
</p>
<p>Email :
<label>
<input type="text" name="Email" id="Email" tabindex="2" />
</label>
</p>
<p> Mot de passe :
<label>
<input name="password" type="password" id="password" tabindex="3" maxlength="6" />
</label>
6car. Max</p>
<p>
<label>
<input type="submit" name="Envoyer !" id="Envoyer !" value="Envoyer !" tabindex="4" />
</label>
</p>
</form>
</div>
</body>
</html>
Et j'ai un autre fichier dbconnect.php
<?
@$db= mysql_connect('localhost','martin.feau','martin') or die ("la connexion à la base a échoué");
mysql_select_db('martin_feau');
?>
En espèrant que cela vous aiguille
Merci beaucoup !
<?php
session_start();// ici on lance la session
$erreur_mail=0;
if($_POST){
//mysql_select_db(martin_feau, clients); //sélection de la base de données
$FORMemail=$_POST['Email'];
$FORMpass=$_POST['password'];
include('dbconnect.php');
$query_rsClient = "SELECT LOGIN FROM identification_tbl WHERE LOGIN = '$FORMemail' ";
$rsClient = mysql_query($query_rsClient , $db) or die(mysql_error());
$totalRows_rsClient = mysql_num_rows($rsClient);
if ($totalRows_rsClient==0)
{
$insertSQL = "INSERT INTO identification_tbl (LOGIN,PASSWORD) VALUES ( '$FORMemail', '$FORMpass')";
$Result1 = mysql_query($insertSQL , $db) or die(mysql_error());
$clientID=mysql_insert_id();//récupère l'identifiant client attibué
// mémorisation des paramètres dans la session
$statut="client";
session_register("clientID");// on enregistre son ID
session_register("statut"); // on enregistre son statut de client
header("Location:index.php"); // ici si tout est ok on redirige le visiteur vers son menu
}
else
{
$erreur_mail=1;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Création d'un compte</title>
<style type="text/css">
<!--
body,td,th {
font-family: Georgia, Times New Roman, Times, serif;
font-size: 16px;
color: #000;
}
body {
background-color: #06F;
}
strong {
font-family: Georgia, "Times New Roman", Times, serif;
font-size: 16px;
color: #F00;
}
u {
font-family: Georgia, "Times New Roman", Times, serif;
font-size: 36px;
color: #000;
}
-->
</style><head></head>
<body>
<div align="center"><u>Création d'un compte</u><br />
<?php
if ($erreur_mail==1)
{
?>
<br />
<br />
<strong>L'émail :<?php echo $FORMemail ?> : existe déjà dans notre base de données Choisissez un autre mail ou utilisez le compte déjà créé <br />
<?php
$erreur_mail=0; // ici on efface la valeur de la variable erreur_mail
}
?>
</strong></div>
<div align="center">
<p> </p>
<form action="inscription.php" method="post" name="Inscription" id="Inscription">
<p>Nom :
<label>
<input type="text" name="Nom" id="Nom" tabindex="1" />
</label>
</p>
<p>Email :
<label>
<input type="text" name="Email" id="Email" tabindex="2" />
</label>
</p>
<p> Mot de passe :
<label>
<input name="password" type="password" id="password" tabindex="3" maxlength="6" />
</label>
6car. Max</p>
<p>
<label>
<input type="submit" name="Envoyer !" id="Envoyer !" value="Envoyer !" tabindex="4" />
</label>
</p>
</form>
</div>
</body>
</html>
Et j'ai un autre fichier dbconnect.php
<?
@$db= mysql_connect('localhost','martin.feau','martin') or die ("la connexion à la base a échoué");
mysql_select_db('martin_feau');
?>
En espèrant que cela vous aiguille
Merci beaucoup !
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
15 avril 2009 à 19:56
15 avril 2009 à 19:56
Outch.
Ton code a des failles monstrueuses.
Il faut toujours contrôler les valeurs reçues par l'utilisateur.
Ton code a des failles monstrueuses.
Il faut toujours contrôler les valeurs reçues par l'utilisateur.
mart03
Messages postés
279
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
5 juin 2012
21
15 avril 2009 à 19:57
15 avril 2009 à 19:57
Et voila mais comment faire ?
mart03
Messages postés
279
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
5 juin 2012
21
15 avril 2009 à 20:31
15 avril 2009 à 20:31
SVP aider moi !!
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
15 avril 2009 à 20:45
15 avril 2009 à 20:45
tu controles la taille
le type
le contenu
et tu purifies :D
if( strlen($taVar)<2 ){
echo "$taVar n'est pas une information valide"; //on suppose qu'elle est trop courte
}
le type, matte ici: https://www.php.net/manual/fr/function.ctype-alpha.php et là: https://www.php.net/manual/fr/function.is-string.php
le contenu avec du preg https://www.php.net/manual/fr/function.preg-match.php et là https://lumadis.be/regex/test_regex.php
et tu purifies avec https://www.php.net/manual/fr/function.strip-tags.php
sachant qu'avant le moindre traitement/controle, tu applique le trim($taVar) pour t'assurer qu'on n'a pas juste envoyé un espace
le type
le contenu
et tu purifies :D
if( strlen($taVar)<2 ){
echo "$taVar n'est pas une information valide"; //on suppose qu'elle est trop courte
}
le type, matte ici: https://www.php.net/manual/fr/function.ctype-alpha.php et là: https://www.php.net/manual/fr/function.is-string.php
le contenu avec du preg https://www.php.net/manual/fr/function.preg-match.php et là https://lumadis.be/regex/test_regex.php
et tu purifies avec https://www.php.net/manual/fr/function.strip-tags.php
sachant qu'avant le moindre traitement/controle, tu applique le trim($taVar) pour t'assurer qu'on n'a pas juste envoyé un espace
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
15 avril 2009 à 20:42
15 avril 2009 à 20:42
Eh, doucement :)
Je te montre un exemple.
Il ne faut pas utiliser session_register(), je t'invite à consulter la doc php afin de savoir pourquoi.
Les mots de passes doivent-être toujours hashé avant insertion dans une table.
Comme tu peux le constater $erreur est un array servant à contenir les messages d'erreurs afin d'informer l'utilisateur.
Je te laisse faire pour les afficher.
Je te montre un exemple.
<?php session_start(); // ici on lance la session $erreur = array(); if( !empty($_POST) ) { if( !empty($_POST['Email']) && trim($_POST['Email']) ) { if( !preg_match('`^[_-+.\w]{1,64}@[-.\w]{1,64}\.:ALPHA:{2,6}$`', $_POST['Email']) ) $erreur['mail'] = 'Adresse email de format invalide'; } else $erreur['mail'] = 'Adresse email non renseignée'; if( !$erreur ) { if( !empty($_POST['password']) && trim($_POST['password']) ) { if( strlen($_POST['password']) < 6 ) $erreur['password'] = 'Mot de passe trop court'; } else $erreur['password'] = 'Mot de passe non renseigné' } if( !$erreur ) // si l'array est toujours vide { include('dbconnect.php'); $query_rsClient = "SELECT LOGIN FROM identification_tbl WHERE LOGIN = '$FORMemail' "; $rsClient = mysql_query($query_rsClient , $db) or die(mysql_error()); $totalRows_rsClient = mysql_num_rows($rsClient); if( $totalRows_rsClient == 0 ) { // On hashe toujours les mots de passe $insertSQL = "INSERT INTO identification_tbl (LOGIN,PASSWORD) VALUES ('{$_POST['Email']}', '" . sha1($_POST['password']) . "')"; $Result1 = mysql_query($insertSQL , $db) or die(mysql_error()); $_SESSION['clientID'] = mysql_insert_id(); //récupère l'identifiant client attibué $_SESSION['statut'] = 'client'; header("Location: index.php"); // ici si tout est ok on redirige le visiteur vers son menu } else $erreur['email'] = 'Adresse email déjà utilisée par un client'; } } ?>
Il ne faut pas utiliser session_register(), je t'invite à consulter la doc php afin de savoir pourquoi.
Les mots de passes doivent-être toujours hashé avant insertion dans une table.
Comme tu peux le constater $erreur est un array servant à contenir les messages d'erreurs afin d'informer l'utilisateur.
Je te laisse faire pour les afficher.
P@t@ch0n
Messages postés
565
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
28 décembre 2009
85
15 avril 2009 à 20:45
15 avril 2009 à 20:45
Oups, un bout de code a été transformé en lien.
Rajoute 2 paires de crochets autour de :ALPHA:
Rajoute 2 paires de crochets autour de :ALPHA:
mart03
Messages postés
279
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
5 juin 2012
21
15 avril 2009 à 21:00
15 avril 2009 à 21:00
Merci beaucoup a vous tous !!! Merci a toi P@t@ch0n pour la page !