php - 在 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。
解决方案
如果您不想让它在 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 解决方案。
推荐阅读
- sql - 具有最接近时间戳的 SQL 自联接
- angular - 如果登录后找不到值,注销用户?
- html - 如何使 div 的宽度成为任何内容?
- jquery - 检查链接是否包含字符串并向其添加 rel='supported' 属性
- java - 用 PDFbox 和 boxable 替换 Itext
- sql-server - AWS 无服务器离线和 MS-SQL 数据库
- javascript - PDF 脚本日期周
- r - 希望在 r 的 ANOVA 分析中包含子块
- javascript - await 仅在异步函数中有效,同时我已经将“异步”放入函数中
- c# - 如何在应用程序运行时从互联网获取日期时间,然后连接关闭并成为本地?