我正在尝试使用php(存储在数据库中)加载参数以更新CSS。 登录后,我开始一个会话并在头中加载CSS:
<head>
<?PHP
define('THEME', $_SESSION["theme"]);
?>
<link type="text/css" rel="stylesheet" href="./public_html/css/style.php" />
</head>
当我尝试访问style.php中的测试时,它不起作用:
<?php
header("Content-type: text/css; charset: UTF-8");
switch(constant(THEME)){ something...}
?>
我在做什么错?为什么我不能访问我的变量?
答案 0 :(得分:1)
如果已经有输出,则不能使用标题函数。 请参阅文档:http://php.net/manual/fr/function.header.php
您必须先设置标题,例如:
DECLARE @order int =
(
select count (a.patientSID)
from CPRSOrder.CPRSOrder a
join sstaff.SStaff b on b.staffSID = a.EnteredbyStaffSID
join spatient.spatient c on c.patientSID = a.patientSID
where b.staffName = xxxxxxxx
and a.enteredDateTime >= '20180801' and a.enteredDateTime <= '20180828'
)
DECLARE @note int = (
select count (a.patientSID)
from tiu.tiudocument a
join sstaff.SStaff b on b.staffSID = a.EnteredbyStaffSID
--join spatient.spatient c on c.patientSID = a.patientSID
where b.staffName = xxxxxxxx
and a.episodeBeginDateTime >= '20180801' and a.episodeBeginDateTime <= '20180828'
)
SELECT @note AS [note count]
,@order AS [order count]
,@order + @note AS [total]
答案 1 :(得分:0)
我认为您也缺少包含或要求声明,以将$ test变量添加到您的style.php中。
答案 2 :(得分:0)
PHP常量需要在生成页面/脚本时生成,并且仅在执行该脚本时才持续。
如果您希望常量(如此处所示)持续存在于网站的多个脚本/页面加载中,则需要使用$_SESSION
(或$_COOKIE
)值在页面之间传递变量。
因此:
当您在此处设置常量时
<?PHP
define('THEME', $_SESSION["theme"]);
?>
使用$_SESSION
值;只需忽略style.php
页中的常量并使用会话变量即可。
请确保在top of every script you want to read or write season data上运行session_start();
。
因此:
style.php:
<?php
session_start(); //IMPORTANT!
header("Content-type: text/css; charset: UTF-8");
switch($_SESSION["theme"]){
case "a":
....
break;
case "b":
...
etc.
}
?>
<html>
....
基于this answer,您可以执行以下操作:
switch (constant("__TEST__")){
case "Ok":
print "this constant is ".__TEST__;
break;
...
}
还请注意,通常会保留双下划线常量(_ _ WORD _ _
),并且对于自定义常量使用这种样式是不赞成的。
调试说明:
在您的print
语句之前,请勿header(...)
进行任何PHP输出。 header()
必须 出现在向浏览器输出任何内容之前。