requete sql non envoyé au serveur

requete sql non envoyé au serveur - PHP - Programmation

Marsh Posté le 07-02-2013 à 14:48:42    

Salut tous le monde,
 
je me permet de vous deranger pour une aide sur l'envoie a ma base de donnée de requete pour créer supprimer et modifier une table.
 
Alors voila je cherche a créer un utilisateur via se formulaire :
 

Code :
  1. <form action="Inscription.php" method="post">
  2.         <fieldset><legend>Inscription</legend>
  3.          <table>
  4.            <tr>
  5.               <td><label for="Nom_USER"><strong>Nom*</strong></label></td>
  6.               <td><input type="text" name="Nom_USER" id="Nom_USER" required autofocus/></td>
  7.            </tr>
  8.             <tr>
  9.               <td><label for="Email_USER"><strong>Email*</strong></label></td>
  10.               <td><input type="email" name="Email_USER" id="Email_USER" required placeholder=" exemple@rpb43.com"/></td>
  11.            </tr>
  12.             <tr>
  13.               <td><label for="Password_USER"><strong>Mot de Passe*</strong></label></td>
  14.               <td><input type="Password" name="Password_USER" id="Password_USER" required/></td>  
  15.            </tr>
  16.             <p>Le mot de passe doit contenir des chiffres et des lettres et faire minimun 6 caractères.</p>
  17.            <tr>
  18.               <td><label for="Adresse_USER"><strong>Adresse*</strong></label></td>
  19.               <td><input type="text" name="Adresse_USER" id="Adresse_USER"required/></td>
  20.            </tr>
  21.             <tr>
  22.               <td><label for="CodePostal_USER"><strong>Code Postal*</strong></label></td>
  23.               <td><input type="text" name="CodePostal_USER" id="CodePostal_USER"required/></td>
  24.            </tr>
  25.             <tr>
  26.               <td><label for="Ville_USER"><strong>Ville*</strong></label></td>
  27.               <td><input type="text" name="Ville_USER" id="Ville_USER"required/></td>  
  28.            </tr>
  29.            <tr>
  30.               <td><label for="Telephone_USER"><strong>Telephone*</strong></label></td>
  31.               <td><input type="tel" pattern="^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\
  32. d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$" name="Telephone_USER" id="Telephone_USER"required placeholder="0471000000"/></td>
  33.            </tr>
  34.             <tr>      
  35.               <td><label for="Fax_USER"><strong>Fax</strong></label></td>
  36.               <td><input type="text" name="Fax_USER" id="Fax_USER"/></td>              
  37.            </tr>  
  38.         </table>
  39.                 </fieldset>          
  40.         <input type="image" name="inscription" src="Image/enregistrer.png" alt="Go"/>        
  41.         </form>


 
Je recupere ensuite les données avec un $_POST pour envoyer les bonnes valeur a ma BDD avec ce code php :
 

Code :
  1. if(isset($_POST["inscription"])){
  2.  
  3.   // On regarde si tout les champs sont remplis. Sinon on lui affiche un message d'erreur.  
  4.   if($_POST["Email_USER"] == NULL OR $_POST["Password_USER"] == NULL OR $_POST["Nom_USER"] == NULL OR $_POST["Adresse_USER"] == NULL OR $_POST["Ville_USER"] == NULL OR $_POST["CodePostal_USER"] == NULL OR $_POST["Telephone_USER"] == NULL){
  5.          
  6.      echo "Vous devez remplir tout les champs suivi * !";
  7.   }
  8.     elseif (strlen($_POST['Password_USER']) < 6) { echo'le mot de passe doit contenir minimun 6 caractères'; }
  9.   // Sinon si tout les champs sont remplis alors on recupère les données des champs du formulaire et on l'insere dans la table user pour créer un nouvel utilisateur.
  10.   else{
  11.      $sql = "INSERT INTO USER (Id_USER ,Nom_USER ,Password_USER ,Email_USER ,Adresse_USER ,CodePostal_USER ,Ville_USER ,Telephone_USER ,Fax_USER)
  12.                 VALUES (NULL, '".$_POST['Nom_USER']."', '".$_POST['Password_USER']."', '".$_POST['Email_USER']."', '".$_POST['Adresse_USER']."', '".$_POST['CodePostal_USER']."', '".$_POST['Ville_USER']."', '".$_POST['Telephone_USER']."', '".$_POST['Fax_USER']."'); ";
  13.      
  14.      mysql_query($sql) or die ('Erreur SQL !'.$sql.'</br>'.mysql_error());
  15.     }
  16. }


 
Ce code ne m'affiche aucune erreur mais rien ne se passe au niveau de ma base de données. La connexion est bonne puisque je peux me connecter sur mon site en admin ou non.

Message cité 1 fois
Message édité par Alkenia le 07-02-2013 à 14:50:01
Reply

Marsh Posté le 07-02-2013 à 14:48:42   

Reply

Marsh Posté le 07-02-2013 à 15:55:52    

Qu'as tu testé déjà ?

 

D'abord, vérifier si tu rentre dans les if ou non.

 

Si oui, echo $sql pour récupérer la requête et regarde si elle est correcte. Essaie de la passer dans ton "admin".

 

Fait quand même un echo mysql_error() même si mysql_query() ne renvoie pas false.


Message édité par dwogsi le 07-02-2013 à 15:56:20

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 07-02-2013 à 16:14:48    

Je n'ai rien tester par ce que je vois pas pourquoi ce ne marche pas. Il y a pas si longtemps tous marcher correctement mais maintenant ca ne marche plus. Et j'ai tous verifier connexion BDD, syntax ...
 
Je vais regarder si je rentre dans mes if je vous tiens au courant. Et je mettrai mysql_error()

Reply

Marsh Posté le 07-02-2013 à 16:21:24    

Alors je ne peux pas regarder si je rentre das un if car au moment du clique tous se passe en 1sec et reviens comme au debut. Pour le mysql_error il y est en fin mais pareil aucune erreur sql ou autre je ne comprend pas

Reply

Marsh Posté le 07-02-2013 à 17:33:08    

Pour savoir si tu passes aux bons endroits de ton code, tu n'as qu'a mettre des die('ok'); par exemple.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 07-02-2013 à 17:49:17    

Comment dire, quand je clique sur mon bouton pour envoyer les valeur a ma BDD l'action se passe en une fraction de seconde et recharge la page dans son état initial si tous c'est bien passer donc je ne voie jamais mon ok avec le die('ok')

Reply

Marsh Posté le 07-02-2013 à 17:55:22    

Alkenia a écrit :

Salut tous le monde [...]

Code :
  1. if(isset($_POST["inscription"])){
  2.      $sql = "INSERT INTO USER (Id_USER ,Nom_USER ,Password_USER ,Email_USER ,Adresse_USER ,CodePostal_USER ,Ville_USER ,Telephone_USER ,Fax_USER)
  3.                 VALUES (NULL, '".$_POST['Nom_USER']."', '".$_POST['Password_USER']."', '".$_POST['Email_USER']."', '".$_POST['Adresse_USER']."',
  4. '".$_POST['CodePostal_USER']."', '".$_POST['Ville_USER']."', '".$_POST['Telephone_USER']."', '".$_POST['Fax_USER']."'); ";




 :fou:  [:neernitt]


Message édité par Volkhen le 07-02-2013 à 17:55:54

---------------
Main/Alt1/Alt2/Alt3
Reply

Marsh Posté le 07-02-2013 à 17:58:58    

Oui quel est le probleme ?

Reply

Marsh Posté le 07-02-2013 à 18:13:29    

Pour le problème d'origine, je pencherais pour le <input type="image" qui préfèrerait un type="submit" dans un premier temps.
 
Une fois que ça passe dans la partie qui enregistre, je te conseilles de tester avec un utilisateur qui habiterait pas exemple au "38 rue de l'Armée". Puis tu pourras faire une recherche google sur "requête préparées" / "parameterized statements" et PDO pour une application en php.
Et surtout, on n'enregistre pas un mot de passe en clair dans une base de données ! On le hashe avec bcrypt (pas md5, pas sha1, bcrypt).


---------------
Main/Alt1/Alt2/Alt3
Reply

Marsh Posté le 07-02-2013 à 18:31:11    

Alors pour le type image il fonctionne comme le type submit.  
Pour le cryptage de mot de passe je verrai mais rien n'est très important donc même si ils sont perdu c'est pas très grave. De toute manière c'est avec un compte administrateur qu'on enregistre les nouveaux membres.
 
Qu'est ce que le PDO j'ai vue sa sur plusieurs site mais je ne comprend pas trop la différence avec une utilisation des mysql_
Pour l'exemple je verrai plus tard ce qui m'importe pour le moment c'est de pouvoir créer simple utilisateur sans rien de compliqué =) (sachant que les adresse sont des entreprise donc rarement des 38 rue ... et au pire la saisie se fera sans apostrophe.

Reply

Marsh Posté le 07-02-2013 à 18:31:11   

Reply

Marsh Posté le 07-02-2013 à 19:17:12    

Hello  :hello:  pour savoir si tu rentres dans tes tests c'est simple :  

Code :
  1. if(test){
  2. echo ...
  3. exit(0);
  4. }
  5. elseif(test){
  6. }
  7. else{
  8. $sql = ...
  9. echo $sql;
  10. exit(0);
  11. }


 
Ensuite quelques remarques :  
1. tu récupères les données sans les filtrer directement depuis $_POST/$_GET c'est t'exposer à entrer des données non conformes à ce que tu attends.
2. les passwords en clair c'est dangereux et je ne vois pas en quoi le fait que ce soit une compte admin qui fasses les INSERT soit une "protection".
3. les méthodes mysql sont désormais dépréciées http://www.php.net/manual/fr/mysql [...] oosing.php
4. pourquoi ne pas regarder les logs de PHP qui seront sans doute plus explicites qu'une recherche pas tâtonnements

Reply

Marsh Posté le 08-02-2013 à 08:40:59    

Je vais essayer ce que tu me dis.
 
Pour les test je me répète pas besoin puisque c'est moi qui rentrer les données donc toujours dans le bon format.
Ensuite pour les pass je les crypterai si besoin mais les informations qui sont stocker pour chaque compte ne sont pas très dangereuse si elle se font hacker. Je vais mettre en place le PDO pour que je sois a jour mais pensez-vous que le faite que mes requete marche pas viennes du faite que j'utilise mysql_ ?

Reply

Marsh Posté le 08-02-2013 à 08:57:00    

Je regarde un peu partout sur le net mais je ne comprend rien a comment mettre en place un PDO. Qu'est ce que ce fichier php.ini ? je ne le vois pas chez moi. Ou aussi phpinfo() ?

Reply

Marsh Posté le 08-02-2013 à 09:22:50    

if ($_POST['...'] == null)  ne va pas marcher. Si le champ est vide, $_POST['...'] va valoir chaîne vide et non null. Il vaut mieux utiliser empty() (par contre à éviter si ton champ peut valoir 0) ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-02-2013 à 10:29:17    

Oui j'ai fais quelque modif dont celle ci ^^
 
Et j'ai mis en place mysqli_ car PDO était trop compliqué


Message édité par Alkenia le 08-02-2013 à 10:29:48
Reply

Marsh Posté le 08-02-2013 à 11:36:17    

Problème résolut tout venez du faite que si je ne rentrer pas de donnée dans Fax il m'enregistrer pas. Merci pour votre aide ça ma beaucoup aider surtout les exit(0) ^^. Sur ce bonne continuation et a bientot peut être

Reply

Marsh Posté le 20-02-2013 à 16:46:08    

Un conseil revoit ta requete car on peut faire de l'injection.


Message édité par deejay59 le 20-02-2013 à 16:47:17
Reply

Sujets relatifs:

Leave a Replay

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