Как я могу проверить, была ли ссылка уже нажата? - PullRequest
2 голосов
/ 16 февраля 2011

Я работаю над игрой PHP Jeopardy, мне нужен способ узнать, как проверить, была ли нажата ссылка на вопрос, и скрыть ее, как только она появится.

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

Кто-нибудь знает, как я могу это сделать?

Edit:

Настройка моей игры довольно проста. Пользователям не нужно регистрироваться.

Вам предоставляется доска с информацией об угрозе, с которой вопросы берутся из базы данных mysql, вопросы и ответы хранятся с использованием get (я не хотел делать несколько запросов sql). Когда вы нажимаете на категорию вопроса (например, Категория 1, 100 долларов США), вы попадете на страницу, где будет отображаться вопрос на этой странице - ссылка на доску объявлений и ссылка на ответ. На странице ответов есть только ответ и ссылка на страницу форума. (имеет смысл, дайте мне знать, если это не так)

Ответы [ 3 ]

2 голосов
/ 16 февраля 2011

Вы можете получить посещенную ссылку с помощью CSS.Это делается с помощью так называемых псевдоклассов в CSS (больше информации о псевдоклассе здесь )

Так что для CSS вы можете сделать что-то вроде:

a.jeopardyquestion:visited {display: none;}

И затем, если вы хотите показать все вопросы, просто сделайте:

$("a.jeopardyquestion").toggle(true); // to show them

Большое редактирование: не существует надежного способа сделать это только с помощью CSS и JS с псевдоклассами,Похоже, что они собираются полностью отказаться от поддержки свойства :ited из браузеров.В настоящее время Chrome полностью игнорирует стили для посещенных ссылок, кроме свойства color .Даже в этом случае невозможно определить цвет, поскольку Chrome лжет и возвращает цвет ссылки без применения правила :ited .Firefox по-прежнему поддерживает псевдокласс :ited , но, похоже, это тоже скоро будет удалено.

Так что если вы хотите отслеживать ссылки, которые посетил пользователь, вы должны использовать некоторую комбинациюлибо javascript + куки для отслеживания посещенных ссылок, например:

  1. Пользователь посещает "панель инструментов"
  2. Кликает ссылку
  3. Идентификатор вопроса сохраняется (добавляется) в файл cookie (например: «5,12,22,45»);
  4. Пользователь возвращается на страницу
  5. Прочитать файл cookie и показать только ссылки, которых нет вcookie.

Или вы можете использовать AJAX для предоставления серверу информации о посещенных вопросах.Таким образом, вы можете достичь еще большей безопасности (и предотвращения читов), отправляя пользователю только те вопросы, которые он должен видеть, и выполняйте все проверки на стороне сервера, например:

  1. Пользователь выбираетвопрос
  2. Либо вызов AJAX перед навигацией, либо просто поместите открытый вопрос в сеанс при загрузке страницы вопроса
  3. Пользователь возвращается на страницу вопроса
  4. При созданииСтраницу вопросов, прочитайте сеанс и посмотрите, на какие вопросы ответил пользователь, и не отображайте их.
0 голосов
/ 16 февраля 2011

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

0 голосов
/ 16 февраля 2011

Простым решением, вероятно, было бы дать каждой ссылке уникальный идентификатор и использовать javascript, чтобы скрыть ее на стороне клиента. Вы можете использовать javascript, чтобы снова сделать их видимыми.

EDIT: Используйте сеанс для связи с каждым пользователем. Им не нужно регистрироваться для этого.

Используйте ajax для кликов по вопросу, обновите экран с вопросом. Это предотвратит отслеживание ваших пользователей в источнике, чтобы получить ответы. Свяжите, какие вопросы были замечены с вашим файлом cookie сессии, и откажитесь отправить тот же вопрос.

...