If Anweisung

son gohan

Erfahrenes Mitglied
If Anweisung, get Variable und Switcher

Hallo Leute,

PHP ist wirklich ein schöne Sache, man kann sehr viel damit anfangen.

Aber leider tue ich mich immer so schwer damit etwas zu lernen, wenn ich trockene Informationen lese, die eigentlich doch schon alles Aussagen könnten.

Ich kann viel besser durch Disskusionen lernen.

Ich habe vor mit PHP ein HTML Codeschnibsel in meiner Seite nur dann anzeigen zu lassen, wenn jemand mit dem Style Switcher die different.css Datei lädt oder nicht.

Den Style Switcher habe ich schon am laufen, ich muss jetzt nur irgendwie die Variable get welche bei Style Auswahl im Menü an die switcher.php gesendet wird.

Im head beim stylesheet wird die Variable mit dieser Anweisung gezogen:

PHP:
 <?php	if(isset($_COOKIE['sitestyle']))
{
print trim($_COOKIE['sitestyle']);
}
else
{
print "normal";
}
?>
Also mit Cookie schon mal.

Die switcher.php sieht so aus:

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;
}
?>

Ich will jetzt das meine If Anweisung aber auch die Variable get bekommt, leider geht das aber irgendwie nicht, weil die Variable im Auswahlmenü der Styles direkt an die switcher.php geschickt wird, so:

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

Wie kann ich jetzt in meine if Anweisung die Variable get bekommen?

Meine if Anweisung sieht so aus:

PHP:
<?php
if ($HTTP_GET_VARS["sitestyle"] == "different")
{
echo "Codeschnibsel 1";
}
elseif ($HTTP_GET_VARS["sitestyle"] == "normal")
{
echo "Codeschnibsel 2";
}
?>
 
Zuletzt bearbeitet:
Dein Variablenname für die IF-Anweisung bei dem angegeben Link müsste schon nur 'set' heißen, dass wohl ein Fehler hier denke ich oder?

Da $_GET und Co Superglobale sind kannst du egal in welcher IF-Anweisung immer drauf zugreifen.

Schau mal mit print_r($_REQUEST) welche Werte du im Header übergibst, diese sind dann auch für deine IF-Anweisung entsprechend verfügbar.

if($_REQUEST['set'] == 'different') ....
 
Hallo,

ich habe es leider noch nicht geschaft das nur bei einem bestimmten Style die echo Angaben ausgegeben werden.

Meine If Formel dazu sieht so aus:

PHP:
 <?php
if ($_REQUEST["set"] == "normal")
{
echo "nichts";
}
else
{
echo "text";
}
?>

Mit if ($_REQUEST["set"] == "normal") sollte ich doch die richtige Variable zum vergleichen der Styles bekommen, aber es klappt nicht, es kommt auch keine Fehlermeldung, nur wird jedesmal das echo text aus der if Formel ausgegeben, es sollte aber nur beim style normal ausgegeben werden und ansonsten sollte nichts ausgegeben werden.

Meine switcher.php Datei von welcher die Variable kommen sollte sieht so aus:

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;
}
?>
.

Wie gesagt funktioniert der Switcher Fehlerfrei nur die If Formel nicht. Ich würde mich über Hilfe sehr freuen.
 
Hallo,

konnte das Problem lösen mit habe aber ein neues Problem, mit folgender If Anweisung möchte ich eine Sicherheitsanweisung für mein Style Switcher bauen, bei der Variable sitestyle aus der switcher.php darf niemals die font.4 oder font5 .css von der font.php Datei ausgegeben werden.


Folgender massen sind meine Dateien aufgebaut:

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;
}
?>

font.php
PHP:
<?php
$accept =  array('font1','font2','font3','font4','font5');
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('font',  $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;
}
?>

In der Seite selbst hole ich die Variablen so:
PHP:
<link rel="stylesheet" href="<?php	if(isset($_COOKIE['sitestyle']))
{
print  trim($_COOKIE['sitestyle']);
}
else
{
print "normal";
}
?>.css" media="screen" />
<link rel="stylesheet" href="<?php if(isset($_COOKIE['font']))
{
print  trim($_COOKIE['font']);
}
else
{
if ($_COOKIE['sitestyle'] == 'normal' and $_COOKIE['font'] == 'font2')
{
echo "font4";
}
elseif ($_COOKIE['sitestyle'] == 'normal' and $_COOKIE['font'] == 'font3')
{
echo "font5";
}
else
{
print "font1";
}
}
?>.css" media="screen" />

Wie könnte ich das mit der Sicherheitsanweisung richtig hinbekommen, im Moment passiert folgendes, wenn man die sitestyl different.css wählt und die font font4.css, dann bleibt die font4.css auch weiterhin stehen, sobald man wieder die normal.css wählt, das darf aber nicht sein. Bei der normal.css dürfen nur die font1-3 zur Auswahl stehen, das ganze ich echt etwas kompliziert, aber vielleicht hilft mir auch schon ein Ansatz.
 
Zurück