从一个链接引导用户访问不同URL的好方法是什么?

时间:2009-12-17 18:48:24

标签: php javascript redirect hyperlink

我已经使用PHP几个月了。我整理了一个包含三组用户的小型PHP站点:管理员,教师,学生。

这就是我想做的事情:

学生分为不同的小组。我现在有五个不同的小组。这五个组中的每一个都可以访问指向他们到在线教室的链接。我们可以有不同数量的教室。

假设我们为第1组有五个教室。 假设第1组的20名学生在下午5点点击链接。此链接将他们带到在线教室。我希望前五个学生被重定向到一个教室/链接,第二个五个学生被重定向到另一个教室/链接,第三个五个学生被重定向到另一个教室,等等。

我的问题是,用PHP做这件事最好吗? JavaScript的?这过于复杂还是非常微不足道?

干杯!

萨姆

4 个答案:

答案 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.

当学生离开教室时,下一位学生的座位是免费的。这最小化了所需的类数(带宽)。