stripslashes/mysql_escape_string überprüfen?
Rubens
- php
Hi,
nun mache ich also bei allen datenbankrelevanten Eingaben diese beiden Komandos.
$_POST['Kategorie'] = stripslashes($_POST['Kategorie']);
$_POST['Kategorie'] = mysql_escape_string($_POST['Kategorie']);
Geht das auch in einer Zeile?
Und wie kann ich aber überprüfen, ob jetzt alle Einträge in Oednung sind, die nun noch durchgehen, d.h. was dürfte nicht mehr durchkommen bis zur Datenbank?
Danke und frohes Fest
Rubens
Hello,
diese Funktion entfernt alle Backslashes, die PHP ggf. hinzugefügt hat.
#--------------------------------------------------------------------
function strip($data)
{
if (!get_magic_quotes_gpc())
{
return $data;
}
if (is_array($data))
{
foreach($data as $key => $val)
{
$data[$key] = strip($val);
}
}
else
{
$data = stripslashes($data); ## 1) hier ändern
}
return $data;
}
#--------------------------------------------------------------------
Auf die gleiche Weise 1) kannst Du auch die Maskierung für MySQL wieder hinzufügen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
diese Funktion entfernt alle Backslashes, die PHP ggf. hinzugefügt hat.
Hi Tom,
leider bin ich nicht so fit, somit weiß ich gar nicht richtig, was Du mir mit Deiner Antwort sagen möchtest, obwohl ich den Eindruck habe, daß Du mir einen wirklich guten tip gegeben hast :-(
Kannst Du mir bitte nochmal genauer erklären, was Du mir sagen willst?
Bedankt im Voraus, Rubens
Hello,
nun mache ich also bei allen datenbankrelevanten Eingaben diese beiden Komandos.
$_POST['Kategorie'] = stripslashes($_POST['Kategorie']);
$_POST['Kategorie'] = mysql_escape_string($_POST['Kategorie']);Geht das auch in einer Zeile?
1. Das ist so viel übersichtlicher, als in einer Zeile
2. Wenn man das gerne zusammenfassen möchte, bietet es sich an,
eine eigene Funktion dafür zu schreiben, damit es schlußendlich
wieder übersichtlich bleibt.
3. die Backslashes werden von PHP nur aus Sicherheitsgründen sozusagen
als kleinster gemeinsamer Nenner aller Datenbanken hinzugefügt
Man muss sie eigentlich immer wieder entfernen, bevor man die
Daten irgendwie ausgibt, egal ob HTML oder Textarea oder <input ...>
4. MySQL erfordert auch die Maskierung weiterer Zeichen. Das macht
mysql_[real_]escape_string() für uns.
5. Man kann also, wenn man daran denkt, vor der Übergabe an die DB-API
die datenbanktypische Maskierung durchzuführen, den Schaltger in der
php.ini -> magic_quotes_gpc = on auf OFF stellen. dann muss
stripslashes() nicht mehr bemüht werden, oder man kann danach fragen,
wie der Schalter steht, und die Paramterarrays dann "großtechnisch"
wieder bereinigen. Dazu eigent sich die eigene Funktion strip() in
diesem Thread weiter unten.
Wie man nun Funktionen für seine Zwecke anpasst, insbesondere wenn sie noch so kurz sind wie diese, das müsstest Du mal selber ergründen.
Liebe Grüße aus http://www.braunschweig.de
Tom
- Das ist so viel übersichtlicher, als in einer Zeile
- Wenn man das gerne zusammenfassen möchte, bietet es sich an,
eine eigene Funktion dafür zu schreiben, damit es schlußendlich
wieder übersichtlich bleibt.- die Backslashes werden von PHP nur aus Sicherheitsgründen sozusagen
als kleinster gemeinsamer Nenner aller Datenbanken hinzugefügt
Man muss sie eigentlich immer wieder entfernen, bevor man die
Daten irgendwie ausgibt, egal ob HTML oder Textarea oder <input ...>- MySQL erfordert auch die Maskierung weiterer Zeichen. Das macht
mysql_[real_]escape_string() für uns.- Man kann also, wenn man daran denkt, vor der Übergabe an die DB-API
die datenbanktypische Maskierung durchzuführen, den Schaltger in der
php.ini -> magic_quotes_gpc = on auf OFF stellen. dann muss
stripslashes() nicht mehr bemüht werden, oder man kann danach fragen,
wie der Schalter steht, und die Paramterarrays dann "großtechnisch"
wieder bereinigen. Dazu eigent sich die eigene Funktion strip() in
diesem Thread weiter unten.Wie man nun Funktionen für seine Zwecke anpasst, insbesondere wenn sie noch so kurz sind wie diese, das müsstest Du mal selber ergründen.
Hi Tom,
ja, so langsam ko0mme ich dahinter, wozu ich das mache, was ich mache :-)
Vielen Dank für Deine ausführliche Antwort und Deine Mühe.
Frohes Fest noch weiterhin
Rubens