2016-01-22 83 views
1

我正在将一个简单的HTML5虚拟教室整合到语言教学网站上。用JS创建一个url实例

我抄课堂的源代码,并将其粘贴到下面的文件夹中的index.html页面...

site.com/classes/room-1

这是工作的罚款但是任何人都可以随时进入教室,我需要限制访问课程。

我想通过制作一个独特的URL实例来实现这一点,所以基本上如果你没有url链接,你将无法访问教室。因此,URL会是这个样子......

site.com/classes/room-1?instance=l23jhvn23o1i2un3lnj12xas

然后当老师登录到他与他的老师教室名称生成一个唯一的URL和教师被重定向到唯一的URL实例。他可以通过电子邮件与学生分享链接,他们可以继续上课。

以下是处理实例URL的代码片段...那么生成URL实例的最佳方式是什么?

function start() 
{ 
    // Optional username and password. If not specified here, a popup dialog 
    // box will appear. 
    var username = ''; 
    var password = ''; 

    // The Groupworld server to connect to. You can optionally specify the 
    // port number (using the format "server:port"). 
    var base = 'www.groupworld.net:9175:1639'; 

    // The object to load and instance name. To create a different "session", 
    // just copy the html page and change the instance name. 
    var object = 'new_conference:room-1'; 

    // Flags: not currently used. 
    var flags = 0; 
    groupworld.startup(username, password, base, object, flags); 
} 

下面是我们所需要的图解...提前

Teacher work flow

感谢,

杰思罗。

+0

如果你想在网页限制指定的参数中的URL,你应该使用服务器端,像PHP一样。 – jcubic

+0

如果学生传播唯一的秘密URL,该怎么办?因为@ jcubic说你需要实现服务器端的功能 –

+0

对,你能解释一下“限制页面到指定参数的URL”吗?参数是实例吗? JS也不可能完成这个任务,或者只是不太安全? –

回答

0

我想我自己可能已经回答了这个问题,如果有人愿意检查我的逻辑,我会非常感激。

关键是在这里的课堂嵌入代码...

// The object to load and instance name. To create a different "session", 
 

 
// just copy the html page and change the instance name. 
 

 
var object = 'new_conference:jethro';

所以我需要从“叶忒罗”在Javascript来改变“变种对象”(这是什么每次教师创建教室时,我都会将教室命名为随机字符串)。该随机字符串应该被保存在一个PHP变量中,我将其称为'$ instance'...

所以我创建了一个包含临时数据库的index.php登录页面。以下是直播网站上的链接:http://toucan-talk.com/classes

临时数据库具有以下凭据

用户名:杰思罗

密码:密码

下面是评论的index.php代码由我...

<?php 
session_start(); 

if ($_POST['username']) { 

     // Temporary database 
    $dbUsname = "jethro"; 
    $dbPaswd = "password"; 
    $uid = "1"; 

    $usname = strip_tags($_POST['username']); 
    $paswd = strip_tags($_POST['password']); 

    if ($usname == $dbUsname && $paswd == $dbPaswd) { 
     // Set session variables 
     $_SESSION['username'] = $usname; 
     $_SESSION['id'] = $uid; 
     // To generate the random string from a word 
     $str = "Hello"; // word to hash 
     $instance = md5($str); // hash stored in variable 
     header('Location: classroom.php?instance='.$instance);// Hash is concatenated onto the login redirect page 
    } else { 
     echo "<p>Oops! That username or password combination is incorrect. Please try again.</p>"; 
    } 
} 

?> 



<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<link rel="stylesheet" type="text/css" href="style.css"> 
<title>Toucan-Talk Tutor Login</title> 
</head> 

<body> 
    <div id="wrapper"> 
     <center> 
      <img style="width: 250px;" alt="" src="http://www.toucan-talk.com/images/logos/footer-logo.png"> 
     </center> 
     <h1>Enter Classroom</h1> 
     <form id="form" action="index.php" method="post" enctype="multipart/form-data"> 
     Username: <input type="text" name="username"/><br> 
     Password: <input type="password" name="password" /><br> 
     <br> 
     <center> 
      <input class="button" type="submit" value="Enter" name="Submit" /> 
     </center> 
     </form> 
</body> 
</html> 

所以我认为串接MD5哈希到头部页面重定向使我现在得到的URL看起来像这样:http://toucan-talk.com/classes/classroom.php?instance=8b1a9953c4611296a827abf8c47804d7

我做了另外一个文件名为classroom.php这头重定向到。在那里我有教室嵌入代码。这里仅仅是文件中的PHP:

<?php 
session_start(); 

// Variable with the md5() hash code 
$instance = $_GET['instance']; 

if (isset($_SESSION['id'])) { 
    $uid = $_SESSION['id']; 
    $usname = "Test variables: <br> Username: ".$usname. "<br> Id: ".$uid; 
} else { 
    echo 'Please login'; 
    die(); 
} 

?> 

正如你可以看到我已经定义的变量“$实例”再次为$例如= $ _GET [“实例”]; (我不太清楚这是什么一样,但仍然不无它的工作!)

所以我知道$ _GET [“实例”] = $实例= 8b1a9953c4611296a827abf8c47804d7

现在我只需更换的Javascript“ var object'与PHP标记中的变量$实例在Groupworlds服务器上即时生成教室!

// The object to load and instance name. To create a different "session", 
 
// just copy the html page and change the instance name. 
 
var object = 'new_conference:<?php echo $instance ?>';

现在,当我看到教室里源代码的实例是MD5()哈希!

sourcecode

这似乎这样的伎俩......那么,这似乎是解决这个编码问题的合理方法?我很高兴能在此基础上进一步完善工作。

非常感谢你们帮助到目前为止。

Jethro。