Sven Fäßler: Farben festlegen in PHP Script

Hallo,

ich habe eine Frage ich möchte mit PHP ein Farbwahl Script einbauen. Gestartet wird die main.php

---
<?php

session_start();

if (!isset ($_SESSION['colorset']))
 {
 $bg = "red";
 $text = "white";
 $link = "#C0C0C0";
 $vlink = "#808080";
 $alink = "#FFFFFF";
 }
 else
 {
 $colorset = $_SESSION['colorset'];
 if ($colorset=="bw")
 {
 $bg = "black";
 $text = "white";
 $link = "#C0C0C0";
 $vlink = "#808080";
 $alink = "#FFFFFF";
 }

if ($colorset=="wb")
 {
 $bg = "white";
 $text = "black";
 $link="#3333FF" ;
 $vlink="#99CCFF";
 $alink="#c0c0c0";
 }
}
?>

<html>
<head>
</head>
<body bgcolor="<?= $bg ?>" text="<?= $text ?>" link="<?= $link ?>" vlink="<?= $vlink ?>" alink="<?= $alink ?>">

Herzlich willkommen...
<br><br>
<a href="setcolor.php">Zur Farbauswahl</a>

--

Über das Formular auf setcolor.php soll man die Farben ändern können.

--
<?php

session_start();
   session_register('colorset');

?>

<html>
<head>

</head>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Login</title>

</head>

<body>

<form name="colorset" method="post" action="main.php">

<select size="1" name="colorset">
    <option value="bw">Schwarz / Weiß</option>
    <option value="wb">Weiß / Schwarz</option>
    <option selected>Bitte Farbschema wählen</option>
  </select>

<br><br>
<br><br>

<input type="submit" value="OK">
 <input type="reset" value="Reset">

</form>
</body>
</html>
--

Jemand eine Idee warum es nicht funktioniert?
Danke für eure Tipps.

  1. Hallo,

    <?php

    session_start();
       session_register('colorset');

    ?>

    Du registrierst $colorset, aber es ist ja noch gar kein Wert dafür gesetzt!

    Du solltest colorset in der main.php setzen. Und zwar so:
    if (isset($colorset)) $_SESSION[colorset] = $_POST[$colorset];

    Dann sollte es schon besser aussehen. versuchs mal.

    Wenn du bei sowas nicht weiterkommst solltest du immer anfangen zu überprüfen ob die Varaiable von der du was willst überhaupt einen Wert enthält! zB mit echo

    Grüsse
    Stolzi

    --
    Meine freien PHP_Scripts unter http://stolzi.westo.at
    zB Forum, Album, Mailer, usw.
    1. Du solltest colorset in der main.php setzen. Und zwar so:
      if (isset($colorset)) $_SESSION[colorset] = $_POST[$colorset];

      Habe ich probiert.
      Habe jetzt die main.php umgesetzt.
      ---
      <?php

      session_start();

      if (isset($colorset)) $_SESSION[colorset] = $_POST[$colorset];

      if (!isset ($_SESSION['colorset']))
       {
       $bg = "red";
       $text = "white";
       $link = "#C0C0C0";
       $vlink = "#808080";
       $alink = "#FFFFFF";
       }

      else if (isset ($_SESSION['colorset']) && $colorset=="bw")
       {
       $bg = "black";
       $text = "white";
       $link = "#C0C0C0";
       $vlink = "#808080";
       $alink = "#FFFFFF";
       }

      else if (isset ($_SESSION['colorset']) && $colorset=="wb")
       {
       $bg = "white";
       $text = "black";
       $link="#3333FF" ;
       $vlink="#99CCFF";
       $alink="#c0c0c0";
       }

      ?>

      <html>
      <head>
      </head>
      <body bgcolor="<?= $bg ?>" text="<?= $text ?>" link="<?= $link ?>" vlink="<?= $vlink ?>" alink="<?= $alink ?>">

      Herzlich willkommen...
      <br><br>
      <a href="setcolor.php">Zur Farbauswahl</a>

      <?= $colorset ?>
      <?= $bg ?>
      --

      aber funktionieren tut es immer noch nicht :(

      Gruß
      Sven

      1. Hallo,

        was genau funktioniert nicht? Du musst genauer werden...

        Prüfe wie ich gesagt habe ob du alle Variablen korrekt gesetzt bekommst:

        echo 'Post: '.$_POST[colorset];
        if (isset($_POST[colorset])) $_SESSION[colorset] = $_POST[colorset];
        echo 'Session: '.$_SESSION[colorset];

        Ich hatte einen kleinen Tipfehler! Ich schrieb: $_POST[$colorset]. Das sit falsch! $_POST[colorset] muss es heissen wie oben geschrieben!

        Gehts dann?

        Grüsse
        Stolzi

        --
        Meine freien PHP_Scripts unter http://stolzi.westo.at
        zB Forum, Album, Mailer, usw.
        1. Hallo Stolzi,

          echo 'Post: '.$_POST[colorset];

          zum prüfen kann man auch einfach print_r($_POST) bzw. print_r($_SESSION) verwenden.

          Ich hatte einen kleinen Tipfehler! Ich schrieb: $_POST[$colorset]. Das sit falsch! $_POST[colorset] muss es heissen wie oben geschrieben!

          fast - $_POST['colorset'] ->http://www.php.net/manual/de/language.types.array.php#language.types.array.foo-bar

          Grüße aus Nürnberg
          Tobias

          --
          Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
          1. funktioniert leider immer noch nicht

            siehe: http://www.citrix-forum.net/php/color/main.php

            1. http://www.citrix-forum.net/php/color/col.zip (zum Downloaden der Quelldateien), vielleicht hilft das...

  2. Hallo Sven,

    <body bgcolor="<?= $bg ?>" text="<?= $text ?>" link="<?= $link ?>" vlink="<?= $vlink ?>" alink="<?= $alink ?>">

    du gehst davon aus, dass short_open_tag auf on steht - außerdem gibt es ja nun wirklich schönere Möglichkeiten die Farben anzugeben als die Attribute im body-Element (->css).

    session_start();
       session_register('colorset');

    evtl register_globals auf off? versuchs mal mit $_SESSION['colorset'] = $colorset;

    <form name="colorset" method="post" action="main.php">

    ich bin mir jetzt nicht so ganz sicher, aber wenn du die Farbauswahl an main.php sendest, wie soll dann setcolor.php die Farben für die Session registrieren? Ansonsten wäre es vielleicht hilfreich sich das ganze mal "live" anschauen zu können...

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|