Sessionproblem

leuktra

Mitglied
Wenn ich die Schriftgröße zum Beispiel vergrößere und von http://www.meine-homepage.tld zu
https://ssl-sicher.tld/meine-homepage.tld/index.php (SSL-Proxy) innerhalb meiner Homepage
wechsel, dann ist "die Session" natürlich weg und die Schriftgrößenänderung wird
nicht "mitgenommen". Weiß jemand eine Lösung? Ich habe schon hin und her probiert und
es nicht hinbekommen :(

Die Teile:

session_start();
if (!isset($_SESSION['size']))
{
$_SESSION['size'] = 'small';
}

...

im Headbereich steht dann:

<link rel="stylesheet" href="style/<?php echo $_SESSION['size'];?>.css" type="text/css">

...

im Bodybereich steht dann:

<a href="font/font.php?s=small">Normal</a> | <a href="font/font.php?s=medium">Gro&szlig;</a>

in einer Extradatei liegt:

session_start();
$_SESSION['size'] = $_GET['s'];
header("Location: " . $_SERVER['HTTP_REFERER']);
 
Speichere die Werte parallel zur Session auch in einer Datenbank.
Dort könntest du nach Wechsel ggf. wieder auslesen, eben falls etwas geändert wurde.
 
Hallo zusammen!

vielen Dank für Eure Tips :)

Die GET-Variante sagt mir sehr zu. Könnt Ihr mir bitte etwas näher erklären, wie ich das umsetzen kann? Ich weiß gar nicht, wo, wie usw. die Session per GET "gespeichert", "übergeben" und wieder "aufgerufen" werden soll. :(
 
Hallo!

Du musst einfach die Links zur anderen Seite "anpassen", indem du am Ende einfach den Parameter 'size' oder 's' (ist ja im prinzip egal) übergibst.

Auf der anderen Seite musst du den Parameter nur noch in der Session dort speichern.. Einfach ganz zu anfang der index.php zB folgendes reinschreiben:
PHP:
<?php
if(!empty($_GET['size'])) {
	$_SESSION['size'] = $_GET['size'];
}
?>
Den Header solltest du übernehmen können. Wenn's nicht klappt, einfach mal folgendes ausprobieren:
HTML:
<link rel="stylesheet" href="style/<?php echo (!empty($_SESSION['size']) ? $_SESSION['size'] : $_GET['size']); ?>.css" type="text/css">

Die Datei 'font.php' kannste im Grunde so übernehmen, wie sie auch auf der anderen Seite ist.

Das war's.
Ich hoffe, ich hab nichts vergessen oder sou :)

MfG,
Marcel
 
Hallo Marcel,

herzlichen Dank für Deine Anleitung :-) Ich habe das jetzt so verstanden - bitte mal schauen
und rückantworten ...

Die Teile:

session_start();
if (!isset($_SESSION['size']))
{
$_SESSION['size'] = 'small';
}
if(!empty($_GET['size'])) {
$_SESSION['size'] = $_GET['size'];
}
...

im Headbereich steht dann:

<link rel="stylesheet" href="style/<?php echo $_SESSION['size'];?>.css" type="text/css"> <-- eventuell austauschen, laut Tip

...

im Bodybereich steht dann:

<a href="font/font.php?s=small">Normal</a> | <a href="font/font.php?s=medium">Gro&szlig;</a> <-- das kann so bleiben?

und dann an den Link zur https seite ...

<a href="https://ssl-sicher.tld/meine-homepage.tld/emailformular.php? ... <-- den Parameter 'size' oder 's' übergeben bzw. anhängen? aber wie genau?


in einer Extradatei liegt:

session_start();
$_SESSION['size'] = $_GET['s'];
header("Location: " . $_SERVER['HTTP_REFERER']);

soll in die Extradatei zusätzlich noch:

}
if(!empty($_GET['size'])) {
$_SESSION['size'] = $_GET['size'];

eingefügt werden?
 
Hallo nochmal.

Anhängen einfach mit
Code:
https://ssl-sicher.tld/meine-homepage.tld/emailformular.php?s=<?=$_SESSION['size'];?>Link...</a>

In der Datei steht dann oben:
PHP:
<?php
if(isset($_GET['s'])) {
$_SESSION['size'] = $_GET['s'];
}
?>
Wenn du dann die Größe ändern willst (und nur eine Datei auf dem sicheren Server genutzt werden soll), kannste einfach
Code:
dateiname.php?s=neue_groesse
(bitte 'dateiname' und 'neue_groesse' dementsprechend ändern!)
Wenn du mehrere Dateien auf dem sicheren Server hast, kannste das über ne extra Datei machen:
PHP:
<?php
if(isset($_GET['s'])) {
$_SESSION['size'] = $_GET['s'];
}
?>

Die Problematik ist bei deinem Problem (klingt iwi komisch, oder?!) ist ja, dass serverübergreifende Speichern, was du hier mit SESSION und GET bewältigst. Eine bessere Methode wäre aber das Speichern der Größe in einem Cookie. Anleitung:

font.php (auf beiden/allen Servern gleich):
PHP:
<?php
$server = array('.meine-homepage.tld','.ssl-sicher.tld');
if(isset($_GET['s'])) {
foreach($server as $serv) {
setcookie('size', $_GET['s'], time()+60*60*24*30, '/', $serv);
}
header("Location: ".$_SERVER['HTTP_REFERRER']."");
exit;
}
?>
Ganz oben in den Dateien steht dann:
PHP:
<?php
$size = (isset($_COOKIE['size']) ? $_COOKIE['size'] : 'normal');
?>
Dabei ist 'normal' durch den Standartwert zu ersetzen, den du gerne hättest ;)
Die Stylesheetdatei lädst du dann mit
Code:
<link rel="stylesheet" href="style/<?=$size;?>.css" type="text/css" />

Ich hoffe, es klappt.
Guten Rutsch,
Marcel
 

Neue Beiträge

Zurück