Nicht allgemeine Switcher Probleme

son gohan

Erfahrenes Mitglied
Hallo,

ich habe einen PHP Style Swicther für CSS Dateien der auch problemlos funktioniert.

Jetzt musste ich aber eine Seite welche ich mit Hilfe eines Iframes in einer normalen HTML Seite angezeigt wird erstellen zur Anzeige von Suchergebnisseite, und das Problem ist das diese erzeugte Suchergebnisseite in einem anderen Ordner liegt und nicht mehr auf den Style Switcher reagiert.

Die erzeugte Seite im Iframe hat folgenden PHP Code im head:

PHP:
<link rel="stylesheet" type="text/css" href="../../<?php	if(isset($_COOKIE['sitestyle']))
{
print trim($_COOKIE['sitestyle']);
}
else
{
print "normal";
}
?>.css" media="screen" />

und folgender Code steht in der dazugehörigen switcher.php:
PHP:
<?php
$accept = array('normal','different');
if(isset($_REQUEST['set']))
{
$style = trim(strip_tags($_REQUEST['set']));
}
else if(isset($_POST['set']))
{
$style = trim(strip_tags($_POST['set']));
}
if(in_array($style, $accept))
{
$host = $_SERVER[SERVER_NAME];
setcookie('sitestyle', $style, time()+31536000, '/', $_SERVER["SERVER_NAME"], '0');
}
if(isset($_SERVER['HTTP_REFERER']))
{
header("Location: ". $_SERVER['HTTP_REFERER']);	exit;
}
else
{
header("Location: http://".$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"]);
exit;
}
?>

Jetzt glaube ich das das Problem folgendes ist, die Variablen werden zunächst ganz normal mit den Hyperlinks <a href="switcher.php?set=normal">Design</a> an die switcher.php Datei übergeben. Dann verarbeitet die switcher.php Datei die Variable und der PHP Code im head der Seite wechselt die Styls. Da aber die Suchergebnisseite jetzt in einem anderen Ordner liegt, kann die switcher.php die Variablen nicht mehr weitergegeben, und umgekehrt die Suchergebnisseite keine Variablen mehr erhalten, weil in der switcher.php irgendetwas dazu geändert werden müsste, oder im Ordner der Suchergebnisseite etwas geändert werden müsste.

Ich kann mir da leider selbst nicht weiterhelfen und könnte Hilfe gebrauchen.

gruß
feh
 
Hallo,


ich glaube ich wüsste wie ich mein Problem möglicherweise lösen könnte, dazu müsste ich aber irgendwie eine Variable gleichzeitig an zwei PHP Dateien schicken können.

Der ein Fall ist klar wie folgt: <a href="swicther.php?set=normal"> was aber gleichzeitig auch versendet werden müsste, damit die andere Seite welche im Unterordner liegt auch reagiert wäre folgendes:

<a href="pfad/zu/swicther.php?set=normal">

also ein Link in den Unterordner der die Variable set an die dort stationierte swicther.php schickt.

Eine andere Möglichkeit fällt mir nicht ein, aber auch diese ist zwar einfach gedacht, aber ich habe keine Schimmer wie ich es realisieren könnte.

Wer kann mir da Rat geben?
 
Hm, also irgendwie versteh ich nicht so ganz,
  • wie deine Site genau aufgebaut ist (Verzeichnisstruktur?)
  • wo der iframe auftaucht
  • welche Seite dieser einbindet
Am besten wäre wohl, wenn du – falls vorhanden – einen Link zur entsprechenden Seite schreibst, damit man es leichter nachvollziehen kann.
 
Hi,

gut es ist wirklich schwer zu erklären, aber eine online Version kann ich leider nicht anbieten. :(

Ich versuch es noch mal einfacher zu erklären.

Zwei Seiten, beide haben im head den gleichen PHP Code um die Stylesheets zu wechseln.

PHP:
<link rel="stylesheet" type="text/css" href="../../<?php	if(isset($_COOKIE['sitestyle']))
{
print trim($_COOKIE['sitestyle']);
}
else
{
print "normal";
}
?>.css" media="screen" />

Die eine Seite liegt im Root Verzeichnis funktioniert wunderbar und die andere in einem Unterordner und reagiert nicht.

Die Seite aus dem Rootverzeichnis wechselt problemlos die Styleheets mit dem Script, weil die dazugehörige switcher.php auch im Rootverzeichnis liegt.

Die andere Seite aber welche im Unterordner liegt wechselt nicht mit, weil sie keine switcher.php hat und keine Variable bekommt beim klicken auf den Wechsellink.

Der Wechsellink mit dem die Variable geschickt wird sieht so aus:

PHP:
<a href="switcher.php?set=normal">Design</a>

Eine switcher.php in den Unterordner zu legen ist kein Problem, aber die Variable beim Klicken auf den Wechselink dort hin zu schicken ist problematisch, weil diese standardmässig immer an die switcher.php im Rootverzeichnis gehen muss.

Wie kann ich es hinbekommen das die andere Seite aus dem Unterordner auch gewechselt wird? Funktionieren würde es wenn Sie halt auch eine switcher.php bekommt und Variable bei Klick auf Wechsellink. Die switcher.php dort hin zu kopieren ist keine Sache aber an beide Adressen die Variable zu schicken ein Rätsel für mich.

Ich hoffe so ist es verständlicher?
 
Wie wäre es mit einer absoluten Pfadangabe des URLs, also /switcher.php?set=normal? Wenn die Pfadangabe der Stylesheets ebenfalls absolut sind, sollte es keinerlei Probleme mehr geben.
 
Hallo,

ich weis nicht so recht, aber ich glaube es würde nichts bringen eine absolute Pfadangabe für den Wechsellink zu geben, weil die Variable in dem Wechselscript muss einmal zur einen switcher.php im Rootverzeichnis und einmal zur anderen im Unterordner.

Wie meinst du das genau, kannst du bitte ein kelines Beispiel machen.
 
Hallo,

zur Zeit habe ich ja nur das eine Script die swichter.php siehe oben Anfang und halt das Script im Link Tag für die Stylesheets.

Da aber die eine problemseite im Unterordner liegt und nicht reagiert denke ich das diese auch eine switcher.php datei benötigt im Unterordner damit sie reagiert. Nur wie ich die Variable dort hinbekomme ist mir unkalr.

Aber im ganzen ist es ja nur ein Denkansatz von mir, eine andere Lösung wird mir wohl auch nicht mehr einfallen. Deinen Lösungsansatz mit den absoluten Pfadangaben verstehe ich nicht.

Hast du den überhaupt den Überblick zu meinen Problem?
 
Hast du den überhaupt den Überblick zu meinen Problem?
Nein, ehrlich gesagt nicht wirklich.

Mein Ansatz wäre Folgender: Angenommen, das switcher.php-Skript befände sich im Wurzelverzeichnis, die CSS-Stylesheets in dessen Unterordner css, so wäre das zu benutzende Stylesheet mit folgendem Schnipsel zu bestimmen:
Code:
<link rel="stylesheet" type="text/css" href="/css/<?php echo isset($_COOKIE['sitestyle']) ? trim($_COOKIE['sitestyle']) : 'normal'; ?>.css" media="screen" />
Während das aktuelle Stylesheet mit dem Aufruf /switcher.php?set=normal zu setzen wäre.
 
Hallo,

ich muss das mal testen, zur Zeit sind meine Stylesheets Dateien auch im Wurzelverzeichnis.

Ich melde mich dann wieder.
 
Zurück