Qwald: 'Evil:' urldecode()

Beitrag lesen

Hallo,
jmd. hat mir geschrieben, dass er Probleme mit meinem Script hätte.

Dabei wird ein Base64 codierter String (erforderlich), nochmals per urlencode(); kodiert, um dann per GET übertragen zu werden.

z.B. so:
$text = "Hallo Welt";
$code = urlencode(base64_encode($text));
echo '<a href="?code=$code">Link</a>';

Dann beim Empfangen:
$empf = base64_decode(urldecode($_GET['code']));
echo $empf;

Dabei ist es extrem wichtig, das exakt die gleichen Texte übergeben werden, sprich:
md5($text) == md5($empf);

Eine kleinste Abweichung würde schon einem Fehler hervorrufen.

So jetzt zurück zum Problem. Diese Person meinte, es gäbe immer dann Probleme, wenn ein %-Zeichen übertragen werden soll.

Er hat dann folgendes Statement gefunden:
"
A reminder: if you are considering using urldecode() on a $_GET variable, DON'T!

Evil PHP:

<?php

BAD CODE! DO NOT USE!

$term = urldecode($_GET['sterm']);
?>

"

Nachdem er dann das urldecode+urlencode entfernt hat, funktioniert es beim ihm.

In wie fern ist an diese Statement etwas dran, und wie löst man das Problem am besten?

MFG