Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2023-03-07T17:03:16+01:00Les derniers messages parus sur le forum de Zeste de Savoir.Exercices sur zestedesavoir nombre pair ou impair, message #2494982023-03-07T17:03:16+01:00Aigle-Royal/@Aigle-Royalhttps://zestedesavoir.com/forums/sujet/16857/exercices-sur-zestedesavoir-nombre-pair-ou-impair/?page=1#p249498<p>Bonjour, merci pour vos réponse, alors il s’agit d’un exercices donné en c++ sur le site de zeste, j’ai voulu faire l’exercice par moi même , mais j’ai vu après coup que le continue posais problème comme Pierre le fou le mentionne … étant donné que je ne voulais pas lire la suite du court avant d’avoir compris je n’avais pas vu que le continue posais soucis, cependant après avoir quand même regarde plus loin j’ai vu que c’était le soucis, je remercie tous ceux qui on répondu , par ailleurs je vais en sorte d’être plus clair dans mes énoncées et expliqué les choses pour que cela soit bien compris… et pour le titre je vais faire l’efforts d’être plus clair aussi.</p>
<p>Je vous remercie encore une fois, passé une bonne soirée/journée selon l’endroit ou vous, vous trouvez.</p>Exercices sur zestedesavoir nombre pair ou impair, message #2494792023-03-06T10:53:56+01:00DonKnacki/@DonKnackihttps://zestedesavoir.com/forums/sujet/16857/exercices-sur-zestedesavoir-nombre-pair-ou-impair/?page=1#p249479<p>J’imagine que c’est l’exercice relatif au <code>continue</code> justement : <a href="https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/le-debut-du-voyage/des-boucles-qui-se-repetent-repetent-repetent-1/#continuesaute-ton-tour">https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/le-debut-du-voyage/des-boucles-qui-se-repetent-repetent-repetent-1/#continuesaute-ton-tour</a></p>
<p>Le bloc rouge avait pourtant vocation à empêcher de tomber dans le piège <img src="/static/smileys/svg/clin.svg" alt=";)" class="smiley"></p>Exercices sur zestedesavoir nombre pair ou impair, message #2494782023-03-06T10:39:33+01:00romantik/@romantikhttps://zestedesavoir.com/forums/sujet/16857/exercices-sur-zestedesavoir-nombre-pair-ou-impair/?page=1#p249478<p>J’ajoute que ce serait bien aussi de savoir quel est l’objectif du code : sans ça je ne sais pas ce que veut dire "je n’arrive pas à le faire fonctionner" puisqu’on n’a pas la définition d’un code qui fonctionne.<br>
Grâce au retitrage d’Arius, je comprends que c’est l’un des exercices du cours proposé sur le site, mais tu pourrais nous épargner la recherche en faisant un rappel de l’énoncé ou carrément un lien vers celui-ci.</p>
<p>Puisque PierrotLeFou t’as indiqué précisément le problème, je me permets d’ajouter une remarque mineure : </p>
<div class="hljs-code-div hljs-code-cpp"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span></div><pre><code class="hljs language-cpp"><span class="hljs-keyword">int</span> zero{<span class="hljs-number">0</span>}; <span class="hljs-comment">// initialisation</span>
<span class="hljs-comment">// [...]</span>
<span class="hljs-keyword">while</span>(zero <= nb) <span class="hljs-comment">// condition de sortie</span>
{
<span class="hljs-comment">// [...]</span>
zero++; <span class="hljs-comment">// incrément</span>
}
</code></pre></div>
<p>ressemble étrangement à une autre structure de boucle ! <img src="/static/smileys/svg/langue.svg" alt=":p" class="smiley"><br>
C’est une remarque mineure car ton code a le même comportement et n’est plus faux, mais à la relecture c’est un peu mieux d’avoir une boucle for. On comprendra mieux tes intentions, et on le verra dès la première ligne, on attends pas de tomber sur l’incrément. En plus de ça, le scope de ta variable sera réduit à la partie où elle est utile.</p>
<p>PS: Grillé par entwanne mais tant pis moi aussi je fais la remarque <img src="/static/smileys/svg/heureux.svg" alt=":D" class="smiley"></p>Exercices sur zestedesavoir nombre pair ou impair, message #2494772023-03-06T10:20:37+01:00entwanne/@entwannehttps://zestedesavoir.com/forums/sujet/16857/exercices-sur-zestedesavoir-nombre-pair-ou-impair/?page=1#p249477<p>Salut,</p>
<p>En dehors de ce problème de boucle infinie je ne comprends pas ce que tu cherches à faire avec ton programme.
Quel est le comportement attendu quand tu entres un nombre pair ? Et un impair ?</p>
<p>Aussi, quelle est la signification de cette variable <code>zero</code> que tu incrémentes (et qui ne vaudrait donc plus 0 si la ligne 29 était atteinte) ?</p>Exercices sur zestedesavoir nombre pair ou impair, message #2494702023-03-04T19:28:32+01:00Arius/@Ariushttps://zestedesavoir.com/forums/sujet/16857/exercices-sur-zestedesavoir-nombre-pair-ou-impair/?page=1#p249470<p>Hello, </p>
<p>Je modifie le titre de tes sujets pour quelque chose de plus précis mais merci de faire attention pour la prochaine fois à bien mettre un titre clair et précis.</p>
<p>Merci par ailleurs d’expliquer où tu coinces, ton raisonnement et les pistes de solution que tu envisages. Il ne suffit pas de demander la réponse, mais de chercher l’erreur et la solution <img src="/static/smileys/svg/clin.svg" alt=";)" class="smiley"></p>Exercices sur zestedesavoir nombre pair ou impair, message #2494692023-03-04T18:25:20+01:00PierrotLeFou/@PierrotLeFouhttps://zestedesavoir.com/forums/sujet/16857/exercices-sur-zestedesavoir-nombre-pair-ou-impair/?page=1#p249469<p>Si tu remarques, tu incrémentes seulement si le nombre est impair, or tu
commences à 0.</p>
<p>(le <code>continue</code> empèche d’incrémenter)</p>
<p>Changes ton test et affiches seulement quand c’est impair.</p>
<p>Et tu vas incrémenter pour tous</p>Exercices sur zestedesavoir nombre pair ou impair, message #2494672023-03-04T18:03:48+01:00Aigle-Royal/@Aigle-Royalhttps://zestedesavoir.com/forums/sujet/16857/exercices-sur-zestedesavoir-nombre-pair-ou-impair/?page=1#p249467<p>Bonjour à tous, comment allez-vous ?</p>
<p>Petit soucis avec mon code, je n’arrive pas à le faire fonctionner et je ne comprends pas
vraiment pourquoi , est-ce que quelqu’un aurai l’amabilité de me montrer ou est mon erreur
merci.</p>
<p>voici le code :</p>
<div class="hljs-code-div hljs-code-cpp"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span><span data-count="13"></span><span data-count="14"></span><span data-count="15"></span><span data-count="16"></span><span data-count="17"></span><span data-count="18"></span><span data-count="19"></span><span data-count="20"></span><span data-count="21"></span><span data-count="22"></span><span data-count="23"></span><span data-count="24"></span><span data-count="25"></span><span data-count="26"></span><span data-count="27"></span><span data-count="28"></span><span data-count="29"></span><span data-count="30"></span><span data-count="31"></span><span data-count="32"></span><span data-count="33"></span><span data-count="34"></span><span data-count="35"></span></div><pre><code class="hljs language-cpp">
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><iostream></span></span>
<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>
</span>{
<span class="hljs-keyword">int</span> zero{<span class="hljs-number">0</span>};
<span class="hljs-keyword">int</span> nb{<span class="hljs-number">0</span>};
std::cout <<<span class="hljs-string">"Veuillez entree un nombre :"</span>;
<span class="hljs-keyword">while</span>(!(std::cin >> nb))
{
std::cout<<<span class="hljs-string">"Vous avez entree un caractere veuillez recommencer : "</span>;
std::cin.<span class="hljs-built_in">clear</span>();
std::cin.<span class="hljs-built_in">ignore</span>(<span class="hljs-number">255</span>,<span class="hljs-string">'\n'</span>);
}
<span class="hljs-keyword">while</span>(zero <= nb)
{
<span class="hljs-keyword">if</span>(zero % <span class="hljs-number">2</span> == <span class="hljs-number">0</span>)
{
<span class="hljs-keyword">continue</span>;
}
std::cout <<<span class="hljs-string">"Zero : "</span> << zero <<std::endl;
zero++;
}
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
Je vous remercie d<span class="hljs-number">'</span>avance , passez un excellente weekend.
</code></pre></div>[Suggestion mais pas vraiment] Cours de C++ de informaticienzero et mehdidou99, message #2366522021-08-14T09:42:41+02:00Arius/@Ariushttps://zestedesavoir.com/forums/sujet/15598/suggestion-mais-pas-vraiment-cours-de-c-de-informaticienzero-et-mehdidou99/?page=1#p236652<p>J’ai transmis l’info par MP aux auteurs. Je laisse ce sujet ouvert pour qu’ils répondent (<a href="/@staff" rel="nofollow" class="ping ping-link">@<span class="ping-username">staff</span></a> : inutile de le fermer, une fois la discussion résolue, il finira par retomber dans les pages, ce n’est pas gênant <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"> ).</p>
<p>Bonne journée,</p>[Suggestion mais pas vraiment] Cours de C++ de informaticienzero et mehdidou99, message #2366492021-08-14T01:54:36+02:00ache/@achehttps://zestedesavoir.com/forums/sujet/15598/suggestion-mais-pas-vraiment-cours-de-c-de-informaticienzero-et-mehdidou99/?page=1#p236649<p>Bonjour,</p>
<p>Oui, le forum « Bug & Suggestions » est destiné au développement de Zeste de Savoir. Par exemple si tu trouves un bug au sein du site (avec les fonctionnalités du site, par exemple, un problème de connexion) pas pour des erreurs dans les tutoriels.</p>
<p>Pour cela, à la fin d’un chapitre, tu as un bouton dédié. « Signaler une faute dans ce chapitre ». C’est pas le bouton le plus visible par-contre. </p>
<hr>
<p>Sinon, effectivement :</p>
<p>Si :
<span class="math math-inline"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mfrac><mi>a</mi><mi>b</mi></mfrac><mo>=</mo><mfrac><mi>x</mi><mi>y</mi></mfrac><mo>=</mo><mo>></mo><mi>a</mi><mo>∗</mo><mi>y</mi><mo>=</mo><mi>x</mi><mo>∗</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">\frac{a}{b} = \frac{x}{y} => a*y = x*b</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.040392em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.695392em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">b</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">a</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.1764999999999999em;vertical-align:-0.481108em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.695392em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.03588em;">y</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">x</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.481108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span></span><span class="base"><span class="strut" style="height:0.5782em;vertical-align:-0.0391em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.46528em;vertical-align:0em;"></span><span class="mord mathdefault">a</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">∗</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.46528em;vertical-align:0em;"></span><span class="mord mathdefault">x</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">∗</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault">b</span></span></span></span></span></p>
<p>Normalement on ne devrait pas avoir de test supplémentaire à faire. Donc effectivement, si on implémente ça on a bien <span class="math math-inline"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mi mathvariant="normal">.</mi><mi>n</mi><mi>u</mi><mi>m</mi><mi>e</mi><mi>r</mi><mi>a</mi><mi>t</mi><mi>e</mi><mi>u</mi><mi>r</mi><mo>∗</mo><mi>b</mi><mi mathvariant="normal">.</mi><mi>d</mi><mi>e</mi><mi>n</mi><mi>o</mi><mi>m</mi><mi>i</mi><mi>n</mi><mi>a</mi><mi>t</mi><mi>e</mi><mi>u</mi><mi>r</mi><mo>=</mo><mo>=</mo><mi>a</mi><mi mathvariant="normal">.</mi><mi>d</mi><mi>e</mi><mi>n</mi><mi>o</mi><mi>m</mi><mi>i</mi><mi>n</mi><mi>a</mi><mi>t</mi><mi>e</mi><mi>u</mi><mi>r</mi><mo>∗</mo><mi>b</mi><mi mathvariant="normal">.</mi><mi>n</mi><mi>u</mi><mi>m</mi><mi>e</mi><mi>r</mi><mi>a</mi><mi>t</mi><mi>e</mi><mi>u</mi><mi>r</mi></mrow><annotation encoding="application/x-tex">a.numerateur * b.denominateur == a.denominateur * b.numerateur</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.61508em;vertical-align:0em;"></span><span class="mord mathdefault">a</span><span class="mord">.</span><span class="mord mathdefault">n</span><span class="mord mathdefault">u</span><span class="mord mathdefault">m</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">a</span><span class="mord mathdefault">t</span><span class="mord mathdefault">e</span><span class="mord mathdefault">u</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">∗</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault">b</span><span class="mord">.</span><span class="mord mathdefault">d</span><span class="mord mathdefault">e</span><span class="mord mathdefault">n</span><span class="mord mathdefault">o</span><span class="mord mathdefault">m</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mord mathdefault">a</span><span class="mord mathdefault">t</span><span class="mord mathdefault">e</span><span class="mord mathdefault">u</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span></span><span class="base"><span class="strut" style="height:0.36687em;vertical-align:0em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault">a</span><span class="mord">.</span><span class="mord mathdefault">d</span><span class="mord mathdefault">e</span><span class="mord mathdefault">n</span><span class="mord mathdefault">o</span><span class="mord mathdefault">m</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mord mathdefault">a</span><span class="mord mathdefault">t</span><span class="mord mathdefault">e</span><span class="mord mathdefault">u</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">∗</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault">b</span><span class="mord">.</span><span class="mord mathdefault">n</span><span class="mord mathdefault">u</span><span class="mord mathdefault">m</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">a</span><span class="mord mathdefault">t</span><span class="mord mathdefault">e</span><span class="mord mathdefault">u</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span></span></span></span></span> uniquement.</p>[Suggestion mais pas vraiment] Cours de C++ de informaticienzero et mehdidou99, message #2366472021-08-13T23:52:40+02:00Koelite/@Koelitehttps://zestedesavoir.com/forums/sujet/15598/suggestion-mais-pas-vraiment-cours-de-c-de-informaticienzero-et-mehdidou99/?page=1#p236647<p>Bonsoir,</p>
<p>Veuillez m’excuser pour mon sujet qui est sans doute dans la mauvaise catégorie, mais je n’ai pas trouvé l’endroit pour le rédiger si ce n’est ici.</p>
<p>Mon désaccord porte sur le cours de C++ de informaticienzero et mehdidou99 au chapitre "Reprendrez-vous un peu de sucre syntaxique ?" : <a href="https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/decoupons-tout-ca/reprendriez-vous-un-peu-de-sucre-syntaxique/">https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/decoupons-tout-ca/reprendriez-vous-un-peu-de-sucre-syntaxique/</a>
et plus exactement ici : <a href="https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/decoupons-tout-ca/reprendriez-vous-un-peu-de-sucre-syntaxique/#:~:text=bool%20operator%3D%3D(Fraction,denominateur%20%3D%3D%20droite.denominateur%3B%0A%7D">https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/decoupons-tout-ca/reprendriez-vous-un-peu-de-sucre-syntaxique/#:~:text=bool%20operator%3D%3D(Fraction,denominateur%20%3D%3D%20droite.denominateur%3B%0A%7D</a></p>
<p>En effet, la fonction écrite est plus compliquée qu’elle ne devrait l’être, puisqu’un test inutile est effectué.
Vérifier <code>gauche.denominateur == droite.denominateur</code> revient à vérifier <code>a.denominateur * b.denominateur == b.denominateur * a.denominateur</code>, ce qui est tautologique (à cause de la commutativité de la multiplication).</p>
<p>(Il suffit de se souvenir que a a/b = c/d ssi a*d = b*c)</p>
<p>La fonction s’écrit donc simplement :</p>
<div class="hljs-code-div hljs-code-cpp"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span></div><pre><code class="hljs language-cpp"><span class="hljs-keyword">bool</span> <span class="hljs-keyword">operator</span>==(Fraction <span class="hljs-keyword">const</span> & a, Fraction <span class="hljs-keyword">const</span> & b)
{
<span class="hljs-keyword">return</span> a.numerateur * b.denominateur == a.denominateur * b.numerateur;
}
</code></pre></div>
<p>J’espère ne pas avoir fait d’erreur (car je suis fatigué à cette heure, mais cela ne m’excuserait pas).</p>
<p><strong>Edit :</strong> Je viens de m’apercevoir en lisant la suite du code que vous n’avez pas pris en compte le fait que les numérateurs et dénominateurs pouvaient être négatifs. Ainsi les comparaisons <, <=, > et >= sont fausses. Il faudrait par exemple remplacer les types en entiers non signés (ou bien modifier les fonctions de comparaison).</p>
<p><strong>Bref, c’était un détail qui a retenu mon attention, mais en dehors de cela, je trouve le cours très bien fait et je vous en remercie !</strong> <img src="/static/smileys/svg/heureux.svg" alt=":D" class="smiley"> </p>
<p>Bonne continuation et bonne soirée.</p>Symfony, Vue, et 403, message #2347032021-05-28T13:22:31+02:00JeanTilapin/@JeanTilapinhttps://zestedesavoir.com/forums/sujet/15386/symfony-vue-et-403/?page=1#p234703<p>AH ! Ca marche ! J’ai bien récupéré la page normale d’erreur, qui me donne bien cette fois une erreur 401 et non 403. Là où ça me chagrine, c’est que je n’ai aucune idée de ce qui a pu corriger le problème tout à coup : commenté toute ligne de configuration non absolument indispensable, vidé le cache pour énième fois. Et pouf. Il faudra que je dé-commente une par une les lignes pour voir ce qui a posé problème.</p>
<p>Merci d’avoir attiré mon attention sur la mauvaise erreur générée, ça m’a globalement confirmé que le souci vient de Symfony et non Vue. </p>Symfony, Vue, et 403, message #2347022021-05-28T13:00:29+02:00ache/@achehttps://zestedesavoir.com/forums/sujet/15386/symfony-vue-et-403/?page=1#p234702<p>Un test simple ? <img src="/static/smileys/svg/1f914.svg" alt="🤔" class="smiley"></p>
<p>Quand tu es sur la page blanche. Affiche le code source (Généralement <kbd>Ctrl</kbd> + <kbd>U</kbd> ou clique droit sur la page “Afficher le code source”). Si c’est vide alors Symfony ne retourne que 403 et pas une page complété.</p>
<p>Si c’est peu remplit, ben c’est pareil. Il faut que VueJS soit inclut pour que VueJS puisse agir.</p>
<p>403 => L’authentification ne change rien. C’est une page interne par exemple. Interdit à ce “User-Agent“, interdit au IP externe, …</p>
<p>401 => Pas les droits suffisants. L’authentification pourrait résoudre le problème.</p>
<p>Dernier point: Je ne fais pas de PHP.</p>Symfony, Vue, et 403, message #2347002021-05-28T12:48:14+02:00JeanTilapin/@JeanTilapinhttps://zestedesavoir.com/forums/sujet/15386/symfony-vue-et-403/?page=1#p234700<p>Sans vouloir dire d’âneries (je peux pas vérifier là dans l’instant) : Symfony balance théoriquement une page d’erreur en mode développement pour l’erreur 403, non ? Avec le template qui détaille tout le fil requête -> réponse et là où ça a raté ? Parce que là je n’ai qu’une page blanche, alors que si je cherche à obtenir une 404, j’ai bien la page d’erreur, pareil pour la 500. Mais rien pour 403.</p>
<p>(Soit dit en passant, je perçois mal la différence entre 401 et 403)</p>
<p>Ce n’est pas moi qui choisis ce qui est retourné, c’est manifestement Symfony. C’est tout le but de ce que j’ai essayé de faire avec le entry_point et le access_denied_handler du fichier Security. Quel test simple pourrais-je effectuer pour voir si ils sont pris en compte d’une manière ou d’une autre ? A priori, un simple dd(’bouh’) ne suffit pas.</p>
<div class="hljs-code-div hljs-code-php"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span></div><pre><code class="hljs language-php"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">AccessDeniedHandler</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">AccessDeniedHandlerInterface</span>
</span>{
<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">handle</span>(<span class="hljs-params">Request $request, AccessDeniedException $accessDeniedException</span>): ?<span class="hljs-title">Response</span>
</span>{
dd(<span class="hljs-string">'bouh'</span>);
}
}
</code></pre></div>
<p>N’ayant pour l’instant aucun contrôle sur ce qui est retourné, je ne peux pas tester la page avec la redirection html que tu suggères.</p>Symfony, Vue, et 403, message #2346922021-05-28T11:33:18+02:00ache/@achehttps://zestedesavoir.com/forums/sujet/15386/symfony-vue-et-403/?page=1#p234692<figure><blockquote>
<p>Ce qui se passe, c’est que si je rentre l’adresse "localhost:8000/admin" et que je ne suis pas identifié avant, j’ai une page blanche ; dans la console quand je charge la page, j’ai une erreur 403 sur "GET [blabla]/admin", ce qui est tout à fait normal, on est bien d’accord. Ce que je veux, c’est justement rediriger vers l’accueil du site, et je ne sais pas comment faire ça.</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/15386/symfony-vue-et-403/?page=1#p234685">JeanTilapin</a></figcaption></figure>
<p>C’est ça ton problème principal ?</p>
<p>Alors, quand tu tapes, <code>localhost:8080/admin</code>. Tu reçois une erreur 403, tu n’as pas VueJS de chargé. VueJS est chargé sur une page normal qui l’inclue. Une erreur 403 n’inclue généralement pas de page avec, est-ce le cas ici ? Retourne tu une pages avec l’erreur 403 ?</p>
<p>D’ailleurs, je pense que tu devrais retournée une erreur 401 et pas 403.</p>
<p>Peut-être devrait tu tous simplement retourner une page avec <a href="https://developer.mozilla.org/fr/docs/Web/HTTP/Redirections#redirections_html">une redirection HTML</a>.</p>Symfony, Vue, et 403, message #2346852021-05-28T10:24:52+02:00JeanTilapin/@JeanTilapinhttps://zestedesavoir.com/forums/sujet/15386/symfony-vue-et-403/?page=1#p234685<p>Bonjour,</p>
<p>J’ai eu l’idée bancale il y a quelques mois de me lancer dans un projet énorme utilisant d’un côté Symfony pour gérer le back-end (données via API Platform, sécurité via Guard, Symfony Voters etc.) et d’un autre côté Vue pour un Front-end moderne et efficace. Sur l’essentiel maintenant, ça fonctionne.</p>
<p>Parmi les problèmes qui me restent à régler, il y a le cas de la redirection en cas d’erreur d’authentification. En gros, j’ai deux espaces sur l’application : une zone publique à la racine avec une demi-douzaine de pages publiques, et une zone privée où il faut avoir le ROLE_ADMIN de Symfony pour pénétrer. Cette sécurité est notamment définie dans le fichier security.yaml, section access_control. C’est une configuration tout à fait classique. Ces deux zones sont deux points d’accès différents définis dans le fichier webpack.config.js.</p>
<p>Ce qui se passe, c’est que si je rentre l’adresse "localhost:8000/admin" et que je ne suis pas identifié avant, j’ai une page blanche ; dans la console quand je charge la page, j’ai une erreur 403 sur "GET [blabla]/admin", ce qui est tout à fait normal, on est bien d’accord. Ce que je veux, c’est justement rediriger vers l’accueil du site, et je ne sais pas comment faire ça.</p>
<p>Ce que j’ai essayé du côte Symfony : </p>
<div class="hljs-code-div hljs-code-yaml"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span><span data-count="13"></span></div><pre><code class="hljs language-yaml"><span class="hljs-attr">main:</span>
<span class="hljs-attr">entry_point:</span> <span class="hljs-string">App\Security\AuthenticationEntryPoint</span>
<span class="hljs-attr">access_denied_handler:</span> <span class="hljs-string">App\Security\AccessDeniedHandler</span>
<span class="hljs-attr">anonymous:</span> <span class="hljs-literal">true</span>
<span class="hljs-attr">json_login:</span>
<span class="hljs-attr">check_path:</span> <span class="hljs-string">app_login</span>
<span class="hljs-attr">username_path:</span> <span class="hljs-string">email</span>
<span class="hljs-attr">password_path:</span> <span class="hljs-string">password</span>
<span class="hljs-attr">logout:</span>
<span class="hljs-attr">path:</span> <span class="hljs-string">app_logout</span>
</code></pre></div>
<p>J’ai défini les entry_point et access_denied_handler tirés de <a href="https://symfony.com/doc/current/security/access_denied_handler.html">cette page</a>. Même un "dd($request)" n’apparait pas.</p>
<p>Côté Vue, j’ai mis en place un "hook beforeeach" sur le Routeur. </p>
<div class="hljs-code-div hljs-code-js"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span><span data-count="13"></span><span data-count="14"></span><span data-count="15"></span></div><pre><code class="hljs language-js">router.beforeEach(<span class="hljs-keyword">async</span> (to, <span class="hljs-keyword">from</span>, next) => {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'bouh'</span>)
<span class="hljs-keyword">const</span> { requiresAuth } = to.meta;
<span class="hljs-keyword">if</span> (requiresAuth) {
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">await</span> axios.get(<span class="hljs-string">'/api/adminCheck'</span>)
.then(<span class="hljs-function"><span class="hljs-params">resp</span> =></span> {
<span class="hljs-built_in">console</span>.log(resp.data);
});
next();
} <span class="hljs-keyword">catch</span> (e) {
next(<span class="hljs-string">'/error'</span>)
}
}
})
</code></pre></div>
<p>Le 'bouh' qui est censé apparaitre à chaque changement de page n’apparait que si on est identifié. Cela ne se déclenche pas sinon, ce qui me fait penser que tout le problème vient de Symfony, qui intercepte l’erreur avant que Vue ne se lance.</p>
<p>Quelqu’un saurait-il me conseiller pour avancer sur ce problème ? Comment réussir à localiser le moment où la redirection vers une erreur 403 ne se fait pas ? Comment savoir si le access_denied_handler défini dans security.yaml peut fonctionner ? A ce stade, même une page moche Symfony 403 me ferait plaisir à voir.</p>
<p>Merci.</p>Erreur fonction std::size, message #2235512020-07-08T13:36:41+02:00valerian.roura/@valerian.rourahttps://zestedesavoir.com/forums/sujet/14321/erreur-fonction-stdsize/?page=1#p223551<p>J’ai trouvé dans les options et j’ai transféré le compilateur du C++ 14 vers le C++ 17 et ça marche merci <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"></p>Erreur fonction std::size, message #2235492020-07-08T13:34:21+02:00adri1/@adri1https://zestedesavoir.com/forums/sujet/14321/erreur-fonction-stdsize/?page=1#p223549<p>Non, il faut passer l’option <code>-std='c++17'</code> au compilateur que tu utilises dans Code::Blocks. Là, c’est à toi d’apprendre à utiliser ton outil pour savoir comment faire… Tu as probablement un menu "Build options" ou "Compiler options" quelque part qui te permet de modifier les options de compilation.</p>Erreur fonction std::size, message #2235472020-07-08T13:10:20+02:00valerian.roura/@valerian.rourahttps://zestedesavoir.com/forums/sujet/14321/erreur-fonction-stdsize/?page=1#p223547<p>Le code en soit c’est juste celui que tu as montré, et j’utilise juste Code::Block en mode C++ tout simplement, et la ligne il faut la mettre au début du code? <a href="/membres/voir/adri1/" rel="nofollow" class="ping ping-link">@<span class="ping-username">adri1</span></a></p>Erreur fonction std::size, message #2235452020-07-08T12:44:58+02:00adri1/@adri1https://zestedesavoir.com/forums/sujet/14321/erreur-fonction-stdsize/?page=1#p223545<p>Et en activant C++17 comme suggéré par <a href="/membres/voir/jo_link_noir/" rel="nofollow" class="ping ping-link">@<span class="ping-username">jo_link_noir</span></a> ?</p>
<p>Ce code du tuto</p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><iostream></span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><vector></span></span>
<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>
</span>{
<span class="hljs-built_in">std</span>::<span class="hljs-built_in">vector</span><<span class="hljs-keyword">int</span>> <span class="hljs-keyword">const</span> tableau_de_int { <span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span> };
<span class="hljs-keyword">auto</span> <span class="hljs-keyword">const</span> taille { <span class="hljs-built_in">std</span>::size(tableau_de_int) };
<span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> << <span class="hljs-string">"Mon tableau contient "</span> << taille << <span class="hljs-string">" éléments."</span> << <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
</code></pre></div>
<p>compile sans problème avec la commande <code>g++ -std='c++17' main.cpp</code>.</p>
<p>De manière générale, soit précis sur le code que tu utilises et comment tu le compiles, ça nous aide à t’aider…</p>Erreur fonction std::size, message #2235442020-07-08T12:28:00+02:00valerian.roura/@valerian.rourahttps://zestedesavoir.com/forums/sujet/14321/erreur-fonction-stdsize/?page=1#p223544<p>Et de toute façon le <code>std::vector</code> marche, c’est juste le <code>std::size</code> que le compilateur ne reconnait pas</p>Erreur fonction std::size, message #2235392020-07-08T10:32:32+02:00valerian.roura/@valerian.rourahttps://zestedesavoir.com/forums/sujet/14321/erreur-fonction-stdsize/?page=1#p223539<p>J’ai bel et bien <code>#include <vector></code>.</p>