Как можно было бы направить пользователей на разные URL-адреса из одной ссылки? - PullRequest
0 голосов
/ 17 декабря 2009

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

Вот что я хотел бы сделать:

Студенты в разных группах. У меня сейчас пять разных групп. Каждая из этих пяти групп имеет доступ к ссылке, которая направляет их в онлайн-класс. У нас может быть переменное количество классных комнат.

Допустим, у нас есть пять классных комнат для группы 1. Допустим, 20 студентов из группы 1 нажимают на ссылку в 5:00 вечера. Эта ссылка приводит их в онлайн-класс. Я бы хотел, чтобы первые пять учеников были перенаправлены в один класс / ссылку, вторые пять учеников были перенаправлены в другой класс / ссылку, третьи пять учеников были перенаправлены в другой класс и т. Д.

Мои вопросы: лучше ли будет делать это на PHP? JavaScript? Это слишком сложно или на самом деле довольно тривиально?

Ура!

Sam

Ответы [ 4 ]

3 голосов
/ 17 декабря 2009

Лучше всего это делать на стороне сервера. Дайте им всем одинаковые ссылки. На странице / PHP-файле за ссылкой находится счетчик, который подсчитывает, сколько раз запрашивается ссылка. В зависимости от количества, перенаправьте на нужную страницу, используя заголовок location.

0 голосов
/ 18 декабря 2009

Я бы определил проблему в терминах массива "мест" и поискал в массиве, чтобы найти следующее доступное место.

$seat[0] => 'link1';
$seat[1] => 'link1';
etc.
$seat[4] => 'link1';
$seat[5] => 'link2';
$seat[6] => 'link2';
etc.

Таким образом, когда ученик покидает класс, место для следующего ученика является бесплатным. Это минимизирует необходимое количество классов (пропускная способность).

0 голосов
/ 17 декабря 2009

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

Вы также должны быть осторожны, чтобы этот счетчик можно было заблокировать от чтения до обновления, иначе ваши номера будут отключены. Если несколько человек щелкают ссылку близко друг от друга, все они могут прочитать одно и то же значение счетчика, и вы можете получить более 5 человек в классе.

0 голосов
/ 17 декабря 2009

Хорошо, при условии, что вы сохраняете количество людей, которые до сих пор щелкнули ссылку в базе данных:

// Get the number of people who clicked from a database or somewhere
$people_clicked = getCurrentNumber();

// Update the Number in the Database ASAP (As per comments)
updateNumber();

// Divide it by room number
// Make sure it is a whole number
$room = floor($people_clicked/5);

// Define each room into an array
$room_links = array("http://firstroom.com", "http://secondroom.com");

// Redirect
// This redirects people 1-5 to the first item in the array, 6-10 to the second, etc.
header("Location: ".$room_links[$people_clicked]);

По сути, у вас есть ссылка, перенаправленная на страницу. На странице отображается количество людей, которые кликнули по ссылке. Затем вы узнаете, в какой класс они собираются, а затем обновите номер в базе данных. Наконец, перенаправьте их в правильное местоположение.

Здесь много открытой комнаты, но это основные шаги.

Кроме того, как сказано в комментариях, вы можете одновременно прочитать / записать номер, чтобы убедиться, что он записан как можно ближе к вызову. Возможно, вы захотите каким-то образом заблокировать счетчик в БД, и, если сценарий обнаружит заблокированный, поспите секунду и попробуйте снова.

...