Показать / скрыть div с сессиями или cookie - PullRequest
0 голосов
/ 06 апреля 2011

Мне нужно спрятать или показать div, внутри которого есть слайд-шоу.Идея состоит в том, чтобы дать пользователям ссылку, чтобы они могли скрыть или показать div.

В данный момент я вызываю слайд-шоу на теле страницы с <?php include('slideshow.php'); ?>

Послепользователь нажимает на ссылку, чтобы скрыть / показать элемент div. Я хотел бы вызвать второй файл (<?php include('no-slideshow.php'); ?>), содержащий другой элемент div.

Насколько я обнаружил, нет способа добиться этого с помощьюсеансов или, по крайней мере, я не нашел решения этой проблемы.

Я предполагаю, что это нужно сделать с помощью файлов cookie, но я не понимаю, как.

Ответы [ 3 ]

0 голосов
/ 06 апреля 2011

Эта команда установит 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');
}

Примечание: поскольку куки могут быть легко подделаны, вам нужно дважды проверить, что включить.

0 голосов
/ 06 апреля 2011

Если вы не хотите использовать 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.

Я не проверял этокод, так что такие же опечатки возможны.

0 голосов
/ 06 апреля 2011

Я не уверен, что понял. Вы хотите скрыть div, когда пользователь нажимает на ссылку?

Почему вы не делаете это с помощью JavaScript? (скрыть / показать элементы?)

...