PHP - 使用cookie加载CSS,但是没有读取cookie?

use*_*ser 0 css php cookies

我目前有一个网站,用户可以在其中选择自定义主题.选择主题后,会创建一个cookie.cookie包含正确的数据并指向正确的CSS文件.出于某种原因,在重新访问该网站时,主题未加载.我应该指出我是PHP的新手,所以这可能是一个非常容易犯的错误.请帮忙.谢谢.

这是我的代码:

<?php
$stylesArr = array('Default', 'Black', 'Pink', 'Green', 'Red');
if(isset($_GET['theme']) && in_array($_GET['theme'], $stylesArr)) {
    $style = 'CSS/' . $_GET['theme'] . '.css';
    setcookie("theme", $style, time()+(60*60*24*30));
} else {
    if(isset($_COOKIE['theme']) && in_array($_COOKIE['theme'], $stylesArr)) {
        $style = 'CSS/' . $_COOKIE['theme'] . '.css';
    } else {
        $style = 'CSS/Default.css';
    }
}
?>
<link rel="stylesheet" href="<?php echo $style>" type="text/css"media="screen" />
Run Code Online (Sandbox Code Playgroud)

n13*_*313 6

你是把一个字符串CSS/Default.css到一个cookie,但你正在检查对字符串Default$stylesArr.改变这一行:

$style = 'CSS/' . $_GET['theme'] . '.css';
Run Code Online (Sandbox Code Playgroud)

对此:

$style = $_GET['theme'];
Run Code Online (Sandbox Code Playgroud)

它会没事的.

另外,我必须警告您在应用程序中直接使用来自$ _GET的数据.你永远不应该这样做,因为它可能导致严重的安全问题.始终清理用户输入.