Я делаю онлайн викторины типа сценария на PHP. Лучше использовать куки или сессии - PullRequest
0 голосов
/ 11 сентября 2009

Я делаю онлайн-викторину типа сценария на PHP. Пользователю нужно посетить 50 вопросов за 45 минут.

По истечении этого времени он должен закрыть страницу или отправить ответ на следующую страницу.

Лучше использовать куки или сеансы. Как я могу это сделать.

Я новичок в концепции сессии, поэтому вы можете предложить подходящий код.

В ожидании самого быстрого ответа

Ответы [ 2 ]

2 голосов
/ 11 сентября 2009

Основное различие между файлами cookie и сессиями заключается в том, где хранятся данные.

С помощью файлов cookie вы отправляете данные в браузер, и браузер продолжает отправлять их вам после каждого последующего запроса.

В сеансах вы сохраняете данные в памяти, а затем просто устанавливаете один файл cookie с идентификатором, чтобы идентифицировать кусок пространства в памяти сервера, где хранятся данные.

Принципиальным отличием является то, что когда данные хранятся в файлах cookie:

  • может редактироваться пользователем
  • это можно увидеть в сети при выполнении запросов
  • добавляет вес каждого запроса в дополнительной требуемой полосе пропускания
  • занимает меньше памяти сервера

Когда данные хранятся в сеансе:

  • пользователь не сможет получить к нему доступ, не пройдя через вас
  • он не отправляется туда и обратно с каждым запросом (только cookie с идентификатором сессии)
  • но занимает память на сервере
  • это может вызвать проблемы на крупных сайтах при необходимости перехода на несколько веб-серверов

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

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

2 голосов
/ 11 сентября 2009

Я предполагаю, что, поскольку это тест, вы будете подсчитывать очки, записывать рейтинги и т. Д. Таким образом, ваши пользователи в конечном итоге попытаются обмануть.

Поэтому я бы порекомендовал сеансы, которые выполняются только на стороне сервера. $_SESSION - это массив, подобный $_GET и $_POST, уникальный для каждого пользователя, использующего ваш веб-сайт. Вы можете положить и получить что угодно, когда захотите.

Единственной вещью на стороне клиента является специальный cookie-файл, называемый PHPSESSID, который является идентификатором вашего посетителя, используемый PHP для получения его массива $_SESSION.

Единственное, что вам нужно сделать, это начинать каждую страницу с session_start();, перед любыми инструкциями (кроме случаев, когда вы используете буферизацию, например ob_start())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...