Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
2056 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Problème d'enregistrement en base

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Problème d'enregistrement en base

n°1892009
drmoh
Posté le 06-06-2009 à 18:30:50  profilanswer
 

salùù tout le monde je ss nouveau sur le forum et je ss débutant en php  
 
dernièrement j'ai eu un problème dans le script de mon page d'inscription  
 
premièrement voila la partie important de mon script  

Citation :


.
..
...
if($mysql->requete("INSERT INTO membres VALUES('','".$pseudo."','".md5($_POST['passe'])."',".$_POST['sexe'].",".mktime(0,0,0,$_POST['mois'],$_POST['jour'],$_POST['annee']).",'".$_POST['ville']."',0,0)",0,0,1))
    {
    $bienvenu = "bienvenue sur ZVJ web site bla bla bla ...";
                                $admine='admine';
 
     
                 mysql_query("INSERT INTO messages VALUES('', '".$admine."', '".$bienvenu."', '".$admine."', '".$pseudo."')" );
     
     session_start();  
     $_SESSION['pseudo'] = $pseudo;
     $_SESSION['pass'] = $_POST['passe'];  
     header('Location: conex.php');
    }
    else
    {
     header('location:inscription.php?confirm=5');
    }
...
..
.
.


 
ce scripte est fait pour enregistrer le nouveau membre puis de envoyer un message de bienvenu  
 
voila ce que ce passe :
le membre s'enregistre normalement mé le message non plus  :??:  
 
voila la table message :
http://img141.imageshack.us/img141/7050/tableq.jpg
 
merci de votre repense    !!  :hello:
 
 
Édité par Elmoricq : modification du titre du sujet (cf. règles de la catégorie).


Message édité par Elmoricq le 06-06-2009 à 22:13:41
mood
Publicité
Posté le 06-06-2009 à 18:30:50  profilanswer
 

n°1892016
Profil sup​primé
Posté le 06-06-2009 à 19:04:39  answer
 

Premièrement, je vois que tu utilises un objet ($mysql) pour exécuter la première requête, et puis ensuite tu utilises mysql_query, pourquoi ?
Ensuite, ta méthode requete() de ton objet $mysql échappe-t-elle les données $_POST ? Sinon, il est possible d'injecter du code SQL (voir injection SQL dans google).
Après, tu n'est pas obligé de faire :

Code :
  1. mysql_query("INSERT INTO messages VALUES('', '".$admine."', '".$bienvenu."', '".$admine."', '".$pseudo."')" );


En effet, les variables contenues au sein de chaines délimitées par des guillemets doubles sont interprétées sans avoir recours à la concaténation. Une version plus simple et plus lisible pourrait être :

Code :
  1. mysql_query("INSERT INTO messages VALUES('', '$admine', '$bienvenu', '$admine', '$pseudo')" );


Après, j'ai un doute sur la façon dont tu as conçu tes tables. Par exemple, inscri_ou_pas devrait être inscrit_ou_pas (tu peux même trouver un nom plus simple) et le type ne devrait pas être "text" mais "boolean". Et puis, dstina devrait à mon avis contenir un entier représentant l'ID du membre destinataire ;), tout comme pseudo qui contiendra l'ID de l'envoyeur.

n°1892018
jonas3
Posté le 06-06-2009 à 19:07:54  profilanswer
 

j'aime les nom de tes champs sql!  
 

Citation :


le membre s'enregistre normalement mé le message non plus


 
Quel message?
 
t'as des messages d'erreurs qui apparaissent?


---------------
http://petitjonas.blogspot.com/
n°1892019
Profil sup​primé
Posté le 06-06-2009 à 19:09:57  answer
 

jonas3 a écrit :

j'aime les nom de tes champs sql!  
 

Citation :


le membre s'enregistre normalement mé le message non plus



1)
Quel message?
 
2)t'as des messages d'erreurs qui apparaissent?


1) Le message de bienvenue (c'est ce que j'ai compris)
2)Très juste, rajoute un echo mysql_error(); après l'appel de mysql_query(), drmoh.

n°1892072
drmoh
Posté le 06-06-2009 à 22:09:00  profilanswer
 


 
oui enfaite je crois voila le code qui est fait pour ça

Code :
  1. if(isset($_POST['pseudo']) AND !eregi("[\^'?\\]",$_POST['pseudo']) AND isset($_POST['ville']) AND !eregi("[\^'\\]",$_POST['ville']) AND strlen($_POST['pseudo'])<=25 AND strlen($_POST['pseudo'])>=3 AND isset($_POST['jour']) AND is_numeric($_POST['jour']) AND $_POST['jour']>0 AND $_POST['jour']<32 AND isset($_POST['mois']) AND is_numeric($_POST['mois']) AND $_POST['mois']>0 AND $_POST['mois']<13 AND isset($_POST['annee']) AND is_numeric($_POST['annee']) AND strlen($_POST['annee'])===4 AND 1949<$_POST['annee']AND $_POST['annee']<1997 AND isset($_POST['sexe']) AND is_numeric($_POST['sexe']) AND ($_POST['sexe']==='0' OR $_POST['sexe']==='1'))


 
 
j'ai déjà essayer mais ça n'a pas marcher aussi !!
 
 
 
 
la table messages n'est pas fait juste pour cela, elle est aussi fait pour me contacter (webmaster) alors aussi les visiteur non inscrit peut me envoyer des message alors je peux pas utiliser l'ID pour l'envoyeur. sinon pour le destinataire  j'ai utiliser son pseudo car je vois que c'est plus simple !!
 
 

Citation :

rajoute un echo mysql_error(); après l'appel de mysql_query()


 
je vais essayer de faire ça et je vais vous répondre plus tard
 
si non pour jonas  le message de bienvenue

n°1892104
drmoh
Posté le 07-06-2009 à 02:08:41  profilanswer
 

reuh !!
 
j fé echo mysql_error() il n'y a pas de message erreur
pour le type boolean je l pas trouvé alors j changé le type text par varchar
 
 
 
 
si non j fé un test de $admine et $bienvenu et $pseudo (par echo)  et ca n'a r1 donné  :??: alors il sont null :??: pk ?? j'en sais pas !!
alors je les deplacé au debut du code et ça marché pour $admine et $bienvenu contrairement a  $pseudo  :??: ce que je ne compren pas c pourkoi l'enregistrement du nouveau membre ça marche si le variable $pseudo est null ??????

n°1892107
jonas3
Posté le 07-06-2009 à 02:53:59  profilanswer
 

J'ai riens compris.


---------------
http://petitjonas.blogspot.com/
n°1892108
drmoh
Posté le 07-06-2009 à 03:04:16  profilanswer
 

dsl pour mon français :$
 
sinon ta pas compris quoi exactement !!

n°1892119
Profil sup​primé
Posté le 07-06-2009 à 10:28:41  answer
 

drmoh a écrit :

reuh !!
 
j fé echo mysql_error() il n'y a pas de message erreur
pour le type boolean je l pas trouvé alors j changé le type text par varchar


Utilise tinyint(1)
 

drmoh a écrit :


si non j fé un test de $admine et $bienvenu et $pseudo (par echo)  et ca n'a r1 donné  :??: alors il sont null :??: pk ?? j'en sais pas !!
alors je les deplacé au debut du code et ça marché pour $admine et $bienvenu contrairement a  $pseudo  :??: ce que je ne compren pas c pourkoi l'enregistrement du nouveau membre ça marche si le variable $pseudo est null ??????


Ajoute çà au tout début de ton script :

Code :
  1. error_reporting(E_ALL | E_STRICT);

on en saura un peu plus.

n°1892248
drmoh
Posté le 07-06-2009 à 20:34:43  profilanswer
 

ça va !! ça marché j trouvé une autre solution pour l'info j inséré manuellement le message bienvenu dans la table messages et j'ai laissé la champs dstina vide et j fait ça

Code :
  1. $sql = mysql_query("SELECT * FROM messages WHERE dstina='".$_SESSION['pseudo']."' OR dstina= ''" );

pour lire la table comme ça  tout les utilisateur peuvent recevoir  ce message !! ;)  
 
sinon  si il y'a qq1 peut m'expliquer ce erreur est due a quoi ça va être très gentille de sa part


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Problème d'enregistrement en base

 

Sujets relatifs
probleme d'organisation d'un tableau php (array)Probleme d'appel de fonction php via onclick
pbrobleme entre php et une base mysql free[AJAX/PHP] Executer du javascript provenant d'un php
[PHP] Besoin d'aide pour du code PHPinserer du PHP dans un fichier XSL
Problème avec Split VBA ACCESSProblème dozer et héritage
Problème installation FCKeditorbase de donnée
Plus de sujets relatifs à : [PHP] Problème d'enregistrement en base


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR