Switch in Session speichern ?

phpMars

Erfahrenes Mitglied
Wie kann ich eine Switchfunktion in einer Session speichern?

Ich habe 1 Datei, in der bereits eine Session gestartet wird.

PHP:
<?php
session_start();
if($_POST['lng']){ 
$_SESSION['lng'] = $_GET['lng']; 
echo $_SESSION['lng']; 
}
?>
Das Funktionier soweit ohne Probleme. Nun habe ich in der Datei noch eine Switchfunktion, welche ich auch gerne speichern würde, bis sie überschrieben wird.
Die Funktion sieht folgendermaßen aus:
PHP:
<?php 
           switch($id)
           { 
      
            case 78: $bild2="./images/head_eanlagen.gif"; 
                    $pictopic2="Etikettieranlagen und Sondermaschinenbau";      
            break; 
              
            case 82: $bild2="./images/head_drucksysteme.gif"; 
                    $pictopic2="Etikettendrucksysteme und Applikatoren"; 
            break; 
              
            case 87: $bild2="./images/head_scanner.gif"; 
                    $pictopic2="Scanner"; 
            break; 
              
            case 88: $bild2="./images/head_esoftware.gif"; 
                    $pictopic2="Etikettensoftware"; 
            break; 
              
            case 89: $bild2="./images/head_vmaterial.gif"; 
                    $pictopic2="Verbrauchsmaterial"; 
            break; 
              
            default: ; 
            break; 
            } 
            ?> 
			<img src="<?php echo($bild2); ?>" alt="<?php echo($pictopic2); ?>">

Also habe ich aus meiner Session das gemacht:

PHP:
<?php
session_start();
$_SESSION["bild2"]=$bild2; 
$_SESSION["pictopic2"]=$pictopic2;
if($_POST['lng']){ 
$_SESSION['lng'] = $_GET['lng']; 
echo $_SESSION['lng']; 
}
?>

Aber das funktioniert nicht. Kann mir jemand sagen warum ? Wo liegt der Fehler ?
 
Mhm nur mal so am Rande , wenn du die Session vor der switch case () die werte zuweist , woher soll die Session wissen welche Werte es nehmen soll :)

Ich würde das im Prinzip so versuchen :

PHP:
<?php
session_start();

function Bild($id =""){
           switch($id)
           {

            case 78: $bild2="./images/head_eanlagen.gif";
                    $pictopic2="Etikettieranlagen und Sondermaschinenbau";
            break;

            case 82: $bild2="./images/head_drucksysteme.gif";
                    $pictopic2="Etikettendrucksysteme und Applikatoren";
            break;

            case 87: $bild2="./images/head_scanner.gif";
                    $pictopic2="Scanner";
            break;

            case 88: $bild2="./images/head_esoftware.gif";
                    $pictopic2="Etikettensoftware";
            break;

            case 89: $bild2="./images/head_vmaterial.gif";
                    $pictopic2="Verbrauchsmaterial";
            break;

            default: ;
            break;
            }
     return array($bild2 => $pictopic2);
}


$id=89;
$bild=Bild($id);

if(is_array($bild)){
   $_SESSION['bild2'] = key($bild);
   $_SESSION['pictopic2'] = current($bild);
}
....
?>

Ich hoffe ich habe das so richtig verstanden nun , wenn nicht dann bitte ich um Aufklärung :)
 
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /is/htdocs/22798/www.stylish-pixel.de/stylish-pixel/projekte/bbk/new/index.php:6) in /is/htdocs/22798/www.stylish-pixel.de/stylish-pixel/projekte/bbk/new/index.php on line 133

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /is/htdocs/22798/www.stylish-pixel.de/stylish-pixel/projekte/bbk/new/index.php:6) in /is/htdocs/22798/www.stylish-pixel.de/stylish-pixel/projekte/bbk/new/index.php on line 133

Das bekomme ich, wenn ich deins benutze. Versteh aber nicht so ganz warum. Habe nur 1x Sessionstart drin.
 
Richtig , das wäre ein extra Script , wenn du das wo einbindest wo schon eine Session gestartet wird knallt er dir eine Fehlermeldung an den Kopf.

Des weiteren musst du es noch ein wenig aufpeppen dann , was ist wenn keine ID übergeben wird , dann kommt es gleich nochmal zu meheren Fehlern.

Also musst Du noch eine Abfrage machen ob die Variablen bild2 und picture2 überhaupt gesetzt sind und ob der Rückgabe Wert der Funktion ein Array ist.

Das dort ist nur so hingeklatscht schnell , bei mir funktioniert es da ich es auch seperat gestartet habe.Die Session Variablen bekommen dann den Rückgabe Wert der Funktion.
 
Zuletzt bearbeitet:
Das hab ich jetzt nicht ganz verstanden :rolleyes:

Wenn ich nur 1x session_start(); benutze (und es im ganzen Script auch nur 1 mal vorkommt, wieso bekomm ich dann die Fehlermeldung?

PHP:
$id=89; 
$bild=Bild($id);

Hier verstehe ich den Hintergrund nicht ganz. Für was steht das $id=89; ?
 
$id = 89 war nur zum testen und um was an die Funktion zu übergeben , irgendwoher muss ja die switch-case Anweisung wissen was sie überprüfen soll.Und da ich nicht wusste woher du deine id herbekommst hab ich mir halt einfach eine genommen.

Das bei Dir header alreay sent on line 133 kommt verwundert mich in der Tat denn normalerweise steht session_start() immer ganz oben bevor überhaupt was gemacht wird.
Das heisst keine Leerzeichen oder sonstige Ausgaben jeglicher Art.Auch bei includes aufpassen das da vorher nix ausgegeben wird. Also kann es sei das du vorher noch ein anderes Script eingebunden hast welches ein paar Ausgaben leistet.
Aber wie es aussieht bindest du dieses Script woanders ein und das Mutter Script sorgt für Ausgaben oder irgendwelche Ausgaben.
Eine Lösung wäre einfach im Mutter Script oben session_start() anzugeben dafür musst es dann in diesem kleinen Script rauslöschen. Ehrlich gesagt weiss ich nicht was in der Linie 133 passiert und was vor dem session_start alles steht.

Wenn Du Dich nun fragen solltest warum ich da noch ein session_start() eingefügt habe ganz oben , dann sage ich dazu irgendwo hin muss ich ja die Variablen speichern ;) Also es war eine Idee/Ansatz blos so rauskopieren und woanders einsetzen klappt nicht immer ;)
 
Zuletzt bearbeitet:
Zurück