IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

formulaire de donnée qui bug


Sujet :

Langage PHP

  1. #1
    Membre à l'essai Avatar de sienna
    Femme Profil pro
    Webmaster
    Inscrit en
    Juin 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2016
    Messages : 3
    Par défaut formulaire de donnée qui bug
    bonjour

    Ca fait 2 semaine que je débute avec php, un grand merci a vos tutos qui sont géniaux, du coup je me suis entrainée sur une page test pour récupérer mes donnés formulaire directement dans un fichier .txt puis par envoie mail mais rien n'apparait ni du coté mail ni du coté txt .Du coup j'ai changée pour que les donnés vont directement vers une base de donné mysql de l'herbergeur en ayant bien configurée le phpmyadmin... mais idem ca ne fonctionne pas, depuis 2 jours j'essaye de comprendre ce qui ne fonctionne pas( apache, synthaxe…)j’ai cherchée un peu partout mais je ne vois pas


    voici ma page test de questionformulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <!doctype html>
    <html>
    <head>
    <link href="style.css" rel="stylesheet">
    <meta charset="UTF-8">
    <title>PAGETEST</title>
    </head>
     
    <body>
     
    <form method="post" action="MONSCRIPT.php">
      <p><br> 
      </br>
      </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>
        <input id="identifiant" type="text" name="identifiant" placeholder="identifiant" required autofocus>
     
        <input id="password" type="password" name="password" required autofocus> 
      </p>
    <input type="submit" formaction="PAGETEST2.html" onClick="PAGETEST2.html" value="Valider">
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
    </form>
    </body>
    </html>

    MONSCRIPT ===>txt /mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php 
    $fp = fopen("donnes.txt", "a");
    $identifiant=utf8_decode($_POST["identifiant"]);
    $password==utf8_decode($_POST["password"]);
     
     
    $to='******@******';
     
    echo( "Votre identifiant: <b>".$identifiant ."</b><br>\n" ) ;
    echo( "Votrepassword: <b>".$password ."</b><br>\n" ) ;
    fclose($fp);
    ?>


    Script===> mysql/mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
     
     
    	$DB_host = ***;
    	$DB_login = ****; 
    	$DB_pass = ******; 
    	$DB_select = *****; 
     
    	// Connexion à notre base de donnée
    	$con = mysql_connect($DB_host, $DB_login, $DB_pass); 
        if (!$con) { 
    			die('Erreur de connexion: ' . mysql_error()); 
    			}
        $db= mysql_select_db($DB_select, $con);
     
     
    	$identifiant=mysql_real_escape_string($_POST["identifiant"]);
    	$password=mysql_real_escape_string($_POST["password"]);
     
     
        // S'il l'on met un identifiant
    	if ((isset($_POST["identifiant"]))&&($_POST["identifiant"]!="")){
     
     
    				// S'il l'on met un mot de passe
    				if ((isset($_POST["password"]))&&($_POST["password"]!="")){
     
    	                   // On crée une variable contenant les identifiants
    	                   $all = 'Identifiant : ' . $_REQUEST['identifiant']. "\n". 'password : ' . $_REQUEST['password'] ;
     
     
    	                   // On envoi les identifiants à notre adresse mail voulu
    	                   mail('*******@******','Formulaire', $all );
     
    					   // On vérifie que les identifiants n'ont pas été déjà enregistrés
    					   $SQL="SELECT * FROM `*********`.`****` WHERE identifiant='$identifiant' AND password='$password'";
                           $res=mysql_query($SQL);
     
    					   // Si les identifiants ne sont pas déjà présent
                           if(mysql_num_rows($res)==0){
    							   // On ajoute les identifiants à notre base de donnée.
    							   $SQL="INSERT INTO `***********`.`****` (`identifiant` ,`password`)VALUES ('$identifiant',  '$password')";
    							   $res=mysql_query($SQL);
     
    					   }
     
    	            }
     
    	}
    	mysql_close(); 
     
    ?>
    <?php  ?>
    <html><head><meta http-equiv='refresh' content='0; URL=http://mapagetest2.lt/test2.html'></head><body></body></html>

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bonsoir,

    Procédons par étape pour déboguer ton code.

    Où veux-tu envoyer les données de ton formulaire? Tu as deux informations divergentes dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="MONSCRIPT.php">
    Indique que les données doivent être envoyées à MONSCRIPT.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" formaction="PAGETEST2.html" onClick="PAGETEST2.html" value="Valider">
    Indique que les données doivent être envoyées à PAGETEST2.html
    l'attribut formaction a la priorité et les données dont donc envoyées à PAGETEST2.html. Est-ce ce que tu veux?

    Par ailleurs, formaction est un attribut rarement utilisé et source de confusion. Il vaut mieux utiliser simplement l'attribut "action" de form.

    Une fois que tu as décidé où envoyer tes données, vérifie déjà si les données sont bien transmises avec un

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Déjà quelques conseils :
    - indente proprement ton code, ça sera plus facile pour en suivre le déroulement
    - l'extension mysql est obsolète, apprends directement PDO
    - utilise $_REQUEST uniquement quand ta source peut être variable, sinon utilise $_POST / $_GET explicitement.
    - met ta connexion à la base de données dans un fichier separé ; ca t'évite de la repeter partout ou tu en as besoin.

    L'envoi d'un mail n'est pas la chose la plus simple à réaliser car les serveurs et les clients de messagerie sont équipés de filtres antispam qui ont tendance à mettre directement à la poubelle les mails envoyés sauvagement depuis un petit script php.

    Concernant ton script qui écrit dans le fichier, tu as oublié d'écrire dans le fichier. Tu pourrais utiliser simplement la fonction file_put_contents().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $texte = "Votre identifiant: " . $_POST["identifiant"] . "<br/>\r\n";
    file_put_contents('donnees.txt', $texte, FILE_APPEND);
    Au passage les balises <b> pour mettre en gras son obsolètes aussi, utilise des styles CSS.

    Pour le script dans la base de données, écrivons le en PDO pour commencer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php
     
     	$DB_host = ***;
    	$DB_login = ****; 
    	$DB_pass = ******; 
    	$DB_select = *****;
     
            if (!empty($_POST['identifiant']) && !empty($_POST['password'])) {
     
    	      $pdo = new PDO('mysql:host=' . $DB_host . ';dbbame=' . $DB_select, $DB_login, $DB_pass);
     
                  // pour le debugage uniquement
                  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    	      $sql = "SELECT COUNT(*) FROM `*********`.`****` WHERE identifiant = ?";
                  $sth = $pdo->prepare($sql);
                  $sth->execute($_POST['identifiant']);
                  $result = $sth->fetchColumn();
     
                  if ($result === 0) {
    			$sql = "INSERT INTO `***********`.`****` (`identifiant` ,`password`) VALUES (?, ?)";
    			$sth = $pdo->prepare($sql);
    			$sth->execute($_POST['identifiant'], $_POST['password']);
                            header('Location: http://mapagetest2.lt/test2.html');
    	      }
                  else {
                          echo 'Identifiant déjà inscrit';
                  }
    }
    Dans la première requête, on ne cherche que l'identifiant, sinon tu inscrirais deux fois le même identifiant avec des mots de passe différents.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre à l'essai Avatar de sienna
    Femme Profil pro
    Webmaster
    Inscrit en
    Juin 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2016
    Messages : 3
    Par défaut
    merci de vos reponses
    j'ai tout recommencer depuis zero et ca fonctionne avec le script php reecrit, le problème venait du fait que mes fichiers n'avait pas l'autorisation de lecture et ecriture

    j'aurais une derniere petite question mais j'essaie de chercher un peu si je trouve pas je vous demanderai

    merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/04/2010, 18h27
  2. Réponses: 9
    Dernier message: 15/01/2010, 16h43
  3. données qui ne s'affichent pas dans le formulaire
    Par zeloutre dans le forum Access
    Réponses: 16
    Dernier message: 04/10/2006, 15h29
  4. [RCP]tuto Ibm qui bug
    Par sglug dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 03/10/2005, 15h11
  5. Travailler sur des données qui doivent être triées
    Par haypo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/07/2003, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo