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 Visiteur à 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

    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

          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
              Cette année, le JoomlaDay FR a lieu à Bruxelles, les 20 et 21 mai 2022, plus d'infos et inscriptions : www.joomladay.fr

              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
                  Cette année, le JoomlaDay FR a lieu à Bruxelles, les 20 et 21 mai 2022, plus d'infos et inscriptions : www.joomladay.fr

                  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)
                      Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                      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)​

                      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
                        Cette année, le JoomlaDay FR a lieu à Bruxelles, les 20 et 21 mai 2022, plus d'infos et inscriptions : www.joomladay.fr

                        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

                            Commentaire


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

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X