phpbar.de logo

Mailinglisten-Archive

[php] Problem mit Suchen nach extaktem Namen [NOTE]

[php] Problem mit Suchen nach extaktem Namen [NOTE]

Roland Tapken php_(at)_phpcenter.de
Tue, 16 Jul 2002 17:38:33 +0200


Hi!

> > $query = 'SELECT * FROM '.$entries.' WHERE cat LIKE BINARY
> > "%'.mysql_escape_string($_GET[cat]).'%" ORDER BY id DESC';

Besser:
$query = 'SELECT * FROM '.$entries.' WHERE cat LIKE BINARY
"%'.mysql_escape_string($_GET['cat']).'%" ORDER BY id DESC';
(mit ' um das cat)

Grund: Ohne die Anführungszeichen wird cat als konstante erkannt, die
allerdings keinen Wert hat und deshalb ihren Namen zurückgibt - im
Normallfall also alles ok. Wenn du jetzt aber irgendwann mal eine
Konstante mit dem Namen cat in dein Script einbaust oder die
PHP-Programmierer vieleicht mal ne entsprechende Konstante vorsehen,
dann hat cat auf einmal einen ganz anderen Wert und dein Script wird
nicht mehr funktionieren. Beispiel:

define('cat', 'foo');
$query = 'SELECT * FROM '.$entries.' WHERE cat LIKE BINARY
"%'.mysql_escape_string($_GET[cat]).'%" ORDER BY id DESC';

Der tatsächliche Query lautet nun:
'SELECT * FROM '.$entries.' WHERE cat LIKE BINARY
"%'.mysql_escape_string($_GET['foo']).'%" ORDER BY id DESC';

cu, Roland Tapken
-- 
Please reply to:  tapken_(at)_engter.de
PGP Public Key: http://www.engter.de/~tapkenea/gnupg_roland.txt
  ~~~ I'm a signature-virus. Please copy me into your sig. ~~~


php::bar PHP Wiki   -   Listenarchive