Variablen in Sessions andere Werte zuweisen

sebastar

Grünschnabel
Hallo,

ich hab ein kleines Problem.

Ich möchte, dass die Besucher meiner Seite die Auswahl aus mehreren Layouts haben.

Dafür habe ich auf der Startseite ein kleines Formular erstellt, in das man verschiedene Werte eintragen kann (später mal als Radio-Button angedacht).
Dadurch wird die Variable "layout" mit dem Wert "fire" oder "ice" (für rot und blau ;-) ) gefüllt.

Code:
<?php 
session_start(); 
session_register("layout"); 
?> 
<form method="POST" action="start.php"> 
<p><input type="text" name="layout" size="4"></p> 
<p><input type="submit" value="Abschicken" name="B1">
<input type="reset" value="Zurücksetzen" name="B2"></p> 
</form>

die Datei start.php kümmert sich nur um das grundgerüst selbst:

Code:
<?php 
session_start();
include ('header.php'); 
include($page.'.php'); 
include ('footer.php'); 
?>

z.B. in der header.php wird dann das entsprechende Layout geladen

Code:
<TD ROWSPAN="1" COLSPAN="1" WIDTH="56" HEIGHT="100">
<img src="layout/<?php echo $layout ?>/Bild2_1x3.jpg" BORDER="0">
</TD>

Das funktioniert auch alles wunderbar.

Nun möchte ich allerdings auf einer weiteren Seite (colorchange.php) ein Formular ähnlich des oberen aufrufen, wo man sich dann für ein anderes Layout entscheiden kann.

Code:
<?php 
session_start(); 
session_unregister("layout"); 
session_register("layout"); 
?> 
<form method="POST" action="start.php"> 
<p><input type="text" name="layout" size="4"></p> 
<p><input type="submit" value="Abschicken" name="B1">
<input type="reset" value="Zurücksetzen" name="B2"></p> 
</form>

Wenn man dieses nun allerdings abschießt, wird die Farbe leider nicht gewechselt.

Hab ich das so richtig durchdacht? Oder sollte man so was anders machen?

Danke für Hinweise, Sebastian
 
Hi,

ich weiss jetzt nicht welche Version du von PHP benutzt, aber ich gehe mal davon aus dass es neuer als PHP 4.1.0 ist.

Es wird im Manual darauf hingewiesen, dass man dann $_SESSION anstatt session_register() und session_unregister() verwenden soll.

Ich finde es auch einfacher, da $_SESSION nichts anderes ist, als ein Array, nur halt ein spezielle für Sessions ;)

Den Wert von Layout bekommst du dann mit
PHP:
$_SESSION['layout'] = $_POST['layout'];
in die Session rein, und mit
PHP:
unset($_SESSION['layout']);
wieder raus.

Du solltest bei deinem Formular auch sowas in der Art einbauen:
PHP:
if(isset($_POST['B1'])) {
    $_SESSION['layout'] = $_POST['layout'];
}

somit wird sichergestellt, dass der Wert nur geändert wird, wenn das Formular abgeschickt wurde.

mfg

Devil
 
Devil Noxx hat gesagt.:
Hi,

ich weiss jetzt nicht welche Version du von PHP benutzt, aber ich gehe mal davon aus dass es neuer als PHP 4.1.0 ist.

Herzlichen Dank Devil Noxx!

Aber genau das ist mein Problem. Auf meinem Webhostingserver läuft (noch) 4.06!

Mein Provider wird in Kürze umstellen, aber ich dachte, ich könnte bis dahin schon mal alles "fertig" basteln und mit Inhalt füllen.

Gibt es eine Lösung für meine Variante? Also unter PHP < 4.06?
 
4.06

Wahnsinn.. die Version ist ja mittlerweise schon 3 1/2 Jahre alt.

Also an deiner Stelle würde ich warten bis dein Provider umstellt, oder gleich den Provider wechseln :)
 
Ich weiß, ich weiß.

Es soll in Kürze umgestellt werden.

Ich bin da auch schon 2 Jahre. Hab aber vorher nie was mit PHP gemacht. Aber nun möchte ich gerne und suche halt eine Lösung...

Oder ist das zu kompliziert mit der alten Version? Ich würde es ja gerne ein mal in Funktion sehen...
 
Zurück