[RESOLU] Formulaire inscription problème

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Formulaire inscription problème

Re: Formulaire inscription problème

par luigi77270 » 10 mai 2013, 21:07

Bon bah finalement tout remarche, je ne sais pas comment mais merci mille fois :D

Re: Formulaire inscription problème

par luigi77270 » 10 mai 2013, 21:04

Les champs inscrit dans le IF sont rempli dans le formulaire mais il y a toujours un problème on dirait :s

Re: Formulaire inscription problème

par moogli » 10 mai 2013, 20:50

tant que c'est un des champs du if oui !

Re: Formulaire inscription problème

par luigi77270 » 10 mai 2013, 20:37

Merci de vos réponses !Il y à un soucis dans le code que tu ma corriger, en effet, tous les champs n'étais pas obligatoires, et donc maintenant on est obliger de remplir tous les champs :s

Rectification: Excuse moi j'avais mal compris le code, mais dés que je ne remplis pas un champs, sa me dit quand même que des champs sont vide

Re: Formulaire inscription problème

par moogli » 10 mai 2013, 20:00

salut,


vu l'erreur il manque une parenthèse fermante en fin de ligne précédente.

tu en ouvre une après le première or mais ne la referme pas.

quite à être en formation je te suggère d'utiliser du code à jour, donc exit la balise font, utilise un span et une classe css.
tu devrais fait faire l'accord dans la phrase en cas d'erreur s'il n'y qu'un champs sans astérisque (sinon attend toi a voir une gros avec des braie blanche et bleu et un p'tit chien blanc). alors il peux rester vide, sinon seuls les champs ..........

les lignes 4 à 49 sont totalement inutile autant faire un test direct dans le if empty prennant en compte le fait que la variable peux le pas exister (sans erreur).
Du coup tu garde l'utilisation de $_POST, c’est plus long a écrire mais tu ne perd l'origine de la variable et ne risque pas une collision.
ou les truc illogique comme : $email = $_POST['prenom'], $url = $_POST['nationalite'];, $url = $_POST['numero_voie']; etc etc

en même temps utilise l'extension mysqliet non l'extension mysql qui est obsolète.

le "or die ( ....)" est aussi a proscrire il est préférable d'avoir une capture de l'erreur correcte et un affiche en conséquence plutot que de laisser l'internante sur une page blanche ou pire juste une requête SQL qui s'affiche !

J'ai corrigé ton code en y ajoutant un minimum de sécurité sur la requête SQL.
<?php
// On vérifie si les champs sont vides
if (!empty($_POST['civilite']) && !empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['date_naissance']) &&
    !empty($_POST['lieu_naissance']) && !empty($_POST['nationalite']) && !empty($_POST['numero_voie']) &&
    !empty($_POST['voie']) && !empty($_POST['commune']) && !empty($_POST['profession']) && !empty($_POST['fixe'])
    && !empty($_POST['courriel']) && !empty($_POST['site']) && !empty($_POST['cotisation'])
    && !empty($_POST['date_certification']) && !empty($_POST['medecin'])
) {

    // connexion à la base
    $host = '127.0.0.1'; // Ici on déclare nos valeurs
    $user = 'root';
    $bdd = 'adherent';
    $password = '';
    $link = mysqli_connect($host, $user, $password, $bdd);

    // on écrit la requête sql
    $sql = 'INSERT INTO adherent(civilite, nom, prenom, date_naissance, lieu_naissance, nationalite, numero_voie, voie,
             lieu_dit, commune, profession, fixe, portable, courriel, site, aikido, taichichuan, ffwush, feqgae, ffst, afatj,
             Cotisation, date_certification, medecin)
             VALUES(\'' . mysqli_real_escape_string($link, $_POST['civilite']) . '\',
             \'' . mysqli_real_escape_string($link, $_POST['civilite']) . '\',
             \'' . mysqli_real_escape_string($link, $_POST['prenom']) . '\',
             \'' . mysqli_real_escape_string($link, $_POST['date_naissance']) . '\',
             \'' . mysqli_real_escape_string($link, $_POST['lieu_naissance']) . '\',
             \'' . mysqli_real_escape_string($link, $_POST['nationalite']) . '\',
             \'' . mysqli_real_escape_string($link, $_POST['numero_voie']) . '\',
             \'' . mysqli_real_escape_string($link, $_POST['voie']) . '\',
             \'' . (isset($_POST['lieu_dit']) ? mysqli_real_escape_string($link, $_POST['lieu_dit']) : '') . '\',
             \'' . mysqli_real_escape_string($link, $commune) . '\',
             \'' . mysqli_real_escape_string($link, $profession) . '\',
             \'' . mysqli_real_escape_string($link, $fixe) . '\',
             \'' . (isset($_POST['portable']) ? mysqli_real_escape_string($link, $_POST['portable']) : '') . '\',
             \'' . mysqli_real_escape_string($link, $courriel) . '\',
             \'' . (isset($_POST['site']) ? mysqli_real_escape_string($link, $_POST['site']) : '') . '\',
             \'' . (isset($_POST['aikido']) ? mysqli_real_escape_string($link, $_POST['aikido']) : '') . '\',
             \'' . (isset($_POST['taichichuan']) ? mysqli_real_escape_string($link, $_POST['taichichuan']) : '') . '\',
             \'' . (isset($_POST['ffwush']) ? mysqli_real_escape_string($link, $_POST['ffwush']) : '') . '\',
             \'' . (isset($_POST['feqgae']) ? mysqli_real_escape_string($link, $_POST['feqgae']) : '') . '\',
             \'' . (isset($_POST['ffst']) ? mysqli_real_escape_string($link, $_POST['ffst']) : '') . '\',
             \'' . (isset($_POST['afatj']) ? mysqli_real_escape_string($link, $_POST['afatj']) : '') . '\',
             \'' . mysqli_real_escape_string($link, $_POST['cotisation']) . '\',
             \'' . mysqli_real_escape_string($link, $_POST['fdate_certification']) . '\',
             \'' . mysqli_real_escape_string($link, $_POST['medecin']) . '\')';

    // on insère les informations du formulaire dans la table
    $ret = mysqli_query($link, $sql);
    if ($ret === false) {
        echo '<p class="erreur">Erreur SQL !<br />' . $sql . '<br/>' . mysqli_error($link);
    } else {
        // on affiche le résultat pour le visiteur
        echo 'Vos infos on été ajoutées.';
    }
    mysqli_close($link); // on ferme la connexion
} else {
    echo '<span class="erreur">Seul les champs qui ne pas marqué d\'un ast&eacute;risque, ne sont pas obligatoire</span>';
}

?>
 
@+

Re: Formulaire inscription problème

par ghost5922 » 10 mai 2013, 19:15

Bonjour,

OR(empty($nom) il a pas une erreur ici je suis sur iPhone dur de voir ton code :)

Formulaire inscription problème

par luigi77270 » 10 mai 2013, 19:03

Bonjour à tous et à toute,
Pour mon projet de fin d'année je dois créer un site web avec une base de donnée, du PHP et du HTML, bref un site quoi...
Le problème est qu'il faut faire un formulaire d'inscription et celui que j'ai essayé de faire actuellement à un problème mais je n'arrive pas à voir où.
Je demande donc votre aide pour m'aider à résoudre ce problème très embêtant.
Voici mon code:
<?php

// On commence par récupérer les champs
if(isset($_POST['civilite']))      $nom=$_POST['civilite'];
else      $civilite="";
if(isset($_POST['nom']))      $prenom=$_POST['nom'];
else      $nom="";
if(isset($_POST['prenom']))      $email=$_POST['prenom'];
else      $prenom="";
if(isset($_POST['date_naissance']))      $icq=$_POST['date_naissance'];
else      $date_naissance="";
if(isset($_POST['lieu_naissance']))      $titre=$_POST['lieu_naissance'];
else      $lieu_naissance="";
if(isset($_POST['nationalite']))      $url=$_POST['nationalite'];
else      $nationalite="";
if(isset($_POST['numero_voie']))      $url=$_POST['numero_voie'];
else      $numero_voie="";
if(isset($_POST['voie']))      $url=$_POST['voie'];
else      $voie="";
if(isset($_POST['lieu_dit']))      $url=$_POST['lieu_dit'];
else      $lieu_dit="";
if(isset($_POST['commune']))      $url=$_POST['commune'];
else      $commune="";
if(isset($_POST['profession']))      $url=$_POST['profession'];
else      $profession="";
if(isset($_POST['fixe']))      $url=$_POST['fixe'];
else      $fixe="";
if(isset($_POST['portable']))      $url=$_POST['portable'];
else      $portable="";
if(isset($_POST['courriel']))      $url=$_POST['courriel'];
else      $courriel="";
if(isset($_POST['site']))      $url=$_POST['site'];
else      $site="";
if(isset($_POST['aikido']))      $url=$_POST['aikido'];
else      $aikido="";
if(isset($_POST['ffwush']))      $url=$_POST['ffwush'];
else      $ffwush="";
if(isset($_POST['feqgae']))      $url=$_POST['feqgae'];
else      $feqgae="";
if(isset($_POST['ffst']))      $url=$_POST['ffst'];
else      $ffst="";
if(isset($_POST['afatj']))      $url=$_POST['afatj'];
else      $afatj="";
if(isset($_POST['cotisation']))      $url=$_POST['cotisation'];
else      $cotisation="";
if(isset($_POST['date_certification']))      $url=$_POST['fdate_certification'];
else      $date_certification="";
if(isset($_POST['medecin']))      $url=$_POST['medecin'];
else      $feqgae="";

// On vérifie si les champs sont vides
if (empty($civilite) OR(empty($nom) OR empty($prenom) OR empty($date_naissance) OR empty($lieu_naissance) OR empty($nationalite) OR empty($numero_voie) OR empty($voie) OR empty($commune) OR empty($profession) OR empty($fixe) OR empty($courriel) OR empty($cotisation) OR empty($date_certification) OR empty($medecin))
    {                 <-------------------------LE PROBLEME VIENT DE CETTE LIGNE!
    echo '<font color="red">Attention, seul le champs sans astérix peuvent rester vide !</font>';
    }

// Aucun champ n'est vide, on peut enregistrer dans la table
else     
    {
       // connexion à la base
	   $host = '127.0.0.1' ;   // Ici on déclare nos valeurs
$user = 'root' ;
$bdd = 'adherent' ;
$password  = '' ;
 
// On récupère les valeurs de retours
$link = mysql_connect($host, $user, $password) or die("erreur de connexion au serveur");
mysql_select_db($bdd, $link) or die("erreur de connexion a la base de donnees");
 
    
    // on écrit la requête sql
    $sql = "INSERT INTO adherent(civilite, nom, prenom, date_naissance, lieu_naissance, nationalite, numero_voie, voie, lieu_dit, commune, profession, fixe, portable, courriel, site, aikido, taichichuan, ffwush, feqgae, ffst, afatj, Cotisation, date_certification, medecin) 
			VALUES('$civilite','$nom','$prenom','$date_naissance','$lieu_naissance','$nationalite','$numero_voie','$voie','$lieu_dit','$commune','$profession','$fixe','$portable','$courriel','$site','$aikido','$taichichuan','$ffwush','$feqgae','$ffst','$afatj','$Cotisation','$date_certification','$medecin')";
    
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on affiche le résultat pour le visiteur
    echo 'Vos infos on été ajoutées.';

    mysql_close();  // on ferme la connexion
    } 

?>
Le message intervient donc à la ligne 75 soit où j'ai fais la marque, le message dit "Parse error: syntax error, unexpected '{' in F:\EasyPHP-5.3.3\EasyPHP-5.3.3\www\site\SQL\inscription.php on line 75".
Merci d'avance !