用会话或cookie显示/隐藏div

时间:2011-04-06 13:50:55

标签: php cookies html hide show

我需要隐藏或显示里面有幻灯片的div。 这个想法是给用户一个链接,让他们隐藏或显示div。

目前,我使用<?php include('slideshow.php'); ?>

在页面正文上调用幻灯片

用户点击隐藏/显示div的链接后,我想调用第二个文件( <?php include('no-slideshow.php'); ?>)包含不同的div。

据我所知,没有办法通过会话实现这一点,或者至少我找不到解决这个问题的方法。

我的猜测是,这需要用cookies来完成,但我不知道如何。

3 个答案:

答案 0 :(得分:0)

我不确定我明白了。您想在用户点击链接后隐藏div吗?

你为什么不用javascript这样做? (隐藏/显示div?)

答案 1 :(得分:0)

此命令将set a cookie命名为include,其值为what to include

setcookie('include', 'what to include', time()+86400);

您可以在包含之前检查此Cookie:

if (isset($_COOKIE['include'])) {
    include($_COOKIE['include'] . '.php');
} else {
    include('slideshow.php');
}

注意:由于Cookie很容易伪造,因此您需要检查两次要包含的内容。

答案 2 :(得分:0)

如果您不想仅使用JavaScript方式来实现,那就是使用链接(需要重新加载页面)。

这只是基本的逻辑,不是一个完整的解决方案,但你认为你会明白这一点。

在网页上创建一个到服务器端脚本的链接。

<a href="toggle_visibility.php">hide/show</a>

创建脚本 togle_visibility.php 以处理用户的请求。

<?php

  $hidediv = isset($_COOKIE['hide_div']) && ($_COOKIE['hide_div'] == 'hide');
  $cookie_value = !$hidediv ? 'hide' : 'show';
  setcookie('hide_div', $cookie_value, time()+32000000); // cookie expires after year
  header('location: http://www.mysite.com/index.php');

?>

现在你需要的(在返回原始页面之后)是检查存储在cookie中的值,并决定你不想显示div来做用户。

<?php

  ... more code

  $hidediv = isset($_COOKIE['hide_div']) && ($_COOKIE['hide_div'] == 'hide');
  if ($hidediv) {
    include('no-slideshow.php');
    }
  else {
    include('slideshow.php');
    }

  ... more code 

?>

编辑:$ hidediv条件。

如果用户已禁用JavaScript,但如果在浏览器设置中禁用了Cookie,则无效。

我没有检查此代码,因此可能存在相同的拼写错误。