PHP / CSS:未加载我的会话变量
I'm trying to load parameters with php(stored in my database) to update my css. After login, I start a session and load css in my header:
<head>
<?PHP
define('THEME', $_SESSION["theme"]);
?>
<link type="text/css" rel="stylesheet" href="./public_html/css/style.php" />
</head>
When I try to access test in style.php it doesn't work:
<?php
header("Content-type: text/css; charset: UTF-8");
switch(constant(THEME)){ something...}
?>
What am I doing wrong? Why can't I access my variable?
New Answer
PHP Constants need to be generated when the page/script is generated and will only last for that script execution.
IF you want constants (As here) which last over multiple script/page loads of your website you need to use $_SESSION
(or $_COOKIE
) values to carry the variable from page to page.
Thus:
As you set your constant here:
<?PHP
define('THEME', $_SESSION["theme"]);
?>
Using a $_SESSION
value; simply ignore the constant in your style.php
page and use the session variable.
Be sure to run session_start();
at the top of every script you want to read or write season data.
thus:
-
style.php:
<?php session_start(); //IMPORTANT! header("Content-type: text/css; charset: UTF-8"); switch($_SESSION["theme"]){ case "a": .... break; case "b": ... etc. } ?> <html> ....
Old Answer
Based on this answer you can do:
switch (constant("__TEST__")){
case "Ok":
print "this constant is ".__TEST__;
break;
...
}
Please also note that double underscore constants (_ _ WORD _ _
) are generally reserved and using this style for custom constants is frowned upon.
Debug note:
Do NOT print
any PHP output before your header(...)
statement. The header()
MUST come before anything is output to the browser.
You can't use the header function if you already have an output. See the documentation : http://php.net/manual/fr/function.header.php
You must set your header before anything else, like this :
<?php
header("Content-type: text/css; charset: UTF-8");
print $test; // prints KO
print __TEST__; // prints KO
switch(__TEST__){ something...}
?>
I think you are also Missing an include or require Statement to get the $test variable into your style.php