首页 > 解决方案 > 在 PHP 中创建暗版网站的最佳方法

问题描述

我有一个基于 PHP MySQL 的网站,其背景为纯黑色,只有白色的文本和内容。我想要一个切换按钮,它将反转所有图像文件和 HTML 本身以具有更亮的版本,但我不希望更改在 URL 中可见。这是单击后我要进行的 CSS 更改:

.member-icon, .smaller_icons, .main_logo, .footer_lower_part img, .first_smalls {
filter: invert(0);
}
html, img, .partnerimg, .b_l_contacts, .logo_holder, .dark_mode{
    filter:invert(1);
}

和按钮本身:

<div class="dark_mode">
<img src="/pics/body/dark_mode/dark_mode.svg" alt="dark mode switcher">
</div>

我正在寻找切换值的最佳方式,这将使 PHP 在整个会话期间加载额外的 CSS 而不会显示在 URL 中。

黑暗版

轻版



开关(右下角的月亮图标)在 body.php 文件中,在所有其他页面中都是一致的。

如果您想看一下,该网站是 artfabers.com。

标签: phpcss

解决方案


如果您不想让它在 URL 中可见并且不想使用 JavaScript,您还有其他一些选择:

  • 使用会话
  • 使用 cookie
  • 将设置存储在数据库中,如果用户已登录(在您的屏幕截图中似乎并非如此)

我会选择会话解决方案。

单击按钮时,您应该向 php 发送用户想要切换背景颜色的调用。

如果您使用 get 请求(只是<a href="?bg=black">moon</a>),则必须在设置会话后立即重定向用户以将其从 URL 中删除。

如果您使用 POST 表单,它将在 URL 中不可见,但是在浏览器中刷新/返回时,您会出现烦人的“您确定要重新发送表单数据”-确认对话框等。所以我会也为此使用重定向。

例子

的HTML:

<div class="dark_mode">
    <a href="settings.php?bg=dark">
        <img src="/pics/body/dark_mode/dark_mode.svg" alt="dark mode switcher">
    </a>
</div>

设置.php:

<?php
session_start();

if (isset($_GET['bg'])) {
    $_SESSION["bg"] = $_GET['bg'];
}

header('Location: index.php');

现在您可以通过调用 $_SESSION['bg'] 访问 body.php 中的当前背景颜色

以上内容未经测试,但应该可以工作,至少让您知道如何解决它。

不过我想提一下,这是一种非常老式的做这些事情的方式。如果我是你,我会研究一个不需要刷新页面的 JavaScript 解决方案。


推荐阅读