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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[phpBB] Un message privé fait de l'exterieur


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut [phpBB] Un message privé fait de l'exterieur
    Voila,
    Je cherche a envoyer des messages automatiques a mes membres en fonction de se qui se passe dans mon site.

    Pour ça j'ai crée cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function mp_phpBB2($dest,$titre,$msg,$from){
    	mysql_query("INSERT INTO `phpbb_privmsgs` ( `privmsgs_id` , `privmsgs_type` , `privmsgs_subject` , `privmsgs_from_userid` , `privmsgs_to_userid` , `privmsgs_date` , `privmsgs_ip` , `privmsgs_enable_bbcode` , `privmsgs_enable_html` , `privmsgs_enable_smilies` , `privmsgs_attach_sig` )
    	VALUES (
    	NULL , '0', '$titre', '$from', '$dest', '".time()."', '".$_SERVER['REMOTE_ADDR']."', '1', '0', '1', '1'
    	);");
    	$id_msg = mysql_insert_id();
    	mysql_query("INSERT INTO `phpbb_privmsgs_text` ( `privmsgs_text_id` , `privmsgs_bbcode_uid` , `privmsgs_text` )
    	VALUES (
    	$id_msg, '0', '$msg'
    	);");
     
    }
    Je ne comprend pas pourquoi certain des messages apparaisse sans corp.
    (phpbb_privmsgs_text ne se remplit pas toujours.)

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    tu peux rajouter des ' ' autour de ton $id_msg.

    Ensuite le problème, il me semble, c'est au niveau des id.
    La valeur $id_msg doit être égal à la valeur privmsgs_id du tableau 1.

    Bonne chance.

  3. #3
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut
    Salut,

    Même si c'est codé pour phpBB tu devrais trouver pourquoi cela bloque
    http://mods.u-web.org/viewtopic.php?cat=5&id=26

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    Je suis sur du numéro.
    mysql_insert_id(); Donne le dernier chiffre d' incrémentassions utiliser dans la base de donnée.

    Pour les guillemets ça peut être ça.

    Je test actuellement la fonction que vous m'avez passer. Je vous tient au courant.

  5. #5
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Il faudrait que tu rajoutes un die(mysql_error()) mais je suis prêt à parier que ça fonctionne dans certains cas. Teste avec un message composé d'un mot pour voir

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    Darkenshin, ta solution n'as pas marcher.

    Kerod, je vais tester.

  7. #7
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Je dis ça car c'est censé fonctionner et que ça peut venir uniquement d'un mauvais échappement de la chaine msg

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    SpiritOfDoc ta méthode n'as pas fonctionné.

    Kerod, il m'indique une syntaxe MySQL de mauvaise version.

  9. #9
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Et c'est ? Mets moi tout le message d'erreur, sans lui je peux rien faire

  10. #10
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut
    DidUngar, la fonction que je t'ai montré est faite pour fonctionner pour phpBB

    J'ai trouvé le problème il est simple:
    function mp_phpBB2($dest,$titre,$msg,$from)
    {
    $sql = "INSERT INTO phpbb_privmsgs VALUES
    (
    NULL , '1', '$titre', '$from', '$dest', '".time()."', '".$_SERVER['REMOTE_ADDR']."', '1', '0', '1', '1'
    );";
    mysql_query($sql);

    $id_msg = mysql_insert_id();

    $sql2 = "INSERT INTO phpbb_privmsgs_text VALUES
    (
    $id_msg, '0', '$msg'
    );";
    mysql_query($sql2);
    }
    La fonction marche bien je l'ai testé parcontre c'est vrai qu'il serai mieux de tester si la requête fonctionne ou pas

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    J'avais déjà modifier le code avec le 1.
    J'avais modifier par apport a la fonction que tu m'as déjà passer.

    Mais le bug reste.
    Tu as fait tourner sur quel version de MySql?
    ( Je suis en 5.0 )

  12. #12
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut
    Apache version :
    Apache/2.0.59 (Win32)

    PHP version :
    4.4.4

    Loaded extensions :
    standard, bcmath, calendar, ctype, com, ftp, mysql, odbc, overload, pcre, session, tokenizer, xml, wddx, zlib, apache2handler, mbstring

    MySQL version :
    5.0.24a-community-nt

  13. #13
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'os ( 3786 )

    Ba voila l'erreur.

  14. #14
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Je t'ai dit que ça vient pas du code (disons en quelque sorte) mais de ta chaine de caractères.

    Affiche toute l'erreur stp

  15. #15
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Il faut que tu protèges tes différentes variables comme le posteur et le message avec l'une des fonctions énumérées ici : Comment se protéger des failles d'injection ?

  16. #16
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par défaut
    D'ou l'utilisation de la fonction quote_smart dans ma fonction send_mp ^^
    j'avoue que j'ai pas test avec des apostrophes

  17. #17
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    Je ne pense pas avoir a les protegers,
    Je génére de maniére automatique le message et aucun utilisateur ne peut mettre du texte dans la requette.

    je pense que l'erreur vient de la partie 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	mysql_query("INSERT INTO `phpbb_privmsgs_text` ( `privmsgs_text_id` , `privmsgs_bbcode_uid` , `privmsgs_text` )
    	VALUES (
    	$id_msg, '0', '$msg'
    	);") or die(mysql_error());

  18. #18
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Au risque de me répéter : Cette variable doit être protégé $msg

    Sinon il y aura toujours des erreurs d'insertion dans la deuxième table. Comme je l'ai déjà dit plus haut :
    Comment se protéger des failles d'injection ?
    Et plus précisement : mysql_ escape_ string

  19. #19
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    Au finial j'ai opter pour un envoye d'email.

    Mais j'ai l'erreur la :
    Failed sending email :: PHP ::

    DEBUG MODE

    Line : 234
    File : emailer.php

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

Discussions similaires

  1. [phpBB] Lecture des Messages Privés par l'administrateur
    Par Bonhomme dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 16/11/2007, 16h57
  2. [phpBB] Messages privés pas vraiment privés
    Par bibou29 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 17/01/2007, 20h00
  3. Messages Privés : reste en boite d'envoi ? Pourquoi ?
    Par Perceval dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 20/09/2005, 18h52

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