Hello,
ich hab folgendes Problem:
Über $_GET lass ich mir eine Variable "holen", diese lass ich dann nochmal die Funktion htmlspecialchars durchlaufen und setze sie dann in switch ein
Wozu soll das htmlspecialchars() gut sein, wenn Du mit Rohdaten arbeiten willst? htmlspecialchars() macht aus den Rohdaten html-fähige Werte, also solche, die im html-Kontext verwendet werden dürfen.
In Deinem Fall käme eventuell stripslashes() in Frage, wenn die magric Quotes eingeschaltet sind bei deiner PHP-Installation -> http://de2.php.net/manual/de/function.get-magic-quotes-gpc.php
Komischerweise wird nie das entsprechende case angesprungen. Ich hab mir die Variable mit echo ausgeben lassen - ein simples Wort ohne äöü oder sonstiges -, das wird angezeigt. Nur klappt der switch nicht, auch nicht, wenn ich htmlspecialchars weglasse.
Hier mal ein Beispiel-Quelltext:
[code lang=php]
#> if (!$_GET["o"])
#> $ordnen = "";
#> else
if isset($_GET["o"])
{
#> {$ordnen =htmlspecialchars($_GET["o"]);
#> echo $ordnen;
echo "o: {$_GET["o"]}";
#> switch ($ordnen){
switch $_GET["o"]
{
case 'username': $ordnen = "username";
break;
case 'reg': $ordnen = "user_regdate";
break;
case 'posts': $ordnen = "user_posts";
break;
case 'gil': $ordnen = "user_points";
break;
case 'clan': $ordnen = "clan_id";
break;
case 'email': $ordnen = "user_email";
break;
case 'icq': $ordnen = "user_icq";
break;
case 'msn': $ordnen = "user_msnm";
break;
case 'yim': $ordnen = "user_yim";
break;
case 'web': $ordnen = "user_website";
break;
default:exit;
}
$ordnen = "ORDER BY ".$ordnen."\ DESC";
Die Switch-Anweisung bestimmt über das passende Case den Einsprungspunkt in die nachfolgende Sequenz. Das bedeutet also, dass alle Anweisungen, die nach dem case-Treffer folgen, ausgeführt werden. Eine weitere Case-Auswertung findet aber nicht statt!
Um nur die eine Anweisung direkt nach den Case-Treffer ausführen zu lassen, muss ihr ein jeweils ein break folgen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg