Problème basique sur un script ... sans en trouver la raison

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

  • [RÉGLÉ] Problème basique sur un script ... sans en trouver la raison

    Bonjour,

    mon environnement : J 3.9.10, php7, extension "sourcerer" pour saisir un script dans un article Joomla, extension "jcomments" non utilisée ici

    Qui pourrait me dire dans le petit script personnel suivant -en html & php- pourquoi je me prends toujours le message d'erreur me signifiant "fin de script non attendue" ? Je viens de perdre plusieurs heures, et sans en trouver la raison.

    Code PHP:
    {source}{jcomments off}
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <html xmlns:og="http://ogp.me/ns#">
    <head>
    ...
    </head>
    <body>
    <?php
    jimport
    ('joomla.environment.browser');
    $browser = &jBrowser::getInstance();
    $navigateur $browser->getBrowser();
    $mobile $browser->isMobile();
    $user JFactory::getUser();
    $guest $user->get('guest');
    $identifiant $user->get('id');
    $conn mysqli_connect('.....');
    if (
    $guest) {
    echo 
    "<div class='encadre-rouge'>Vous devez vous Connecter sur ce site, et si nécessaire commencer par vous Enregistrer sur ce site (cf. bloc en haut de la page d'accueil)</div>";
    }else{
    $req "SELECT user_id, group_id FROM syw7g_user_usergroup_map WHERE ((user_id = '" $identifiant "') AND (group_id = 12))";
    $resultat $conn->query($req) or die('Erreur SQL !<br>'$req .'<br>' $conn->connect_error());
    $nbg $resultat->num_rows;
    if (
    $nbg == 0) {  // l'utilisateur n'est pas un docteur
    echo "<div class='encadre-rouge'>Cette fonctionnalité est réservée à un Praticien dûment habilité et connecté !</div>";
    }else{
    ?>
    <h1 class='centrer-bleu'>Nos Conseils de Paramétrage et d'Utilisation sur ce site</h1>
    {/source}

    .... le texte de mon article ...

    {source}
    <?php
    }
    }
    mysqli_close($conn);
    ?>
    <p style="text-align: right;"><a href="">Retour à la page d'accueil</a></p>
    </body>
    </html>
    {/source}

    Avec mes plus sincères remerciements anticipés pour votre aide !
    Dernière édition par lendrevi à 14/08/2019, 10h35

  • #2
    Je crois que c'est parce que dans le 2e "else" il n'y a en fait rien, du point de vue PHP. Il vaudrait mieux ne pas sortir de Sourcerer et faire un "echo" sur le contenu de l'article ou faire une redirection vers l'article en question qui se trouverait ailleurs, protégé par ses droits d'accès.
    Tous les services pour les sites Joomla! : sécurité, nettoyage de sites piratés, hébergement, SEO, applications Fabrik, migration, compatibilité mobiles, accessibilité, ...
    Administrateur certifié Joomla! 3
    https://www.betterweb.fr/services

    Commentaire


    • #3
      Envoyé par jfque Voir le message
      Je crois que c'est parce que dans le 2e "else" il n'y a en fait rien, du point de vue PHP. Il vaudrait mieux ne pas sortir de Sourcerer et faire un "echo" sur le contenu de l'article ou faire une redirection vers l'article en question qui se trouverait ailleurs, protégé par ses droits d'accès.
      Bonjour jfque,
      Je comprends tout à fait ta remarque, mais j'utilise souvent cette méthode dès que j'ai un bloc d'infos textuelles à afficher. Et surtout, cela me permet de saisir directement ce bloc d'infos comme je le ferais avec un traitement de textes, sans souci du code html. C'est vraiment très pratique. Cela m'ennuie d'être obligé de "saucissonner " ainsi le moindre article textuel.
      Merci pour tes conseils.

      Commentaire


      • #4
        Je vais probablement dire une bêtise mais… ne faudrait-il pas un if puis elseif puis else ???
        Cordialement.
        __
        Eddy !!!
        Tutoriels BreezingForms en Français : https://www.breezingforms.eddy-vh.com/

        Commentaire


        • #5
          Non les if/else sont corrects. par contre, il faut que la balise {/source} se trouve avant "<p style="text-align..."
          Tous les services pour les sites Joomla! : sécurité, nettoyage de sites piratés, hébergement, SEO, applications Fabrik, migration, compatibilité mobiles, accessibilité, ...
          Administrateur certifié Joomla! 3
          https://www.betterweb.fr/services

          Commentaire


          • #6
            Envoyé par jfque Voir le message
            Non les if/else sont corrects. par contre, il faut que la balise {/source} se trouve avant "<p style="text-align..."
            AH non, jfque : le principe de base de l'extension Sourcerer est bien d'en cadre -au minimum- l'ensemble du script par les 2 balises:
            {source}
            ... script
            {/source}

            Commentaire


            • #7
              Envoyé par lendrevi Voir le message

              AH non, jfque : le principe de base de l'extension Sourcerer est bien d'en cadre -au minimum- l'ensemble du script par les 2 balises:
              {source}
              ... script
              {/source}
              Bonjour,
              oui tu as raison, il faut encadrer le script MAIS PAS une page entière
              Là tu remets un DOCTYPE, des balises <head> et <body> qui sont déjà là normalement

              lis la documentation du plugin please
              https://www.regularlabs.com/extensio...-use-it-syntax
              Dernière édition par manu93fr à 14/08/2019, 16h29
              Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

              Commentaire


              • #8
                Envoyé par manu93fr Voir le message

                oui tu as raison, MAIS faut il remettre un DOCTYPE, des balises <head> et <body> dans ton script ???
                Car le framework de Joomla appelle dejà tout ça ... non ?
                Bonjour manu,
                J'ai toujours fait ainsi en tête de chaque script, et sans erreur particulière.

                Commentaire


                • #9
                  Envoyé par lendrevi Voir le message

                  Bonjour manu,
                  J'ai toujours fait ainsi en tête de chaque script, et sans erreur particulière.
                  C'est pas parce que ça a marché une fois que c'était la bonne façon de faire
                  Tu as lu la page de la documentation du développeur que je t'ai mis en lien ?

                  "Please keep in mind that files you include SHOULD NOT generate their own html structure (<html>, <head>, <body> tags) inside your content."

                  Traduction
                  "Gardez à l’esprit que les fichiers que vous incluez NE DOIVENT PAS générer leur propre structure html (balises <html>, head>, body> ) à l’intérieur de votre contenu."
                  Dernière édition par manu93fr à 14/08/2019, 16h31
                  Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

                  Commentaire


                  • #10
                    .J'ai reçu hier une nouvelle version de sourcerer: cette remarque de Manu me semble récente. Je vais faire des vérifications.

                    Commentaire


                    • #11
                      Bonjour

                      +1 avec Manu, toutes les en-têtes sont déjà là il est absolument inutile de les envoyer à nouveau (le résultat sur le navigateur du client peut être amusant).

                      Des outils comme sourcerer sont là pour enrichir une page et pas pour en générer une. L'exécution se fait dans le contexte de, par exemple, l'article en cours de rendu.
                      Christophe (cavo789)
                      Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
                      Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
                      Mes logiciels OpenSource : https://www.avonture.be

                      Commentaire


                      • #12
                        Envoyé par lendrevi Voir le message
                        .J'ai reçu hier une nouvelle version de sourcerer: cette remarque de Manu me semble récente. Je vais faire des vérifications.
                        Il faut surtout comprendre ce que fait EXACTEMENT sourcerer et comment la page Html se construit
                        Ce n'est pas un problème de version de l'extension, c'est un problème de logique de développement et de syntaxe php
                        On ne peut pas mettre 2 DOCTYPE ou 2 balises <head> dans une page Html ... et ça depuis le début de php ...
                        Dernière édition par manu93fr à 14/08/2019, 16h43
                        Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

                        Commentaire


                        • #13
                          Bonjour

                          tjs d'actu ce pb?


                          ++
                          Wis

                          Commentaire


                          • #14
                            c est le template qui les generent et non le framework.
                            et pour faire encore plus simple, tu devrais utiliser les fonctions joomla pour gérer ta connexion à la base de données.
                            Dans ton code sourcerer, tu ne devrais avoir que ceci :
                            Code:
                            {source}
                            <?php
                            jimport('joomla.environment.browser');
                            $browser = &jBrowser::getInstance();
                            $navigateur = $browser->getBrowser();
                            $mobile = $browser->isMobile();
                            $user = JFactory::getUser();
                            $guest = $user->get('guest');
                            $identifiant = $user->get('id');
                            $conn = mysqli_connect('.....');
                            if ($guest) {
                            echo "<div class='encadre-rouge'>Vous devez vous Connecter sur ce site, et si nécessaire commencer par vous Enregistrer sur ce site (cf. bloc en haut de la page d'accueil)</div>";
                            }else{
                            $req = "SELECT user_id, group_id FROM syw7g_user_usergroup_map WHERE ((user_id = '" . $identifiant . "') AND (group_id = 12))";
                            $resultat = $conn->query($req) or die('Erreur SQL !<br>'. $req .'<br>' . $conn->connect_error());
                            $nbg = $resultat->num_rows;
                            if ($nbg == 0) {  // l'utilisateur n'est pas un docteur
                            echo "<div class='encadre-rouge'>Cette fonctionnalité est réservée à un Praticien dûment habilité et connecté !</div>";
                            }else{
                            ?>
                            <h1 class='centrer-bleu'>Nos Conseils de Paramétrage et d'Utilisation sur ce site</h1>
                            
                            
                            .... le texte de mon article ...
                            
                            
                            <?php
                            }
                            }
                            mysqli_close($conn);
                            ?>
                            {/source}
                            Dernière édition par lefabdu51 à 22/08/2019, 21h53
                            Mon site en cours de construction avec de nouvelles catégories de documents...
                            https://informaticien51.fr

                            Commentaire


                            • #15
                              Merci lefabdu51. Mais j’avais déjà bien compris ceci.

                              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

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X