gpt4 book ai didi

php - 基于 PHP Session 动态加载 CSS,更好的方法?

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:18 25 4
gpt4 key购买 nike

我想根据用户的登录状态生成一个 CSS 文件。我对 PHP session 没有问题,我只是很难动态生成 CSS,而且我不喜欢我的解决方案,即使它有效。

(我想根据用户的登录状态向他们呈现一个完全不同的 CSS 文件。)

而不是仅仅指向正确的 CSS 文件,你在一个文件夹中有各种 CSS 文件,而只是改变指针,例如:

<link rel='stylesheet' type='text/css' href='<?php echo $correctStylePath; ?>'>

我认为根据文件的登录状态实际允许访问文件会非常巧妙。 (我想阻止访问他们不应该看到的 CSS 文件。)

这意味着根本不允许错误的 CSS 出现在公众视野中。

我想不出一种方法来根据 session 显示不同的文件,所以我做了这个看起来相当粗糙的 hack。

我没有提供不同的 CSS 文件或具有不同内容的相同 CSS,而是将所有 CSS 加载到 HTML 文档的头部。

有没有更好的方法可以让我将 CSS 保存在自己的文件中?

index.php

<?php
// Now we can check for user
if(isset($_SESSION['LoggedIn']) && isset($_SESSION['Username'])){
$includeMode = "LoggedIn";
?>
<html>
<head>
<title>Home (Logged In)</title>
<?php
require_once 'styles.css.php';
?>
</head>
<body>
....
</body>
</html>
<?php
}else{
$includeMode = "LoggedOut";
}
?>
<html>
<head>
<title>Home (Logged Out)</title>
<?php
require_once 'styles.css.php';
?>
</head>
<body>
....
</body>
</html>

styles.css.php

<?php

$fileLocation = '';

if($includeMode == 'LoggedIn'){

$fileLocation = '../css/styles-logged-in.css';

}else if($includeMode == 'LoggedOut'){

$fileLocation = '../css/styles-logged-out.css';

}else{

die();
}

$stylesFile = fopen($fileLocation, 'r') or die("Unable to open file!");

print "<style>";
print fread($stylesFile, filesize($fileLocation));
print "</style>";

fclose($stylesFile);

?>

最佳答案

您可以创建一个名为 style.php 的 PHP 页面,将 header 设置为 CSS,然后根据 $_SESSION 输出变量,然后更改您的 .htaccess文件。

例如,在 <head>您的主页:

<link rel='stylesheet' type='text/css' href='style.css'>

style.php :

session_start();
header("Content-type: text/css");

if(isset($_SESSION['LoggedIn']) && isset($_SESSION['Username'])){ ?>

/* Put your CSS for logged-in users here */

<?php } else { ?>

/* Other CSS here */

<?php } ?>

然后,在 .htaccess 在您的根目录中:

RewriteEngine on
RewriteBase /
RewriteRule ^style\.css$ style.php [L]

这意味着如果您访问 /style.css你会看到 /style.php 的输出,这将是相关的样式表。

一个警告是浏览器缓存会成为一个问题,因为它会缓存一个样式表或另一个,所以除非关闭浏览器缓存,否则样式将不一致(但这会减慢您的速度网站)。

关于php - 基于 PHP Session 动态加载 CSS,更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34857867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com