Per Klick Button erscheinen lassen, der Variable an andere Seite übergeben kann
bearbeitet von Rolf BHallo Nadine,
eine Möglichkeit, so etwas zu lösen, ist ein
~~~php
<input type="hidden" name="suchbegriff" value="<?= htmlspecialchars($suchbegriff]) ?>">
~~~
auf der Seite. Das htmlspecialchars ist wichtig, andernfalls könnten Dir Sonderzeichen in der Eingabe das HTML kaputt machen. Den Feldinhalt findest Du dann wieder unter $_POST.
Eine Alternative zum hidden Field wäre ein temporärer Cookie (d.h. der expires-Parameter in set_cookie ist 0) oder $_SESSION. Einen Cookie findest Du im nächsten Request in $_COOKIES, Sessiondaten in $_SESSION, für Session-Handling musst Du aber auch etwas vorsehen, um die Sessiondaten zu speichern. Ich weiß grad nicht, ob PHP das immer automatisch tut.
Für temporäre Cookies (ein Suchbegriff-Cookie oder auch der Cookie für die Session-ID) musst Du den User nicht um Erlaubnis fragen, die verschwinden nach Schließen des Browsers. Du erwähnst einfach in der Datenschutzerklärung, dass Du sie benutzt.
#Aber Dein SQL Zugriff benötigt dringend eine Korrektur.
Im vorliegenden Statement kann man nicht viel kaputt machen, aber wenn dein Login-Teil ebenso aussieht, injiziert man Dir damit problemlos einen falschen Login. Und wenn Dein MYSQL Mehrfachstatements zulässt, injiziert man Dir damit auch Code, der deine Tabellen leert oder DROPt.
Heißt: Du kannst nicht einfach $suchbegriff in das SQL Statement einsetzen, du musst einen korrekten [Kontextwechsel](https://wiki.selfhtml.org/wiki/Programmiertechnik/Kontextwechsel) von "Plaintext" nach "SQL Parameter" durchführen. Dazu dient die Funktion mysqli_real_escape_string, bzw. $mysqli->escape_string wenn Du die Objektvariante verwendest. Guck's Dir in der [PHP Doku](http://php.net/manual/de/mysqli.real-escape-string.php) an.
_Rolf_
--
sumpsi - posui - clusi
Per Klick Button erscheinen lassen, der Variable an andere Seite übergeben kann
bearbeitet von Rolf BHallo Nadine,
in solchen Fällen setzt man ein
~~~php
<input type="hidden" name="suchbegriff" value="<?= htmlspecialchars($suchbegriff]) ?>">
~~~
auf die Seite. Das htmlspecialchars ist wichtig, andernfalls könnten Dir Sonderzeichen in der Eingabe das HTML kaputt machen. Den Feldinhalt findest Du dann wieder unter $_POST.
**Dein SQL Zugriff benötigt dringend eine Korrektur.** Im vorliegenden Statement kann man nicht viel kaputt machen, aber wenn dein Login-Teil ebenso aussieht, injiziert man Dir damit problemlos einen falschen Login. Und wenn Dein MYSQL Mehrfachstatements zulässt, injiziert man Dir damit auch Code, der deine Tabellen leert oder DROPt.
Heißt: Du kannst nicht einfach $suchbegriff in das SQL Statement einsetzen, du musst einen korrekten [Kontextwechsel](https://wiki.selfhtml.org/wiki/Programmiertechnik/Kontextwechsel) von "Plaintext" nach "SQL Parameter" durchführen. Dazu dient die Funktion mysqli_real_escape_string, bzw. $mysqli->escape_string wenn Du die Objektvariante verwendest. Guck's Dir in der [PHP Doku](http://php.net/manual/de/mysqli.real-escape-string.php) an.
Eine Alternative zum hidden Field wäre noch ein temporärer Cookie (d.h. der expires-Parameter in set_cookie ist 0) oder $_SESSION. Hast Du Session-Handling drin? Für temporäre Cookies (ein Suchbegriff-Cookie oder auch der Cookie für die Session-ID) musst Du den User nicht um Erlaubnis fragen, die verschwinden nach Schließen des Browsers. Du erwähnst einfach in der Datenschutzerklärung, dass Du sie benutzt.
_Rolf_
--
sumpsi - posui - clusi
Per Klick Button erscheinen lassen, der Variable an andere Seite übergeben kann
bearbeitet von Rolf BHallo Nadine,
in solchen Fällen setzt man ein
~~~php
<input type="hidden" name="suchbegriff" value="<?= htmlspecialchars($suchbegriff]) ?>">
~~~
auf die Seite. Das htmlspecialchars ist wichtig, andernfalls könnten Dir Sonderzeichen in der Eingabe das HTML kaputt machen.
**Dein SQL Zugriff benötigt dringend eine Korrektur.** Im vorliegenden Statement kann man nicht viel kaputt machen, aber wenn dein Login-Teil ebenso aussieht, injiziert man Dir damit problemlos einen falschen Login. Und wenn Dein MYSQL Mehrfachstatements zulässt, injiziert man Dir damit auch Code, der deine Tabellen leert oder DROPt.
Heißt: Du kannst nicht einfach $suchbegriff in das SQL Statement einsetzen, du musst einen korrekten [Kontextwechsel](https://wiki.selfhtml.org/wiki/Programmiertechnik/Kontextwechsel) von "Plaintext" nach "SQL Parameter" durchführen. Dazu dient die Funktion mysqli_real_escape_string, bzw. $mysqli->escape_string wenn Du die Objektvariante verwendest. Guck's Dir in der [PHP Doku](http://php.net/manual/de/mysqli.real-escape-string.php) an.
_Rolf_
--
sumpsi - posui - clusi