Styleswitcher

Azi

Erfahrenes Mitglied
Ich habe (versucht) einen Styleswitcher zu programmieren. Auf meinem lokalen Server hat es geklappt. Nur auf dem richtigem Server gab es Probleme: Irgendwie passiert nichts. Der Server hat PHP 4.3.3 drauf.

index.php
PHP:
<?php
if(isset($styleswitch)){
   $style=$_POST['Style'];
   setcookie("Style", $style, time()+365*24*3600);
   $refresh=1;
   }
   else {
   }
?>

<html>
 <head>
 <base href="<?php echo($_SERVER['PHP_SELF']); ?>">
  <?php
   if($refresh=="1"){
    $refresh=0;
    echo "<meta http-equiv=\"refresh\" content=\"0; URL=";
    echo $_SERVER['PHP_SELF'];
    echo "\">";
    }
   else {
    echo " ";
    }
  ?>
  <?php
   if($_COOKIE['Style']=="VirtualAquaBlue"){
   echo "<link rel=\"STYLESHEET\" type=\"text/css\" href=\"data/styles/style01/style01.css\" title=\"VirtualAquaBlue\">";
   }
   elseif($_COOKIE['Style']=="Martin-und-Max"){
   echo "<link rel=\"STYLESHEET\" type=\"text/css\" href=\"data/styles/style02/style02.css\" title=\"Martin-und-Max\">";
   }
   elseif($_COOKIE['Style']=="Mac"){
   echo "<link rel=\"STYLESHEET\" type=\"text/css\" href=\"data/styles/style03/style03.css\" title=\"Martin-und-Max\">";
   }
   elseif($_COOKIE['Style']=="Kein"){
   echo " ";
   }
   else{
   echo "<link rel=\"STYLESHEET\" type=\"text/css\" href=\"data/styles/style01/style01.css\" title=\"VirtualAquaBlue\">";
   }
  ?>
...
     <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="POST">
      <select name="Style" size="1">
       <option value="VirtualAquaBlue">VirtualAquaBlue</option>
       <option value="Martin-und-Max">Martin-und-Max</option>
       <option value="Mac">Mac</option>
       <option value="Kein">Kein</option>
      </select><br>
      <input type="hidden" name="styleswitch" value="styleswitch">
      <input type="Submit" name="Switch" value="Switch">
     </form>
...
 
Ohne den Code genauer betrachtet zu haben: Es liegt wahrscheinlich an den php.ini Einstellungen oder du hast eine andere PHP Version. Wodran kann es sonst liegen, wenn es auf einem anderen Server läuft?
 
Probier mal Folgendes:
PHP:
<?php

	$refresh = false;
	$styles = array(
		'VirtualAquaBlue' => 'style01/style01.css',
		'Martin-und-Max'  => 'style02/style02.css',
		'Mac'             => 'style03/style03.css'
	);	
	if( isset($_REQUEST['styleswitcher']) ) {
		setcookie('style', $_REQUEST['style'], time()+365*24*3600);
		$refresh = true;
	}

?>
<html>
<head>
<base href="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php

	if( $refresh ) {
		echo '<meta http-equiv="refresh" content="0; URL='.$_SERVER['PHP_SELF'].'">';
	}

	if( isset($_COOKIE['style']) ) {
		if( in_array($_COOKIE['style'], $styles) ) {
			echo '<link rel="stylesheet" type="text/css" href="data/styles/'.$styles[$_COOKIE['style']].'">';
		}
	} else {
		echo '<link rel="stylesheet" type="text/css" href="data/styles/style01/style01.css">';
	}

?>
…
     <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="POST">
      <select name="style" size="1">
       <option value="VirtualAquaBlue">VirtualAquaBlue</option>
       <option value="Martin-und-Max">Martin-und-Max</option>
       <option value="Mac">Mac</option>
       <option value="Kein">Kein</option>
      </select><br>
      <input type="submit" name="styleswitcher" value="Switch">
     </form>
…
 
Habs nochmal verbessert, diesmal kann noch ein benutzerdefinierter Stylesheet per URL angegeben werden (wie bei csszengarden):

Ganz oben in der PHP-Datei:
PHP:
<?php
    $refresh = false;
    if(isset($_POST['styleswitcher'])) {
        if ($_POST['style']=="AquanaSoft"){
            $style="aquanasoft/aquanasoft.css";
        }
        elseif ($_POST['style']=="Kein"){
            $style="kein/kein.css";
        }
        else{
            $style=aquanasoft/aquanasoft.css;
        }
        setcookie('style', $style, time()+365*24*3600, "/");
        $refresh = true;
    }
?>

Im head-Bereich:
PHP:
  <?php
    if($refresh) {
        echo '<meta http-equiv="refresh" content="0; URL='.$_SERVER['PHP_SELF'].'">';
    }
    if (isset($_GET['style'])) {
        echo '<link rel="stylesheet" type="text/css" href="'.$_GET['style'].'">';
    }
    elseif(isset($_COOKIE['style'])) {
            echo '<link rel="stylesheet" type="text/css" href="data/css/'.$_COOKIE['style'].'">';
    }
    else {
        echo '<link rel="stylesheet" type="text/css" href="data/css/aquanasoft/aquanasoft.css">';
    }
?>

Und das Formular:
PHP:
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="POST">
    <select name="style" size="1">
        <option value="AquanaSoft">AquanaSoft</option>
        <option value="Kein">Kein</option>
    </select><br>
    <input type="submit" name="styleswitcher" value="Switch">
</form>
 
Zuletzt bearbeitet:
Zurück