tag:forum.selfhtml.org,2005:/self PHP: Bedingung wird nie erfüllt – SELFHTML-Forum 2021-10-16T12:00:15Z https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792492?srt=yes#m1792492 Yadgar yazdegird@gmx.de 2021-10-14T16:00:34Z 2021-10-14T16:57:25Z PHP: Bedingung wird nie erfüllt <p>Hi(gh)!</p> <p>Vorab zum Kontext:</p> <p>Meine Datenbank soll das Stichwortverzeichnis für ein mehrere Monate umspannendes privates Tagebuch verwalten. Sie enthält die Stammdatentabellen STICHWOERTER (nr, stichwort) und KATEGORIE (nr, kategorie) sowie die Relationstabellen STICHWORT_DATUM (nr, stichwoerter_nr, datum) und STICHWORT_KATEGORIE (nr, stichwoerter_nr, kategorie_nr). Indizes sind jeweils PRIMARY über nr und UNIQUE über die nachfolgenden Felder.</p> <p>Die Grundfunktionalität der mit PHP programmierten Eingabemasken ist mittlerweile fertiggestellt, mir geht es jetzt die Möglichkeit nachträglicher Bearbeitung von bereits eingegebenen Datensätzen.</p> <p>Im oberen Teil des Eingabebereiches werden die Datensätze zum "Durchblättern" als Tabelle in Zehnerblöcken angezeigt, die erste Spalte enthält jeweils interne Links ($_GET-Methode) zum Bearbeiten und Löschen.</p> <p>Klickt man diese Links an, wird die Indexnummer des jeweiligen Datensatzes an die neu aufgerufene Eingabeseite übermittelt. In diesem Fall sollen die bisherigen Werte als Voreinstellung in den Eingabeelementen des Formulars angezeigt werden.</p> <p>Bei einfachen Textfeldern (in meinem konkreten Fall: datum in STICHWORT_DATUM) funktioniert das einwandfrei, während ich es bei den Auswahlmenüs (<select><option>...) aus mir unerfindlichen Gründen nicht hinbekomme.</p> <p>Damit im Auswahlmenü das der übernommenden Indexzahl aus STICHWORT (also STICHWORT_DATUM.stichwoerter_nr) entsprechende Stichwort im Klartext anzeigt wird, schicke ich folgende Query ab:</p> <pre><code class="block language-php"> <span class="token variable">$sql3</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"SELECT STICHWOERTER.stichwort FROM STICHWOERTER, STICHWORT_DATUM WHERE STICHWORT_DATUM.stichwoerter_nr = STICHWOERTER.nr AND STICHWORT_DATUM.nr = '"</span><span class="token operator">.</span><span class="token variable">$req</span><span class="token operator">.</span><span class="token string double-quoted-string">"'"</span><span class="token punctuation">;</span> </code></pre> <p>$req nimmt hier den Wert von $_GET["edit"] auf.</p> <p>Der komplette relevante Code sieht so aus:</p> <pre><code class="block language-php">$sql1 = "SELECT nr, datum FROM STICHWORT_DATUM"; $res1 = $db->query($sql1); qcheck($res1, $db); if (empty($_GET["edit"])) { $entry1 = ""; $entry2 = ""; } else // falls Datensatz bearbeitet werden soll { while($zeile1 = $res1->fetch_array()) { if ($zeile1[0] == $_GET["edit"]) { $entry2 = $zeile1[1]; // vorselektierter Eintrag für Datum break; } } $req = $_GET["edit"]; $sql3 = "SELECT STICHWOERTER.stichwort FROM STICHWOERTER, STICHWORT_DATUM WHERE STICHWORT_DATUM.stichwoerter_nr = STICHWOERTER.nr AND STICHWORT_DATUM.nr = '". // $req."'"; $res3 = $db->query($sql3); qcheck($res3, $db); $entry1 = $res3->fetch_array(); // Eintrag für Stichwort im Auswahlmenü } $sql2 = "SELECT stichwort FROM STICHWOERTER"; $res2 = $db->query($sql2); qcheck($res2, $db); var_dump($entry1); // Kontrollausgabe ?> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>form</span> <span class="token attr-name">action</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token function">htmlspecialchars</span><span class="token punctuation">(</span><span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"PHP_SELF"</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>POST<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> Stichwort:<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>select</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stichwort<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$zusatz</span><span class="token operator">=</span><span class="token string double-quoted-string">""</span><span class="token punctuation">;</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token variable">$zeile2</span> <span class="token operator">=</span> <span class="token variable">$res2</span><span class="token operator">-></span><span class="token function">fetch_array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"edit"</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token variable">$entry1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Bedingung erfüllt!<br>"</span><span class="token punctuation">;</span> <span class="token comment">// Kontrollausgabe</span> <span class="token variable">$zusatz</span> <span class="token operator">=</span> <span class="token string double-quoted-string">" selected"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<option"</span><span class="token operator">.</span><span class="token variable">$zusatz</span><span class="token operator">.</span><span class="token string double-quoted-string">">"</span><span class="token operator">.</span><span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string double-quoted-string">"</option>\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>select</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> Datum<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token string single-quoted-string">'<input type="text" name="datum" size="10" value="'</span><span class="token operator">.</span><span class="token variable">$entry2</span><span class="token operator">.</span><span class="token string single-quoted-string">'">'</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> <p>Die Kontrollausgabe von $entry1 zeigt den korrekten String... aber trotzdem wird die Bedingung (!empty($_GET["edit"]) && $zeile2[0] == $entry1) nie erfüllt! Warum?</p> <p>Bis bald im Khyberspace!</p> <p>Yadgar</p> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792495?srt=yes#m1792495 Rolf B 2021-10-14T17:28:58Z 2021-10-14T19:19:50Z PHP: Bedingung wird nie erfüllt <p>Hallo Yadgar,</p> <pre><code class="block bad language-php"> <span class="token variable">$req</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"edit"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token variable">$sql3</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"SELECT ... WHERE ... AND STICHWORT_DATUM.nr = '"</span><span class="token operator">.</span> <span class="token comment">// </span> <span class="token variable">$req</span><span class="token operator">.</span><span class="token string double-quoted-string">"'"</span><span class="token punctuation">;</span> </code></pre> <p>Schönen Gruß von <a href="https://xkcd.com/327/" rel="nofollow noopener noreferrer">Bobby Tables</a>. Bestimmt nicht zum ersten Mal!</p> <p>Im Übrigen wird das Problem wohl an der Ursache liegen, die man dem Code aber nicht ansieht. Ich weiß nicht, was Du da aus der Stichwörter-Tabelle herausliest. Das Problem könnten Spaces sein, die in der DB stehen. Z.B. weil es keine VARCHAR-Spalte ist. Das kriegst Du raus, wenn Du die "Kontrollausgabe" vor den if ziehst und die beiden Werte, die Du vergleichst, ausgibst. Und dann am besten in einem Monospace-Font anschaust (sprich: In der Sourcecode-Ansicht der Entwicklerwerkzeuge), und nicht das, was der Browser draus macht.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792497?srt=yes#m1792497 Robert B. 2021-10-14T17:34:59Z 2021-10-14T17:35:29Z PHP: Bedingung wird nie erfüllt <p>Moin Yadgar,</p> <blockquote> <p>Damit im Auswahlmenü das der übernommenden Indexzahl aus STICHWORT (also STICHWORT_DATUM.stichwoerter_nr) entsprechende Stichwort im Klartext anzeigt wird, schicke ich folgende Query ab:</p> <pre><code class="block language-php"><span class="token variable">$sql3</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"SELECT STICHWOERTER.stichwort FROM STICHWOERTER, STICHWORT_DATUM WHERE STICHWORT_DATUM.stichwoerter_nr = STICHWOERTER.nr AND STICHWORT_DATUM.nr = '"</span><span class="token operator">.</span><span class="token variable">$req</span><span class="token operator">.</span><span class="token string double-quoted-string">"'"</span><span class="token punctuation">;</span> </code></pre> <p>$req nimmt hier den Wert von $_GET["edit"] auf.</p> </blockquote> <p>Das ist so keine gute Idee, weil das eine astreine <em>SQL-Injection</em>-Lücke ist. Man braucht dein Script nur mit dem URL-Parameter <code>?edit=' or ''='</code> aufrufen und es wird einfach mal alles <code>SELECT</code>iert. Du möchtest Escaping oder besser <em>prepared statements</em> verwenden!</p> <blockquote> <p>Der komplette relevante Code sieht so aus:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment">// …</span> <span class="token keyword">while</span><span class="token punctuation">(</span><span class="token variable">$zeile1</span> <span class="token operator">=</span> <span class="token variable">$res1</span><span class="token operator">-></span><span class="token function">fetch_array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$zeile1</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"edit"</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$entry2</span> <span class="token operator">=</span> <span class="token variable">$zeile1</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment">// vorselektierter Eintrag für Datum</span> <span class="token keyword">break</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">// …</span> <span class="token variable">$entry1</span> <span class="token operator">=</span> <span class="token variable">$res3</span><span class="token operator">-></span><span class="token function">fetch_array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Eintrag für Stichwort im Auswahlmenü</span> <span class="token punctuation">}</span> <span class="token comment">// …</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>form</span> <span class="token attr-name">action</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token function">htmlspecialchars</span><span class="token punctuation">(</span><span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"PHP_SELF"</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span><span class="token punctuation">"</span></span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>POST<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> Stichwort:<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> </code></pre> </blockquote> <p>Das <em>Stichwort</em> möchte wohl ein <a href="https://wiki.selfhtml.org/wiki/HTML/Elemente/label" rel="nofollow noopener noreferrer"><code>label</code></a> sein.</p> <blockquote> <pre><code class="block language-php"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>select</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stichwort<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$zusatz</span><span class="token operator">=</span><span class="token string double-quoted-string">""</span><span class="token punctuation">;</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token variable">$zeile2</span> <span class="token operator">=</span> <span class="token variable">$res2</span><span class="token operator">-></span><span class="token function">fetch_array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"edit"</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token variable">$entry1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Bedingung erfüllt!<br>"</span><span class="token punctuation">;</span> <span class="token comment">// Kontrollausgabe</span> <span class="token variable">$zusatz</span> <span class="token operator">=</span> <span class="token string double-quoted-string">" selected"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<option"</span><span class="token operator">.</span><span class="token variable">$zusatz</span><span class="token operator">.</span><span class="token string double-quoted-string">">"</span><span class="token operator">.</span><span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string double-quoted-string">"</option>\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>select</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> </code></pre> </blockquote> <ul> <li>Wenn die Bedingung einmal erfüllt ist, wird <code>$zusatz</code> gesetzt, es wird aber nie zurückgesetzt, falls die Bedingung nicht mehr erfüllt ist.</li> <li><code>$zeile2[0]</code> ist vermutlich ein Skalar, <code>$entry1</code> ist ein Array.</li> <li><code>$zeile2[0]</code> wird unbehandelt in den HTML-Kontext gesetzt. Damit besteht die Gefahr von <em>Cross Site Scripting</em>.</li> </ul> <p>⇒ Du möchtest dich mit dem Thema <a href="https://wiki.selfhtml.org/wiki/Programmiertechnik/Kontextwechsel" rel="nofollow noopener noreferrer">Kontextwechsel</a> beschäftigen.</p> <blockquote> <pre><code class="block language-php"> Datum<span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token string single-quoted-string">'<input type="text" name="datum" size="10" value="'</span><span class="token operator">.</span><span class="token variable">$entry2</span><span class="token operator">.</span><span class="token string single-quoted-string">'">'</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> </blockquote> <p><code>$entry2</code> wird unbehandelt in den HTML-Kontext gesetzt. Damit besteht die Gefahr von <em>Cross Site Scripting</em>.</p> <blockquote> <p>Die Kontrollausgabe von $entry1 zeigt den korrekten String... aber trotzdem wird die Bedingung (!empty($_GET["edit"]) && $zeile2[0] == $entry1) nie erfüllt! Warum?</p> </blockquote> <p>Vermutlich ist der Vergleich eines Skalars mit einem Array <code>false</code>.</p> <p>Viele Grüße<br> Robert</p> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792501?srt=yes#m1792501 Der Martin 2021-10-14T18:10:40Z 2021-10-14T18:10:40Z PHP: Bedingung wird nie erfüllt <p>Hallo,</p> <blockquote> <p>Das kriegst Du raus, wenn Du die "Kontrollausgab" vor den if ziehst und die beiden Werte, die Du vergleichst, ausgibst.</p> </blockquote> <p>und zwar mit einem bewusst gesetzten Begrenzer-Zeichen vor und nach dem String, um auch abschließende Leerzeichen zu sehen. Oder als Hex-Dump, dann ist wirklich jeder noch so subtile Unterschied sichtbar.</p> <p>Live long and <s>pros</s> healthy,<br>  Martin</p> <div class="signature">-- <br> Bei Erwärmung steigt das Thermometer, bei Erkältung singt es. </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792505?srt=yes#m1792505 Rolf B 2021-10-14T19:27:27Z 2021-10-14T19:27:27Z PHP: Bedingung wird nie erfüllt <p>Hallo Robert,</p> <blockquote> <ul> <li>Wenn die Bedingung einmal erfüllt ist, wird $zusatz gesetzt, es wird aber nie zurückgesetzt, falls die Bedingung nicht mehr erfüllt ist.</li> </ul> </blockquote> <p>Good catch. Der Init muss in den while. Und könnte da zu einem ?: Operator kollabieren.</p> <blockquote> <ul> <li>$zeile2[0] ist vermutlich ein Skalar, $entry1 ist ein Array.</li> </ul> </blockquote> <p>Au weia. Natürlich. Es kommt aus fetch_array.</p> <blockquote> <ul> <li>$zeile2[0] wird unbehandelt in den HTML-Kontext gesetzt. Damit besteht die Gefahr von Cross Site Scripting.</li> </ul> </blockquote> <p>Die Forderung ist richtig, aber die Begründung kann variieren. Ob XSS-Gefahr besteht, hängt davon ab, wer die Stichworttabelle pflegt. Muss man seinem eigenen Tabellen-Admin misstrauen? Das Hauptargument ist: Es sind Daten aus einer Tabelle, die da ausgegeben werden, es könnten zum Kontext unpassende Zeichen drinstehen, also ab damit nach htmlspecialchars. Auf diese Funktion verzichtet man nur dann, wenn man weiß, dass in der Variablen HTML steht, das man als HTML ausgeben will.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792512?srt=yes#m1792512 Yadgar yazdegird@gmx.de 2021-10-15T00:54:07Z 2021-10-15T04:49:38Z PHP: Bedingung wird nie erfüllt <p>Hi(gh)!</p> <blockquote> <p>Moin Yadgar,</p> </blockquote> <blockquote> <p>Das ist so keine gute Idee, weil das eine astreine <em>SQL-Injection</em>-Lücke ist. Man braucht dein Script nur mit dem URL-Parameter <code>?edit=' or ''='</code> aufrufen und es wird einfach mal alles <code>SELECT</code>iert. Du möchtest Escaping oder besser <em>prepared statements</em> verwenden!</p> </blockquote> <p>Nein, das möchte ich in diesem Fall nicht, denn: https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792511#m1792511</p> <blockquote> <p>Das <em>Stichwort</em> möchte wohl ein <a href="https://wiki.selfhtml.org/wiki/HTML/Elemente/label" rel="nofollow noopener noreferrer"><code>label</code></a> sein.</p> </blockquote> <p>Ja, das macht man heutzutage wohl so...</p> <blockquote> <ul> <li>Wenn die Bedingung einmal erfüllt ist, wird <code>$zusatz</code> gesetzt, es wird aber nie zurückgesetzt, falls die Bedingung nicht mehr erfüllt ist.</li> </ul> </blockquote> <p>Stimmt, das ist ein Fehler!</p> <blockquote> <ul> <li><code>$zeile2[0]</code> ist vermutlich ein Skalar, <code>$entry1</code> ist ein Array.</li> </ul> </blockquote> <p>Yep!</p> <blockquote> <ul> <li><code>$zeile2[0]</code> wird unbehandelt in den HTML-Kontext gesetzt. Damit besteht die Gefahr von <em>Cross Site Scripting</em>.</li> </ul> </blockquote> <p>s. o.</p> <blockquote> <p><code>$entry2</code> wird unbehandelt in den HTML-Kontext gesetzt. Damit besteht die Gefahr von <em>Cross Site Scripting</em>.</p> </blockquote> <p>s. o.</p> <blockquote> <p>Vermutlich ist der Vergleich eines Skalars mit einem Array <code>false</code>.</p> </blockquote> <p>Ist er, ich hatte nicht bedacht, dass fetch_array() auch im Falle eines einzigen Feldeintrags als Ergebnis dieses immer in doppelter Ausführung (mit numerischem und Label-Index) und damit natürlich als Array raushaut...</p> <p>Also korrigierte ich den Code:</p> <pre><code class="block language-php"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>select</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stichwort<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token variable">$zeile2</span> <span class="token operator">=</span> <span class="token variable">$res2</span><span class="token operator">-></span><span class="token function">fetch_array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string double-quoted-string">"<br>"</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"edit"</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token variable">$entry1</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment">// jetzt mit Index!</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Bedingung erfüllt!<br>"</span><span class="token punctuation">;</span> <span class="token comment">// Kontrollausgabe</span> <span class="token variable">$zusatz</span> <span class="token operator">=</span> <span class="token string double-quoted-string">" selected"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token variable">$zusatz</span> <span class="token operator">=</span><span class="token string double-quoted-string">""</span><span class="token punctuation">;</span> <span class="token comment">// auf Leerstring zurückgesetzt falls Bedingung unwahr</span> <span class="token punctuation">}</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<option"</span><span class="token operator">.</span><span class="token variable">$zusatz</span><span class="token operator">.</span><span class="token string double-quoted-string">">"</span><span class="token operator">.</span><span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string double-quoted-string">"</option>\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>select</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> </code></pre> <p>...und jetzt funktioniert es! Danke für die Hinweise!</p> <p>Bis bald im Khyberspace!</p> <p>Yadgar</p> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792502?srt=yes#m1792502 dedlfix 2021-10-14T18:47:35Z 2021-10-14T18:47:35Z PHP: Bedingung wird nie erfüllt <p>Tach!</p> <blockquote> <blockquote> <p>Das kriegst Du raus, wenn Du die "Kontrollausgab" vor den if ziehst und die beiden Werte, die Du vergleichst, ausgibst.</p> </blockquote> <p>und zwar mit einem bewusst gesetzten Begrenzer-Zeichen vor und nach dem String, um auch abschließende Leerzeichen zu sehen.</p> </blockquote> <p>Also ganz einfach mit <code>var_dump()</code>.</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792503?srt=yes#m1792503 Der Martin 2021-10-14T19:01:01Z 2021-10-14T19:01:01Z PHP: Bedingung wird nie erfüllt <p>Hallo,</p> <blockquote> <blockquote> <p>und zwar mit einem bewusst gesetzten Begrenzer-Zeichen vor und nach dem String, um auch abschließende Leerzeichen zu sehen.</p> </blockquote> <p>Also ganz einfach mit <code>var_dump()</code>.</p> </blockquote> <p>wo er recht hat ... </p> <p>Live long and <s>pros</s> healthy,<br>  Martin</p> <div class="signature">-- <br> Bei Erwärmung steigt das Thermometer, bei Erkältung singt es. </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792511?srt=yes#m1792511 Yadgar yazdegird@gmx.de 2021-10-15T00:45:25Z 2021-10-15T00:45:25Z PHP: Bedingung wird nie erfüllt <p>Hi(gh)!</p> <blockquote> <p>Die Forderung ist richtig, aber die Begründung kann variieren. Ob XSS-Gefahr besteht, hängt davon ab, wer die Stichworttabelle pflegt. Muss man seinem eigenen Tabellen-Admin misstrauen?</p> </blockquote> <p>Wohl kaum, der Tabellen-Admin bin nämlich ich selbst und niemand sonst. Und daran wird sich auch nichts ändern, da sich diese Datenbank ausschließlich auf ein streng persönliches Tagebuch bezieht. Dieses Tagebuch ist über weite Strecken ein Produkt meines kranken Geistes und würde öffentlich gemacht ganze Bündel von Straftatbeständen erfüllen - zur eurer Beruhigung: Kinderporno ist nicht dabei - also bleibt es lokal auf meiner Festplatte. Allenfalls mein zukünftiger Psychotherapeut würde es zu lesen bekommen, hätte aber ebenfalls keinen schreibenden Zugriff auf die Datenbank.</p> <p>Bis bald im Khyberspace!</p> <p>Yadgar</p> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792516?srt=yes#m1792516 Robert B. 2021-10-15T07:44:37Z 2021-10-15T07:48:54Z PHP: Bedingung wird nie erfüllt <p>Moin Yadgar,</p> <blockquote> <blockquote> <p>Die Forderung ist richtig, aber die Begründung kann variieren. Ob XSS-Gefahr besteht, hängt davon ab, wer die Stichworttabelle pflegt. Muss man seinem eigenen Tabellen-Admin misstrauen?</p> </blockquote> <p>Wohl kaum, der Tabellen-Admin bin nämlich ich selbst und niemand sonst. Und daran wird sich auch nichts ändern, da sich diese Datenbank ausschließlich auf ein streng persönliches Tagebuch bezieht. Dieses Tagebuch ist über weite Strecken ein Produkt meines kranken Geistes […]</p> </blockquote> <p>Nichtsdestrotrotz könn(t)en deine Schlagworte (irgendwann) so „unverdächtige“ Zeichen wie <code>"Anführungszeichen'</code>, das „Kaufmanns-Und“ <code>&</code> oder <code>>spitze Klammern<</code> enthalten. Das ist zwar dann nicht zwingend eine Sicherheitslücke, kann dir aber die Anzeige zerschießen.</p> <p>Im Übrigen wird im Allgemeinen mehr Zeit und Energie darauf verwandt zu argumentieren, warum ein Kontextwechsel scheinbar harmlos ist, anstatt die korrekte Behandlung einfach schnell einzubauen. Und nichts hält sich hartnäckiger als die Wiederverwendung von Code und damit auch von solchen „Schlampereien“ bzw. Anti-Patterns. Es richtig (TM) zu machen, zahlt sich <em>immer</em> aus.</p> <p>Viele Grüße<br> Robert</p> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792518?srt=yes#m1792518 Robert B. 2021-10-15T07:58:42Z 2021-10-15T07:58:42Z PHP: Bedingung wird nie erfüllt <p>Moin Yadgar,</p> <blockquote> <blockquote> <p>Das ist so keine gute Idee, weil das eine astreine <em>SQL-Injection</em>-Lücke ist. Man braucht dein Script nur mit dem URL-Parameter <code>?edit=' or ''='</code> aufrufen und es wird einfach mal alles <code>SELECT</code>iert. Du möchtest Escaping oder besser <em>prepared statements</em> verwenden!</p> </blockquote> <p>Nein, das möchte ich in diesem Fall nicht, denn: <a href="https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792511#m1792511" rel="noopener noreferrer">https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792511#m1792511</a></p> </blockquote> <p>Mit spitzen Klammern machst du hier im Forum übrigens aus einer URL einen Link.</p> <p>Ich habe dir <a href="https://forum.selfhtml.org/m1792516" rel="noopener noreferrer">dort geantwortet, warum du das trotzdem tun möchtest</a>.</p> <blockquote> <blockquote> <p>Das <em>Stichwort</em> möchte wohl ein <a href="https://wiki.selfhtml.org/wiki/HTML/Elemente/label" rel="nofollow noopener noreferrer"><code>label</code></a> sein.</p> </blockquote> <p>Ja, das macht man heutzutage wohl so...</p> </blockquote> <p>Es hat auch gewisse Vorteile, weil das <code>label</code> nämlich auch klickbar ist. Bei einem Radiobutton oder eine Checkbox macht sich das richtig bemerkbar – oder wenn es ums Styling geht.</p> <blockquote> <blockquote> <ul> <li><code>$zeile2[0]</code> wird unbehandelt in den HTML-Kontext gesetzt. Damit besteht die Gefahr von <em>Cross Site Scripting</em>.</li> </ul> </blockquote> <p>s. o.</p> </blockquote> <p><a href="https://forum.selfhtml.org/m1792516" rel="noopener noreferrer">siehe „seitwärts“</a></p> <blockquote> <blockquote> <p><code>$entry2</code> wird unbehandelt in den HTML-Kontext gesetzt. Damit besteht die Gefahr von <em>Cross Site Scripting</em>.</p> </blockquote> <p>s. o.</p> </blockquote> <p>siehe „seitwärts“</p> <blockquote> <blockquote> <p>Vermutlich ist der Vergleich eines Skalars mit einem Array <code>false</code>.</p> </blockquote> <p>Ist er, ich hatte nicht bedacht, dass fetch_array() auch im Falle eines einzigen Feldeintrags als Ergebnis dieses immer in doppelter Ausführung (mit numerischem und Label-Index) und damit natürlich als Array raushaut...</p> </blockquote> <p>Es gibt laut <a href="https://www.php.net/manual/en/mysqli-result.fetch-array.php" rel="nofollow noopener noreferrer">Handbuch von <code>fetch_array()</code></a> genau <em>einen</em> Fall, in dem kein Array zurückgegeben wird:</p> <blockquote> <h4>Return Values</h4><p>Returns an array of values that corresponds to the fetched row or <code>null</code> if there are no more rows in result set.</p> </blockquote> <p>Und mir ist bislang noch kein Fall untergekommen, in dem das PHP-Handbuch eine Funktion falsch beschrieben hätte.</p> <blockquote> <p>Also korrigierte ich den Code:</p> </blockquote> <p>… in Teilen …</p> <blockquote> <pre><code class="block language-php"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>select</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stichwort<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token variable">$zeile2</span> <span class="token operator">=</span> <span class="token variable">$res2</span><span class="token operator">-></span><span class="token function">fetch_array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string double-quoted-string">"<br>"</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"edit"</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token variable">$entry1</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment">// jetzt mit Index!</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Bedingung erfüllt!<br>"</span><span class="token punctuation">;</span> <span class="token comment">// Kontrollausgabe</span> <span class="token variable">$zusatz</span> <span class="token operator">=</span> <span class="token string double-quoted-string">" selected"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token variable">$zusatz</span> <span class="token operator">=</span><span class="token string double-quoted-string">""</span><span class="token punctuation">;</span> <span class="token comment">// auf Leerstring zurückgesetzt falls Bedingung unwahr</span> <span class="token punctuation">}</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<option"</span><span class="token operator">.</span><span class="token variable">$zusatz</span><span class="token operator">.</span><span class="token string double-quoted-string">">"</span><span class="token operator">.</span><span class="token variable">$zeile2</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string double-quoted-string">"</option>\n"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>select</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>br</span><span class="token punctuation">></span></span> </code></pre> <p>...und jetzt funktioniert es!</p> </blockquote> <p>… <a href="https://forum.selfhtml.org/m1792516" rel="noopener noreferrer">bis</a> …</p> <p>Viele Grüße<br> Robert</p> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792519?srt=yes#m1792519 Rolf B 2021-10-15T07:59:21Z 2021-10-15T07:59:21Z PHP: Bedingung wird nie erfüllt <p>Hallo Yadgar,</p> <blockquote> <blockquote> <p>Du möchtest Escaping (...) verwenden!</p> </blockquote> </blockquote> <blockquote> <p>Nein, das möchte ich in diesem Fall nicht</p> </blockquote> <p>Es geht nicht um "ich möchte". Es geht um "wie macht man es richtig". Da sollte man tatsächlich nicht abwägen, ob das nötig ist oder nicht. Diese Abwägung dauert länger als der Einbau der Maskierung.</p> <p>Ein htmlspecialchars frisst nur einen Krümel, kein Brot. Gewöhne es Dir einfach an, bei allen Ausgaben an den Browser. Sonst fällt es Dir irgendwann auf die Füße, mit einer spitzen Kante voraus.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792520?srt=yes#m1792520 Der Martin 2021-10-15T08:00:07Z 2021-10-15T08:00:07Z PHP: Bedingung wird nie erfüllt <p>Hallo miteinander,</p> <blockquote> <p>Und nichts hält sich hartnäckiger als die Wiederverwendung von Code und damit auch von solchen „Schlampereien“ bzw. Anti-Patterns.</p> </blockquote> <p>genau, nichts hält länger als ein Provisorium.</p> <p>Live long and <s>pros</s> healthy,<br>  Martin</p> <div class="signature">-- <br> Bei Erwärmung steigt das Thermometer, bei Erkältung singt es. </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792537?srt=yes#m1792537 Auge 2021-10-15T13:09:29Z 2021-10-15T13:09:57Z PHP: Bedingung wird nie erfüllt <p>Hallo</p> <blockquote> <p>Im Übrigen wird im Allgemeinen mehr Zeit und Energie darauf verwandt zu argumentieren, warum ein Kontextwechsel scheinbar harmlos ist, anstatt die korrekte Behandlung einfach schnell einzubauen. Und nichts hält sich hartnäckiger als die Wiederverwendung von Code und damit auch von solchen „Schlampereien“ bzw. Anti-Patterns. Es richtig (TM) zu machen, zahlt sich <em>immer</em> aus.</p> </blockquote> <p>Bugreport zur Forensoftware: Man kann einen Beitrag nur einmal bewerten. </p> <p>Der Beitrag meines Vor<s>redners</s> … ähh … <em>schreibers</em> hätte es allein nur wegen des hier zitierten Absatzes verdient, dass <em><strong>jeder</strong></em>, der hier Bewertungen abgeben kann, dies auch minimal zehnmal in Form einer positiven Bewertung tut. Das aber nicht, wie es jetzt implementiert ist, indem der Status zwischen einer positiven und einer Nichtbewertung wechselt, sondern so, dass sich die Klicks aufsummieren.</p> <p>Ansonsten, <a href="https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792520#m1792520" rel="noopener noreferrer">was Martin sagt</a>.</p> <p>Tschö, Auge</p> <div class="signature">-- <br> 200 ist das neue 35. </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792522?srt=yes#m1792522 Rolf B 2021-10-15T08:12:50Z 2021-10-15T08:12:50Z PHP: Bedingung wird nie erfüllt <p>Hallo Robert,</p> <blockquote> <p>Es hat auch gewisse Vorteile, weil das label nämlich auch klickbar ist.</p> </blockquote> <p>Was dem optischen Eindruck nach stimmt, aber nicht ganz präzise ist. Labels klickbar zu nennen würde beinhalten, dass ein click-Handler für sie sinnvoll sein könnte. Das wäre ein Irrtum. Labels an sich sind nicht interaktiv.</p> <p>Aber sie transferieren den Klick an das gelabelte Element, sofern es ein Form Control ist. Wenn ich ein div labele, passiert das nicht. Bei einem summary/details-Element auch nicht.</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>label</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>lfoo<span class="token punctuation">"</span></span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>foo<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Sag was: <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>label</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>foo<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> </code></pre> <p>Script:</p> <pre><code class="block language-js">document<span class="token punctuation">.</span>body<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">"click"</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">event</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"click auf "</span> <span class="token operator">+</span> event<span class="token punctuation">.</span>target<span class="token punctuation">.</span>id<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> </code></pre> <p>gibt bei Klick auf das Label aus:</p> <pre><code class="block">click auf lfoo click auf foo </code></pre> <p>und der Fokus wandert in die Textbox.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792521?srt=yes#m1792521 Robert B. 2021-10-15T08:02:01Z 2021-10-15T08:02:01Z PHP: Bedingung wird nie erfüllt <p>Moin Rolf,</p> <blockquote> <p>Ein htmlspecialchars frisst nur einen Krümel, kein Brot. Gewöhne es Dir einfach an, bei allen Ausgaben an den Browser. Sonst fällt es Dir irgendwann auf die Füße, mit einer spitzen Kante voraus.</p> </blockquote> <p>… und zwar sprichwörtlich.</p> <p>Viele Grüße<br> Robert</p> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792553?srt=yes#m1792553 TS ts-self@online.de https://bitworks.de 2021-10-16T06:05:55Z 2021-10-16T06:05:55Z PHP: Bedingung wird nie erfüllt <p>Hello,</p> <blockquote> <blockquote> <blockquote> <p>Du möchtest Escaping (...) verwenden!</p> </blockquote> </blockquote> <blockquote> <p>Nein, das möchte ich in diesem Fall nicht</p> </blockquote> <p>Es geht nicht um "ich möchte". Es geht um "wie macht man es richtig". Da sollte man tatsächlich nicht abwägen, ob das nötig ist oder nicht. Diese Abwägung dauert länger als der Einbau der Maskierung.</p> </blockquote> <p>Es geht an dieser Stelle auch um <strong>Verantwortung</strong>. Verantwortung für das ganze Netz. Denn eine SQL-Injection-Lücke kann durchaus dazu führen, dass der Host gekapert wird und dann für ROBOT-ANGRIFFE auf andere Hosts bereitgehalten wird.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792538?srt=yes#m1792538 Robert B. 2021-10-15T13:36:28Z 2021-10-15T13:36:28Z PHP: Bedingung wird nie erfüllt <p>Moin Auge,</p> <blockquote> <blockquote> <p>Im Übrigen wird im Allgemeinen mehr Zeit und Energie darauf verwandt zu argumentieren, warum ein Kontextwechsel scheinbar harmlos ist, anstatt die korrekte Behandlung einfach schnell einzubauen. Und nichts hält sich hartnäckiger als die Wiederverwendung von Code und damit auch von solchen „Schlampereien“ bzw. Anti-Patterns. Es richtig (TM) zu machen, zahlt sich <em>immer</em> aus.</p> </blockquote> <p>Bugreport zur Forensoftware: Man kann einen Beitrag nur einmal bewerten. </p> </blockquote> <p>also ich kann Beiträge einmal <em>positiv/negativ</em> und einmal <em>als interessant</em> bewerten </p> <blockquote> <p>Der Beitrag meines Vor<s>redners</s> … ähh … <em>schreibers</em> hätte es allein nur wegen des hier zitierten Absatzes verdient, dass <em><strong>jeder</strong></em>, der hier Bewertungen abgeben kann, dies auch minimal zehnmal in Form einer positiven Bewertung tut.</p> </blockquote> <p>Vielen Dank für die Blumen! Aber ich schreibe das doch wegen der Message und nicht der Bewertungen </p> <p>Viele Grüße<br> Robert</p> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792540?srt=yes#m1792540 Auge 2021-10-15T14:05:35Z 2021-10-15T14:05:35Z PHP: Bedingung wird nie erfüllt <p>Hallo</p> <blockquote> <blockquote> <p>Der Beitrag meines Vor<s>redners</s> … ähh … <em>schreibers</em> hätte es allein nur wegen des hier zitierten Absatzes verdient, dass <em><strong>jeder</strong></em>, der hier Bewertungen abgeben kann, dies auch minimal zehnmal in Form einer positiven Bewertung tut.</p> </blockquote> <p>Vielen Dank für die Blumen! Aber ich schreibe das doch wegen der Message und nicht der Bewertungen </p> </blockquote> <p>… und diese Message halte ich für überaus wichtig. </p> <p>Tschö, Auge</p> <div class="signature">-- <br> 200 ist das neue 35. </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792561?srt=yes#m1792561 Rolf B 2021-10-16T09:32:15Z 2021-10-16T09:32:15Z PHP: Bedingung wird nie erfüllt <p>Hallo Tom,</p> <p>du hast Recht, dass SQL Injection Folgeschäden haben kann. Deswegen ja mein Gruß von Bobby Tables (vor allem von seiner Mama!) gleich zu Anfang.</p> <p>Es ging just nun aber um HTML Maskierung . Ich glaube, damit verpestet man keinen Server. Nur den Client. Bis der dann die Pest woandershin weiterreicht…</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792575?srt=yes#m1792575 Robert B. 2021-10-16T12:00:15Z 2021-10-16T12:00:15Z PHP: Bedingung wird nie erfüllt <p>Moin Rolf,</p> <blockquote> <p>du hast Recht, dass SQL Injection Folgeschäden haben kann. Deswegen ja mein Gruß von Bobby Tables (vor allem von seiner Mama!) gleich zu Anfang.</p> <p>Es ging just nun aber um HTML Maskierung .</p> </blockquote> <p>Nein, es ging <a href="https://forum.selfhtml.org/m1792497" rel="noopener noreferrer">auch um SQL-Injection</a>.</p> <p>Viele Grüße Robert</p>