【发布时间】:2011-11-14 14:50:31
【问题描述】:
我目前正在尝试为我的基本 Intranet 推出自己的 CSS 样式切换器。
这不是很重要,但我知道有几个员工视力稍差,并认为高对比度的风格可能会有一些用处。
这是我的理想设置,以及到目前为止我尝试实施的方式。
基本上,我已经有一个 mysql 数据库,其中包含用户登录详细信息以及有关该站点的其他次要偏好。我想为样式偏好设置一个额外的列,并在用户区域中有一个简单的页面,用户可以在其中预览、选择和应用样式。
如果在用户最初选择样式时,将其应用到页面上,这样就可以在操作中看到它,然后可以确认它是否是用户选择的样式,这显然会很好。
到目前为止我所做的尝试:
基本上,当用户登录时,它会创建一个会话变量,其中包含该用户的“样式”列的值。我用数字进行测试,选择了 3 种样式,1、2 和 3。然后在页面的头部,对于样式表的 href,我添加了一些 PHP 来评估会话变量并回显样式表根据设置的内容。
效果很好,样式表根据样式列的 mysql 表中的内容而有所不同。在用户偏好页面上,我有点崩溃了。我创建了一个带有 3 个单选按钮的小表单,每种样式一个。我能从这里看到的唯一方法是将表单发布到一个 PHP 文件,该文件会根据选择更新表格。
我这样做的主要问题是用户必须注销并重新登录才能使更改生效。我想要一个在现场或刷新时发生更改的设置。
我可以使用 cookie,但如果可能的话,我宁愿避免使用。不知道是否有人有任何建议可以帮助我,或者是否有任何预先编写的脚本可以做到这一点?
非常感谢
编辑
【问题讨论】:
-
用户是否经常更换工作站?如果没有,您可以使用 cookie 和非常小的 javascript 来减少您的 php/mysql 开销。您“宁愿避免”cookies有什么原因吗?
-
别忘了您也可以同时包含所有 3 种样式,使用备用样式表语法:
<link rel="alternate stylesheet" title="Large Print" src="bigtext.css" />。在 FFPage Style 菜单中的一个选项。 -
@farray 我只是不擅长使用 cookie,因为自从构建了这个 Intranet 以来我只使用过一次,并且使用它们的数量惊人。
-
@Marc B 是否有可能有两个替代品,或者有办法使用 html 或 php 在默认值和替代品之间切换?非常感谢
-
@eds:只要他们有不同的头衔,你就可以有尽可能多的替补。这是在它们之间动态切换的一种方式:alistapart.com/articles/alternate
标签: php mysql css switch-statement