Hallihallo!
Also soll ich es lieber mit POST-Daten bewerkstelligen?
Nein, im Prinzip schon so, wie Du es mit GET- Daten angedacht hattest. Nur mit dem Unterschied, daß die header()- function nicht gebraucht wird.
Du schreibst einfach das <link rel="stylesheet"...> dynamisch in Deinen HTML- Code, und im Falle eines falschen GET['style']- Parameters wird einfach das Standardstylesheet eingebunden.
Ein Redirect ist hier eigentlich nicht nötig, denn er führt sehr leicht zu einer Endlosschleife, und damit (hoffentlich) zu einer Fehlermeldung im Browser.
Die einzige Anwendung für einen Redirect wäre meiner Meinung nach das "Bereinigen" eines Fehlerhaften style- Parameters im Querystring durch Entfernen Desselben:
if ( (isset($_GET['style']) && ( (intval($_GET['style'])<1) || (intval($_GET['style']>2) ) ) {
$file = $_SERVER['PHP_SELF'];
$newquery = '?';
foreach ($_GET as $index => $value) {
if ($index != 'style') {
$newquery .= $index.'='.$value.'&';
}
}
$newquery = substr($newquery,0,-1); // das letzte "&" wieder weg, oder das"?", falls style der einzige Parameter war
header('Location: '.$file.$newquery);
}
Dieser Code greift nur dann, wenn ein style- Parameter vorhanden, aber mit falschen Werten belegt ist. In dem Fall wird dann der Style- Parameter einfach entfernt und ein neuer Seitenaufruf mit dem bereinigten Query- String erzwungen.
Das lässt sich bestimmt mit ein Wenig Nachdenken verfeinern und verkürzen, (evtl. das "style" mit regulären Ausdrücken entfernen o.Ä.), aber es geht hier ja nur ums Prinzip... :)
Normalerweise ist so Etwas aber unnötig, denn man kann ja, wie schon angedeutet, einfach das Vorhandensein und die Korrektheit eines style- Parameters (wie alle anderen natürlich auch) einfach nur da auswerten, wo er gebraucht wird, also beim Einbinden des Stylesheets:
if ((isset($_GET['style'])) {
switch ($_GET['style']) {
case '1' : echo '<link rel=..... /* Stylesheet Nr. 1*/';
break;
case '2' : /* Stylesheet Nr. 2 */
break;
default : /* Standardstylesheet */
}
} else {
/* Standardstylesheet */
}
Das ist eigentlich die gebräuchlichere Methode. Fehlerhafte Parameter bleiben in der Adresszeile des Browsers sichtbar, werden aber serverseitig ignoriert.
In der Hoffnung, etwas Hilfreiches beigetragen zu haben,
Viele liebe Grüße,
Der Dicki