我已经使用PHP几个月了。我整理了一个包含三组用户的小型PHP站点:管理员,教师,学生。
这就是我想做的事情:
学生分为不同的小组。我现在有五个不同的小组。这五个组中的每一个都可以访问指向他们到在线教室的链接。我们可以有不同数量的教室。
假设我们为第1组有五个教室。 假设第1组的20名学生在下午5点点击链接。此链接将他们带到在线教室。我希望前五个学生被重定向到一个教室/链接,第二个五个学生被重定向到另一个教室/链接,第三个五个学生被重定向到另一个教室,等等。
我的问题是,用PHP做这件事最好吗? JavaScript的?这过于复杂还是非常微不足道?
干杯!
萨姆
答案 0 :(得分:3)
最好在服务器端完成。给他们所有相同的链接。在链接后面的页面/ PHP文件上,有一个计数器,用于计算请求链接的次数。根据计数,使用location
标题重定向到所需的页面。
答案 1 :(得分:0)
好吧,假设您要存储到目前为止在数据库中点击链接的人数:
// 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]);
基本上,您将链接重定向到页面。该页面抓取了到目前为止点击链接的人数。然后,您可以找到他们要去的教室,然后更新数据库中的数字。最后,将它们重定向到正确的位置。
有很多开放空间,但这些是基本步骤。
此外,正如评论所说,您可能希望同时读取/写入该号码,以确保它尽可能靠近呼叫。您可能希望以某种方式锁定数据库上的计数器,如果脚本遇到锁定状态,请暂停一下,然后重试。
答案 2 :(得分:0)
这里的问题是你需要一些服务器端状态来实现这一点,即存储在服务器上的某种计数器。
您还需要注意,此计数器可以锁定,直至更新,否则您的号码将被关闭。如果有几个人一起点击链接,他们可能都会读取相同的计数器值,并且最终可能会有超过5人在教室里。
答案 3 :(得分:0)
我会根据“席位”数组来定义问题,并搜索数组以找到下一个可用席位。
$seat[0] => 'link1';
$seat[1] => 'link1';
etc.
$seat[4] => 'link1';
$seat[5] => 'link2';
$seat[6] => 'link2';
etc.
当学生离开教室时,下一位学生的座位是免费的。这最小化了所需的类数(带宽)。