【问题标题】:Using cookies and php to change style sheets(CSS)使用 cookie 和 php 更改样式表(CSS)
【发布时间】:2010-10-06 21:43:19
【问题描述】:

我有一些代码可以工作并使用表单更改样式表。只要您保持浏览器窗口打开,它就可以工作。您可以返回另一个站点,样式将是您选择的样式,这很好,但是如果您关闭浏览器并返回,它将被设置为默认值。这是因为我每次都开始一个新会话,还是因为我没有设置 cookie 的有效期?那是问题一。

问题 2 是我有当前可用的下拉菜单并选择正确的样式表,但我也有一些用于文本大小的单选按钮。我希望将它们合并,但它们将使用不同的样式表工作,这些样式表只包含文本大小,因此默认文本大小是标准的,用户可以与样式表一起更改它们,但它们可以独立工作。任何人都可以建议一些编码谢谢。

以下是我目前正在使用的内容。干杯

php 设置样式:

  if (isset($_COOKIE["selectedStyle"])) // has the cookie already been set
  {
    $style=$_COOKIE["selectedStyle"];
  }else{
$style = spring;
}

  if (isset($_POST["changeStyle"]))  // changing the style
  {
    $style=$_POST["changeStyle"];
  }

  setcookie("selectedStyle",$style); // update or create the cookie
 ?>

带有下拉菜单和文本转换器的单选按钮的表单:

<div id="headerInfo">
<p><strong>User Controls</strong></p>
  <form method="post" action="<?= $_SERVER["PHP_SELF"];?>">
Select Page Style:<br/>
<select name="changeStyle">
<option value="spring">Spring (Green)</option>
<option value="summer">Summer (Yellow)</option>
<option value="winter">Winter (Blue)</option>
<option value="autumn">Autumn (Orange)</option>
</select>
<input type="submit" name="submitstyle" value="Set Style">
  </form>
    <form method="post" action="<?= $_SERVER["PHP_SELF"];?>">
Select Font Size:<br/>
<span class="smallText">A</span><input type="radio" name="changeFontSize" value="small"/>
<span class="standardText">A</span><input type="radio" name="changeFontSize" value="standard"/>
<span class="largeText">A</span><input type="radio" name="changeFontSize" value="large"/>
<span class="xLargeText">A</span><input type="radio" name="changeFontSize" value="extraLarge"/>
</select>
<input type="submit" name="submitfont" value="Set Size">
</div>

【问题讨论】:

  • 当浏览器能够更强大地改变字体大小时,为什么还要使用 CSS 来改变字体大小?只需使用相对字体大小,让用户选择自己的大小。

标签: php css cookies styles


【解决方案1】:

setcookie 有一个expire 参数,您可以使用它来设置所需的到期日期。文档有一个关于如何执行此操作的示例。

只需创建另一个带有字体大小信息的 cookie 并调用相关的样式表。单选按钮需要在 form 标记内作为 http 请求的一部分发送。

【讨论】:

    【解决方案2】:

    当谈到字体大小调整时,我个人会说,您最好在客户端更改大小,with jQuery for example。我认为一般来说,如果有人需要在每个页面上使用更大的字体(为了便于访问),他们会在浏览器中增加字体大小。

    尽管如果您想永久更改样式表元素/设置更高的字体大小,您也可以执行 AJAX 调用来设置 cookie/在数据库中保存记录。

    【讨论】:

      【解决方案3】:

      最好使用$_SESSION 来跨页面保持样式。这样,即使用户关闭了 cookie,它也能正常工作,因为它会为你重写带有会话 ID 的 URL。

      【讨论】:

        猜你喜欢
        • 2012-12-27
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        • 2013-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多