COM Contact / Autoriser Register uniquement + special

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • COM Contact / Autoriser Register uniquement + special

    Bonjour,

    Je recherche comment permettre a un invite (guest) du site de voir certains champs d'un contact (tel, fax, adresse postale,...) et permettre a un membre enregistre (registred) uniquement de voir l'ensemble des informations et de pouvoir envoyer un mail.

    Lors de l'envoi du mail, l'utilisateur n'aura pas besoin de saisir son e-mail (pas de champ dans le FORM) puisque celui-ci sera valide lors de la confirmation d'inscription. Par contre dans l'email recu par le contact il faudrait que l'email de l'utilisateur soit visible.

    Par avance merci pour vos reponses.

    Timshel

  • #2
    Envoyé par timshel
    Lors de l'envoi du mail, l'utilisateur n'aura pas besoin de saisir son e-mail (pas de champ dans le FORM) puisque celui-ci sera valide lors de la confirmation d'inscription.
    je ne comprend pas, comment peux tu recevoir un mail identifié comme venant de 'tartenpion' si ce tartenpion n'indique pas son email ?
    à moins que j'ai pas capté un truc, je ne vois pas comment.

    Nico
    cours de SVT - infos scientifiques : www.nicolas-ogier.fr
    pas de demandes d'aide par mp, elles seront systématiquement refusées !

    Commentaire


    • #3
      Salut...

      Au départ, j'ai cru comprendre....
      mais arrivé à la fin, je suis revenu au début.... et je comprends plus !
      Nono
      http://www.froncles.fr Le Village de FRONCLES en Haute-Marne.
      http://www.microtel-froncles.fr Le Club Informatique Microtel Multimédias du 52

      Commentaire


      • #4
        C'est comme pour mes élèves, il faut etre un as du décryptage.
        Bon en relisant avec un bon aspirine voici ce que j'ai (cru) comprendre.
        1. timshel veut qu'un VISITEUR ne puisse voir que certains champs des contacts (tel fax, adresse...) par contre les MEMBRES/REGISTERED peuvent voir tous les champs dont celui d'envois d'email.
        2. Vu que seul les membres peuvent envoyer un email, il faudrait que leur nom soit automatiquement renseigné comme expéditeur. Ainsi le contact recevant l'email a bien le nom de l'expéditeur.


        J'ai bon ?
        cours de SVT - infos scientifiques : www.nicolas-ogier.fr
        pas de demandes d'aide par mp, elles seront systématiquement refusées !

        Commentaire


        • #5
          OPWARE2000 a tout bon. Ainsi le contact recevant l'email a bien le nom et l'email de l'expéditeur.


          J'aimerai que pour contacter le webmaster, l'utilisateur soit enregistrer sur le site.

          Lors de l'inscription sur le site et afin de valider l'inscription, l'utilisateur rentre bien son email afin de recevoir un mail avec un lien vers la validation de l'inscription (et ceci afin de verifier qu'un email unique -si active- et valide est saisi).

          Donc dans le FORM d'envoi de mail (du composant com_contact), j'aimerai masque le champ de saisie "e-mail:" et mettre a la place (en hidden) l'email que l'utilisateur a saisi lors de son inscription au site. Cet email (de l'utilisateur inscrit) devra apparaitre dans le mail recu par le destinataire.

          Schema:
          Utilisateur non enregistré voulant contacter le webmaster via un lien "contactez nous" (composant com_contact, lien dans le menu : index.php?option=com_contact&Itemid=3 ) -----> Redirection vers inscrivez vous au site -----> l'utilisateur s'inscrit au site et saisi son email -----> reception d'un email de validation sur l'adresse mail stipulee dans l'etape precedente -----> l'utilisateur valide son inscription en cliquant dans le mail recu sur le lien -----> l'utilisateur retourne sur le lien "contactez nous" du menu apres s'etre identifier -----> de la il a acces a la FORM permettant l'envoi d'un email mais sans le champ "e-mail:". A la place de ce champ mettre eventuellement l'email de l'utilisateur saisi lors de son inscription -----> validation de la FORM par l'utilisateur -----> envoi du mail au destinataire (generalement le webmaster) avec dans le corps du mail l'adresse email de l'utilisateur.
          Dernière édition par timshel à 12/01/2006, 12h58

          Commentaire


          • #6
            donc j'avais bien compris !
            cours de SVT - infos scientifiques : www.nicolas-ogier.fr
            pas de demandes d'aide par mp, elles seront systématiquement refusées !

            Commentaire


            • #7
              Salut,

              Itou ! J'ai rien compris non plus Et puis, à la 27ème lecture... Tilt ! Vindiou !

              Donc, alors, on résume (pour voir si j'ai encore toute ma tête) :
              Envoyé par timshel
              Je recherche comment permettre a un invite (guest) du site de voir certains champs d'un contact (tel, fax, adresse postale,...) et permettre a un membre enregistre (registred) uniquement de voir l'ensemble des informations et de pouvoir envoyer un mail.
              Bon, jusque là, ça va Il te faut jouer avec la variable globale "$my->id" qui, si elle est non vide, veut dire que le membre est identifié. Mais pour afficher ou non certains champs, il va te falloir modifier le fichier "contact.html.php" qui a la charge d'afficher les informations ! Je prends un exemple pour toi dans le fichier à partir de la ligne 350 :
              Code PHP:
              <?php
                  
              // displays Email Form
                                  
              if ($my->id) {
              HTML_contact::_writeVcard$contact$params );
                  
              // displays Email Form
              HTML_contact::_writeEmailForm$contact$params$sitename$menu_params );
                        }...
              etc
              En vert la condition IF. Si le membre n'est pas identifié, la fonction d'affichage du formulaire n'est pas exécutée. Et le guest ne verra rien ! Et c'est pareil pour toutes les lignes débutant par "HTML_contact::" . Maintenant, il faut que tu testes cela, et voir si ça ne bouscule pas la mise en page !!

              Ensuite,
              Envoyé par timshel
              Lors de l'envoi du mail, l'utilisateur n'aura pas besoin de saisir son e-mail (pas de champ dans le FORM) puisque...
              Là je pense que tu veux dire le "membre identifié" ? Si c'est le cas, ça se complique pour toi ! Il faut que tu dises au système quelle est l'adresse email de ce membre pour remplir la variable d'adresse mail nécessaire à l'expédition... Il faut donc que tu crées une requête SQL dans la table jos_users" pour extraire l'adresse de ce membre (à moins qu'elle ne soit déjà dans les globales, à voir)... Bon, je m'arrête là, car si ce n'est pas ça, on ne va pas se prendre la tête avec une vraie solution...

              Envoyé par timshel
              Par contre dans l'email recu par le contact il faudrait que l'email de l'utilisateur soit visible.
              Par défaut... On ne touche à rien, normalement...

              Voilà, j'espère avoir compris ta (tes) question(s) !!! Il y a des solutions à tout mais il te faut savoir coder un peu et savoir ce que tu fais pour avoir ces fonctionnalités !!

              @++
              Hyperion
              Pas de demande de support en MP ou par mail, le forum est là pour ça!
              http://network.wantoo.com : Wantoo Network - Infogérance Serveurs Dédiés - Sécurité Joomla!

              Commentaire


              • #8
                Oups, le temps d'écrire ma réponse et j'arrive après la guerre

                Donc, j'avais rien compris Fichtre !
                Pas de demande de support en MP ou par mail, le forum est là pour ça!
                http://network.wantoo.com : Wantoo Network - Infogérance Serveurs Dédiés - Sécurité Joomla!

                Commentaire


                • #9
                  Merci a tous pour vos reponses. Hyperion, tu avais tout compris ou du moins tu m'as donne des solutions/idees pour adapter les scripts. Je code tres prochainement cette solution que je posterai bien sur pour aider les autres membres.

                  Merci beaucoup pour votre investissement et votre reactivite.

                  PS : le but de ce developpement est d'eviter d'avoir des mails du genre :
                  De : enquele [mailto:enquele@neuf.fr]
                  Envoyé : mercredi 11 janvier 2006 18:07
                  À : xxxxxxxx@numericable.fr
                  Objet : Kalifornia Team Motors : ta boite

                  Une demande de contact a été formulée par e-mail via
                  http://kaliforniateammotors.free.fr/v1 de la part de enquele <enquele@neuf.fr>

                  Et je passe le corps du message...

                  Commentaire


                  • #10
                    Envoyé par timshel
                    Merci a tous pour vos reponses. [...]
                    Merci beaucoup pour votre investissement et votre reactivite.
                    CA FAIT PLAISIR !!!


                    Nico
                    cours de SVT - infos scientifiques : www.nicolas-ogier.fr
                    pas de demandes d'aide par mp, elles seront systématiquement refusées !

                    Commentaire


                    • #11
                      Salut,

                      Je viens d'y repenser ! J'aurais pu aussi te conseiller d'utiliser FacileForms !!! Délicat à apréhender au début, FF est extraordinairement puissant avec l'habitude... Une perle pour les dév.

                      Jettes un oeil sur leur site officiel, et notamment une approche qui va t'interresser directement : >>> ICI <<<<

                      @++
                      Hyperion
                      PS : Merci également pour tes encouragements !
                      Pas de demande de support en MP ou par mail, le forum est là pour ça!
                      http://network.wantoo.com : Wantoo Network - Infogérance Serveurs Dédiés - Sécurité Joomla!

                      Commentaire


                      • #12
                        Salut,

                        Je viens de tester la solution d'hyperion mais marche pas.

                        Envoyé par hyperion
                        Bon, jusque là, ça va Il te faut jouer avec la variable globale "$my->id" qui, si elle est non vide, veut dire que le membre est identifié. Mais pour afficher ou non certains champs, il va te falloir modifier le fichier "contact.html.php" qui a la charge d'afficher les informations ! Je prends un exemple pour toi dans le fichier à partir de la ligne 350 :
                        Code PHP:
                        <?php
                            
                        // displays Email Form
                                            
                        if ($my->id) {
                        HTML_contact::_writeVcard$contact$params );
                            
                        // displays Email Form
                        HTML_contact::_writeEmailForm$contact$params$sitename$menu_params );
                                  }...
                        etc
                        En vert la condition IF. Si le membre n'est pas identifié, la fonction d'affichage du formulaire n'est pas exécutée. Et le guest ne verra rien ! Et c'est pareil pour toutes les lignes débutant par "HTML_contact::" .
                        Hyperion
                        Meme identifie, je ne vois plus HTML_contact::_writeVcard et HTML_contact::_writeEmailForm. Il semble que la variable $my->id ne soit pas globale ou sinon je ne comprends rien a rien.

                        Ensuite pour remplir le formulaire automatiquement au niveau de l'email et du nom de l'utilisateur, j'ai essaye l'idee du site Facile Forms. Mais la idem. Ce que j'ai fait :

                        Dans le fichier contact.html.php, dans la function _writeEmailForm (ligne environ 650) au niveau de l'email j'ai mis :
                        <input type="hidden" name="email" id="contact_email" value="<?php global $my; return $my->email; ?>" />

                        Et la rien ne s'affiche (normal puisque $my n'est pas reconnu si je comprends un peu ).

                        Je (re)demande de l'aide ou du moins une piste.

                        @++
                        Timshel
                        Reves ta vie, vis tes reves.

                        Commentaire


                        • #13
                          Envoyé par timshel
                          Je viens de tester la solution d'hyperion mais marche pas.
                          Meme identifie, je ne vois plus HTML_contact::_writeVcard et HTML_contact::_writeEmailForm. Il semble que la variable $my->id ne soit pas globale ou sinon je ne comprends rien a rien.
                          Oups ! Fichtre ! C'est de ma faute J'ai un peu oublié de te dire qu'il fallait déclarer (appeler, en fait) la "global"

                          Bref, au tout début de la fonction, tu as :
                          Code PHP:
                          function viewcontact( &$contact, &$params$count, &$list, &$menu_params ) {
                                  global 
                          $mosConfig_live_site;
                                  global 
                          $mainframe$Itemid
                          Il te suffit (normalement) d'ajouter en 3ème ligne, un autre global, comme cela :
                          Code PHP:
                          global $my
                          Toutes mes excuses Monseigneur !! Ca devrait le faire maintenant !

                          @++
                          Hyperion
                          Pas de demande de support en MP ou par mail, le forum est là pour ça!
                          http://network.wantoo.com : Wantoo Network - Infogérance Serveurs Dédiés - Sécurité Joomla!

                          Commentaire


                          • #14
                            Salut,

                            Effectivement en declarant correctement la variable cela fonctionne beaucoup mieux ! Je vois maintenant HTML_contact::_writeVcard et HTML_contact::_writeEmailForm uniquement quand je suis connecte.

                            Pour la suite, je me suis pris la tete ! Je cherchais donc a remplir automatiquement les champs email et nom de la forme.

                            J'ai trouve deux solutions (qui meritent a mon avis des corrections) :

                            Solution 1 -->
                            toujours a la ligne 350, dans la condition, voila ce que j'ai mis:
                            if ($my->id) {


                            $query = "SELECT email FROM #__users WHERE id = ". $my->id;
                            $database->setQuery( $query );
                            $usermail = $database->loadResult();
                            $query = "SELECT name FROM #__users WHERE id = ". $my->id;
                            $database->setQuery( $query );
                            $username = $database->loadResult();


                            Puis quelques lignes plus bas, je passe les variables a la fonctions:
                            // displays Email Form
                            HTML_contact::_writeEmailForm( $contact, $params, $sitename, $menu_params, $usermail, $username );

                            Solution 2 -->
                            Toujours a la ligne 350 :
                            if ($my->id) {
                            $xa = new mosUser( $database );
                            $xa->load( $my->id );
                            $usermail = $my->email;
                            $username = $my->name;

                            et je passe comme dans la solution 1 les variables a la fonction.

                            Dans les 2 solutions il faut aussi :
                            - modifier la ligne "function _writeEmailForm(...." par function _writeEmailForm( &$contact, &$params, $sitename, &$menu_params, &$usermail, &$username ) {

                            puis les values de la forme au niveau des champs email et name :
                            <input type="text" name="name" id="contact_name" size="30" class="inputbox" value="<?php echo $username; ?>" />
                            <input type="text" name="email" id="contact_email" size="30" class="inputbox" value="<?php echo $usermail; ?>" />

                            Petit probleme quand je teste, j'obtiens le message suivant :
                            "Vous n'êtes pas autorisé(e) à accéder à cette ressource.
                            Vous devez vous connecter.
                            " Mais bondioudebondiou, je suis deja connecte.

                            Quand je fais un test avec le fichier d'origine, no problem.

                            Je deviens fou !!!

                            Si vous pouviez m'aider...

                            @+
                            Timshel

                            Commentaire


                            • #15
                              Envoyé par timshel
                              Solution 1 -->
                              toujours a la ligne 350, dans la condition, voila ce que j'ai mis:
                              if ($my->id) {


                              $query = "SELECT email FROM #__users WHERE id = ". $my->id;
                              $database->setQuery( $query );
                              $usermail = $database->loadResult();
                              $query = "SELECT name FROM #__users WHERE id = ". $my->id;
                              $database->setQuery( $query );
                              $username = $database->loadResult();
                              Salut,

                              J'économiserais une requête sql à ta place :
                              Code PHP:
                              if ($my->id) {
                                                     
                                
                              $query "SELECT name, email FROM #__users WHERE id = "$my->id
                                
                              $rows $database->loadObjectList(); 
                                
                              $row $rows[0];
                                
                              $username $row->name;
                                
                              $usermail $row->mail;  
                                ... 
                              Envoyé par timshel
                              Solution 2 -->
                              Toujours a la ligne 350 :
                              if ($my->id) {
                              $xa = new mosUser( $database );
                              $xa->load( $my->id );
                              $usermail = $my->email;
                              $username = $my->name;
                              ...
                              Ca, c'est plus élégant, peut-être !

                              Envoyé par timshel
                              Petit probleme quand je teste, j'obtiens le message suivant :
                              "Vous n'êtes pas autorisé(e) à accéder à cette ressource.
                              Vous devez vous connecter.
                              " Mais bondioudebondiou, je suis deja connecte.
                              Bon, si tu regardes le code du formulaire d'expédition du mail, ligne 700, tu as un champ caché qui lance une fonction "mosHash" sur "validate' à 1...

                              Or, dans le fichier "contact.php", on retrouve cela à la ligne 340 :
                              Code PHP:
                              function sendmail$con_id$option ) {
                                  global 
                              $database$Itemid;
                                  global 
                              $mosConfig_sitename$mosConfig_live_site$mosConfig_mailfrom$mosConfig_fromname;

                                  
                              $validate mosGetParam$_POSTmosHash'validate' ), );
                                  if (!
                              $validate) {
                                      
                              // probably a spoofing attack
                                      
                              echo _NOT_AUTH;
                                      return;
                                  }
                              ... 
                              C'est apparemment une routine anti-spoofing qui crypte en MD5 la valeur 'validate' transmise par POST. Si à l'arrivée, le hashage de validate ne donne rien, on te renvoit "_NOT-AUTH" dans le nez !!!
                              Il faut que tu creuses plus de ce côté là Peut-être que le hashage se fait avec TOUTES les variables transmises par POST. Tu en as ajouté 2, donc la comparaison n'est pas bonne ? Je ne sais pas, je n'ai pas creusé plus...

                              @++
                              Hyperion
                              Pas de demande de support en MP ou par mail, le forum est là pour ça!
                              http://network.wantoo.com : Wantoo Network - Infogérance Serveurs Dédiés - Sécurité Joomla!

                              Commentaire

                              Annonce

                              Réduire
                              1 sur 2 < >

                              C'est [Réglé] et on n'en parle plus ?

                              A quoi ça sert ?
                              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                              Comment ajouter la mention [Réglé] à votre discussion ?
                              1 - Aller sur votre discussion et éditer votre premier message :


                              2 - Cliquer sur la liste déroulante Préfixe.

                              3 - Choisir le préfixe [Réglé].


                              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                              2 sur 2 < >

                              Assistance au forum - Outil de publication d'infos de votre site

                              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                              UTILISER À VOS PROPRES RISQUES :
                              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                              Problèmes connus :
                              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                              Installation :

                              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                              Archive zip : https://github.com/AFUJ/FPA/zipball/master

                              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                              et remplacer www. votresite .com par votre nom de domaine


                              Exemples:
                              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/
                              Pour executer le script: http://www..com/fpa-fr.php

                              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/cms/
                              Pour executer le script: http://www..com/cms/fpa-fr.php

                              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                              Voir plus
                              Voir moins
                              Travaille ...
                              X