dqouryz3595 2018-08-30 03:20
浏览 35
已采纳

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?

  • 写回答

3条回答 默认 最新

  • dsf1222 2018-08-30 13:56
    关注

    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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?