Problème de mise en relation formulaire\BaseDeDonnée + Erreur.

Problème de mise en relation formulaire\BaseDeDonnée + Erreur. - PHP - Programmation

Marsh Posté le 07-03-2017 à 19:09:50    

Bonjour,  
Je me permet de vous demandez de l'aide car ça vas faire maintenant 3 mois que je cherche une solution a mon problème de base donnée.  
Tout d'abord j'ai créer un site en HTML classique. Il contient 3 pages dont un avec un formulaire et c'est la que intervient mon problème.  
J'utilise easyphp.  
 
Présentation des documents :
 
Mon formulaire de commande :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
  2. <html>  
  3. <head>
  4.  <title> formulaire de commande </title>
  5. <link rel="stylesheet" href="monstyle.css">  
  6. </head>
  7. <body>  
  8.  <h1> Formulaire **** pour client. </h1>
  9. <form name="Formulaire" action="traitement.php" onsubmit="return validateForm()" method="post">
  10. <fieldset>
  11.  <legend>Informations de commande :</legend>
  12. <label for="societe">Nom de l'entrepise : </label>
  13. <input type="text" name="entreprise" id="entreprise"><br>
  14. <br>
  15. <label for="societe">Materiels necessaire : </label>
  16. <input type="text" name="materiels" id="materiels"><br>
  17. <br>
  18. <label for="piece">Nom de la piece : </label>  
  19. <input name="piece" id="NomPiece"></input> <br>
  20. <br>
  21. <label for="date"> Date : </label>
  22. <input type="date" /><br>
  23. <br>
  24. <label for="telephone"> Numero de telephone : </label>
  25. <input type="tel" /><br>
  26. <br>
  27.    </fieldset>
  28.    <br>
  29.    <fieldset>
  30.    <legend>Indentification :</legend>
  31. <label for="pseudo">Votre pseudo :</label>
  32.    <input type="text" name="pseudo" id="pseudo" /><br>
  33. <br>
  34. <label for="pass">Votre mot de passe :</label>
  35.    <input type="password" name="pass" id="pass" /> <br>
  36. <br>
  37.    </fieldset>
  38.    <br>
  39. <input type="submit" value="Envoyer">
  40. <INPUT TYPE=RESET VALUE="Effacer">
  41.   </form>
  42.  <ul class="navbar">
  43. <li><a href="mapage.html" rel="nofollow noopener noreferrer" target="_blank">Index</a>  
  44. <li><a href="souspartie.html" rel="nofollow noopener noreferrer" target="_blank">Premiere Partie</a>  
  45. <li><a href="souspartie2.html" rel="nofollow noopener noreferrer" target="_blank">Deuxieme Partie</a>  
  46. </ul>
  47. </body>
  48. </html>


 
Et mon document traitement.php :

Code :
  1. <?php
  2. // Parametres mysql à remplacer par les vôtres
  3. define('DB_SERVER', 'localhost'); // serveur mysql
  4. define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
  5. define('DB_SERVER_PASSWORD', ''); // mot de passe
  6. define('DB_DATABASE', 'projet_numeca'); // nom de la base
  7.  
  8. // Connexion au serveur mysql
  9. $base= mysqli_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
  10.  
  11. /* Vérification de la connexion */
  12. if (mysqli_connect_errno()) {
  13.    printf("Échec de la connexion : %s\n", mysqli_connect_error());
  14.    exit();
  15. }
  16.  
  17. $msg_erreur = "Erreur. Les champs suivants doivent etre obligatoirement remplis :<br/><br/>";
  18. $msg_ok = "Votre demande a bien été prise en compte.";
  19. $message = $msg_erreur;
  20. // vérification des champs  
  21. if (isset($_POST['entreprise']))
  22. {
  23.    $entreprise = stripslashes($_POST['entreprise']); // On enlève les slashs qui se seraient ajoutés automatiquement
  24.    $entreprise = htmlspecialchars($entreprise); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  25.    $entreprise = nl2br($entreprise); // On crée des <br /> pour conserver les retours à la ligne
  26.    
  27.    // On fait passer notre texte à la moulinette des regex
  28.    $entreprise = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $entreprise);
  29.    $entreprise = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $entreprise);
  30.    $entreprise = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $entreprise);
  31.    $entreprise = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" rel="nofollow noopener noreferrer" target="_blank">$0</a>', $entreprise);
  32.    // Et on affiche le résultat. Admirez !
  33.    echo $entreprise . '<br /><hr />';
  34. }
  35. if (isset($_POST['materiels']))
  36. {
  37.    $materiels = stripslashes($_POST['materiels']); // On enlève les slashs qui se seraient ajoutés automatiquement
  38.    $materiels = htmlspecialchars($materiels); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  39.    $materiels = nl2br($materiels); // On crée des <br /> pour conserver les retours à la ligne
  40.    
  41.    // On fait passer notre texte à la moulinette des regex
  42.    $materiels = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $materiels);
  43.    $materiels = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $materiels);
  44.    $materiels = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $materiels);
  45.    $materiels = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" rel="nofollow noopener noreferrer" target="_blank">$0</a>', $materiels);
  46.    // Et on affiche le résultat. Admirez !
  47.    echo $materiels . '<br /><hr />';
  48. }
  49. if (isset($_POST['piece']))
  50. {
  51.    $piece = stripslashes($_POST['piece']); // On enlève les slashs qui se seraient ajoutés automatiquement
  52.    $piece = htmlspecialchars($piece); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  53.    $piece = nl2br($piece); // On crée des <br /> pour conserver les retours à la ligne
  54.    
  55.    // On fait passer notre texte à la moulinette des regex
  56.    $piece = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $piece);
  57.    $piece = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $piece);
  58.    $piece = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $piece);
  59.    $piece = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" rel="nofollow noopener noreferrer" target="_blank">$0</a>', $piece);
  60.    // Et on affiche le résultat. Admirez !
  61.    echo $piece . '<br /><hr />';
  62. }
  63. if (isset($_POST['date']))
  64. {
  65.    $date = stripslashes($_POST['date']); // On enlève les slashs qui se seraient ajoutés automatiquement
  66.    $date = htmlspecialchars($date); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  67.    $date = nl2br($date); // On crée des <br /> pour conserver les retours à la ligne
  68.    
  69.    // On fait passer notre texte à la moulinette des regex
  70.    $date = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $date);
  71.    $date = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $date);
  72.    $date = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $date);
  73.    $date = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" rel="nofollow noopener noreferrer" target="_blank">$0</a>', $date);
  74.    // Et on affiche le résultat. Admirez !
  75.    echo $date . '<br /><hr />';
  76. }
  77. if (isset($_POST['pseudo']))
  78. {
  79.    $pseudo = stripslashes($_POST['pseudo']); // On enlève les slashs qui se seraient ajoutés automatiquement
  80.    $pseudo = htmlspecialchars($pseudo); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  81.    $pseudo = nl2br($pseudo); // On crée des <br /> pour conserver les retours à la ligne
  82.    
  83.    // On fait passer notre texte à la moulinette des regex
  84.    $pseudo = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $pseudo);
  85.    $pseudo = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $pseudo);
  86.    $pseudo = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $pseudo);
  87.    $pseudo = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" rel="nofollow noopener noreferrer" target="_blank">$0</a>', $pseudo);
  88.    // Et on affiche le résultat. Admirez !
  89.    echo $pseudo . '<br /><hr />';
  90. }
  91. if (isset($_POST['pass']))
  92. {
  93.    $pass = stripslashes($_POST['pass']); // On enlève les slashs qui se seraient ajoutés automatiquement
  94.    $pass = htmlspecialchars($pass); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  95.    $pass = nl2br($pseudo); // On crée des <br /> pour conserver les retours à la ligne
  96.    
  97.    // On fait passer notre texte à la moulinette des regex
  98.    $pass = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $pass);
  99.    $pass = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $pass);
  100.    $pass = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $pass);
  101.    $pass = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" rel="nofollow noopener noreferrer" target="_blank">$0</a>', $pass);
  102.    // Et on affiche le résultat. Admirez !
  103.    echo $pass . '<br /><hr />';
  104. }
  105. if (isset($_POST['telephone']))
  106. {
  107.    $telephone = stripslashes($_POST['telephone']); // On enlève les slashs qui se seraient ajoutés automatiquement
  108.    $telephone = htmlspecialchars($telephone); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  109.    $telephone = nl2br($telephone); // On crée des <br /> pour conserver les retours à la ligne
  110.    
  111.    // On fait passer notre texte à la moulinette des regex
  112.    $telephone = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $telephone);
  113.    $telephone = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $telephone);
  114.    $telephone = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $telephone);
  115.    $telephone = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0" rel="nofollow noopener noreferrer" target="_blank">$0</a>', $telephone);
  116.    // Et on affiche le résultat. Admirez !
  117.    echo $telephone . '<br /><hr />';
  118. }
  119.  $sql = "INSERT INTO projet_numeca VALUES ('', '".$entreprise."', '".$materiels."', '".$piece."', '".$pseudo."','".$pass."', now())";
  120.  $res = mysql_query($sql);
  121.  
  122.  if ($res) {
  123.    echo $msg_ok;
  124.  } else {
  125.    echo mysql_error();
  126.  }
  127. ?>

 
 
Énonciation des problèmes rencontrer :
 
Et donc quand je remplis mon formulaire et que je fais "envoyer" :  
 
1 - Ca m'envois directement sur

Code :
  1. http://127.0.0.1/edsa-Projet/traitement.php

 
 
2 - J'ai tous ca qui s'affiche :

Code :
  1. auchan
  2. bois, fer
  3. turbine
  4. pseudo
  5. mdp
  6. Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\traitement.php on line 132
  7. Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\traitement.php on line 132
  8. Warning: mysql_query(): A link to the server could not be established in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\traitement.php on line 132
  9. Access denied for user ''@'localhost' (using password: NO)


 
J'arrive donc a avoir le résultat de "entreprise", "materiels", "Piece", "pseudo", "mdp".  
Sauf que je les reçois pas sur ma base de donnée mais juste après avoir remplis mon formulaire. (a la vue de tous ?)  
 
3 - Mon formulaire n'envoit aucun résultat a ma base de données qui est pourtant bien définit.  
 
Merci de votre aide et si il vous faut des indications pour résoudre ce problème dites le moi.  
Au revoir.

Reply

Marsh Posté le 07-03-2017 à 19:09:50   

Reply

Marsh Posté le 07-03-2017 à 20:34:17    

Alors... il y a pas mal de choses à dire...
 
Tout d'abord en ce qui concerne le problème avec la base de donnée.
Quand on configure une base de données, on y créé des utilisateurs pour se connecter de certains endroits uniquement.
Il existe par défaut un compte administrateur ayant tous les privilèges et pouvant faire tout ce qu'il veut.
 
Ton erreur indique que la connexion en tant que "root" sans mot de passe a été rejetée.
Il s'agit très probablement d'une règle de sécurité visant à obliger la saisie d'un mot de passe sur le compte administrateur de la base de données. On ne laisse JAMAIS un compte administrateur sans mot de passe.
Ensuite, il convient généralement de créer un utilisateur dédié pour les application qui vont se connecter à la base de données.
Mettre un mot de passe sur le compte "root" du serveur mysql devrait régler ton problème. Mais je te suggère vivement de créer un compte applicatif dédié avec une base de données également dédiée à ton application.
 
Et il y a d'autres problèmes dans ce que tu as posté ici :
 
- L'injection SQL...  
 
Il existe plein de documentation, mais pour te faire comprendre par l'exemple, regarde ce qui se passera lors de ton traitement (lorsque tu auras résolu ton problème de connexion) si tu saisis une apostrophe dans le nom de l'entreprise dans ton formulaire.. Si tu utilises une version récente de PHP (Sans l'option "magic quotes" par défaut), ta requête devrait échouer.
La documentation de mysqli_real_escape_string devrait t'aider à comprendre...
 
- fonctions mysql et mysqli
 
Tu fais des mixs : tu utilises une fonction "mysqli" pour la connexion, et une fonction de type "mysql" pour exécuter ta requête d'insert.
Comme le suggère PHP, tu devrais utiliser PDO, qui donne des méthodes natives de protection contre l'injection SQL et une implémentation objet de la connexion de base de données.
 
En espérant t'avoir aidé :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed