处理session跨域几种方案

处理session跨域几种方案
处理session跨域几种方案

处理session跨域几种方案

1.访问共同的sessionId,把当前的sessionId写进cookie里面

cookie在不同域名下是不能访问的,我们需要在访问在后台设置用户在登录的时候,把需要共用的登录信息的域名,如果是在1,2级域名下,直接把cookie设置为所属主域名,例如:setcookie("session_id",session_id(),time()+3600*24*365*10,"/","https://www.360docs.net/doc/d311295020.html,");

也许你会问:如果是在不同的域名呢?采用P3P技术简单解决,实现原理,在访问网站https://www.360docs.net/doc/d311295020.html,的时候,https://www.360docs.net/doc/d311295020.html,程序触发https://www.360docs.net/doc/d311295020.html,文件的写入sessionid值,sessionid值便可以获取,然后把seesion值存入数据库,取相同的sessionid值便可。这就要求https://www.360docs.net/doc/d311295020.html,里面的程序文件必需能跨域访问,默认情况下,浏览器是不能跨域设置cookie的,加上p3p头后才行。在对应php文件加上:header(‘P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"’);

2.session数据存储位置一致的实现方法

session该数据默认情况下是存放在服务器的tmp文件下的,是以文件形式存在,而非存储在服务器的内存中,在这里我们得修改为所有域下都能访问的方式。网上介绍了数据库存储,文件形式存储,内存存储,如果用数据库存储session数据,网站的访问量很大的话,SESSION 的读写会频繁地对数据库进行操作,效率就会明显降低,可以考虑存在内存服务器来实现,下面的session.rar里面介绍的是数据库存session的实例。

常用跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态。两种情况:一种https://www.360docs.net/doc/d311295020.html,和https://www.360docs.net/doc/d311295020.html,之间,另一种是https://www.360docs.net/doc/d311295020.html, https://www.360docs.net/doc/d311295020.html,之间

方式一:在一,二级域名下调用如下代码:

DBsession.php

* `session_id` varchar(255) binary NOT NULL default '',

* `session_expires` int(10) unsigned NOT NULL default '0', * `session_data` text,

* PRIMARY KEY (`session_id`)

* ) ENGINE=MyISAM;

*/

class Session

{

//mysql的主机地址

const db_host = "localhost"; //需要第三方指定ip地址

//数据库用户名

const db_user = "root"; //需要第三方指定自己的用户名

//数据库密码

const db_pwd = ""; //需要第三方指定自己的库据库密码

//数据库

const db_name = "thinkphp"; //需要第三方指定数据库

//数据库表

const db_table = "tbl_session"; //需要第三方指定数据表

//mysql-handle

private $db_handle;

//session-lifetime

private $lifeTime;

function open($savePath, $sessName)

{

// get session-lifetime

$this--->lifeTime = get_cfg_var("session.gc_maxlifetime");

// open database-connection

$db_handle = @mysql_connect(self::db_host, self::db_user, self::db_pwd);

$dbSel = @mysql_select_db(self::db_name, $db_handle);

// return success

if(!$db_handle || !$dbSel)

return false;

$this->db_handle = $db_handle;

return true;

}

function close()

{

$this->gc(ini_get('session.gc_maxlifetime'));

// close database-connection

return @mysql_close($this->db_handle);

}

function read($sessID)

{

// fetch session-data

$res = @mysql_query("SELECT session_data AS d FROM ".self::db_table."

WHERE session_id = '$sessID'

AND session_expires > ".time(), $this->db_handle);

// return data or an empty string at failure

if($row = @mysql_fetch_assoc($res))

return $row['d'];

return "";

}

function write($sessID, $sessData)

{

// new session-expire-time

$newExp = time() + $this->lifeTime;

// is a session with this id in the database?

$res = @mysql_query("SELECT * FROM ".self::db_table."

WHERE session_id = '$sessID'", $this->db_handle);

// if yes,

if(@mysql_num_rows($res))

{

// ...update session-data

@mysql_query("UPDATE ".self::db_table."

SET session_expires = '$newExp',

session_data = '$sessData'

WHERE session_id = '$sessID'", $this->db_handle);

// if something happened, return true

if(@mysql_affected_rows($this->db_handle))

return true;

}

else // if no session-data was found,

{

// create a new row

@mysql_query("INSERT INTO ".self::db_table." (

session_id,

session_expires,

session_data)

VALUES(

'$sessID',

'$newExp',

'$sessData')", $this->db_handle);

// if row was created, return true

if(@mysql_affected_rows($this->db_handle))

return true;

}

// an unknown error occured

return false;

}

function destroy($sessID)

{

// delete session-data

@mysql_query("DELETE FROM ".self::db_table." WHERE session_id = '$sessID'", $this->db_handle);

// if session was deleted, return true,

if(@mysql_affected_rows($this->db_handle))

return true;

// ...else return false

return false;

}

function gc($sessMaxLifeTime)

{

// delete old sessions

@mysql_query("DELETE FROM ".self::db_table." WHERE session_expires < ".time(), $this->db_handle);

// return affected rows

return @mysql_affected_rows($this->db_handle);

}

}

/**

* 指定session有效的域名

* ini_set("session.cookie_domain", "https://www.360docs.net/doc/d311295020.html,");

* https://www.360docs.net/doc/d311295020.html,是站点的主域名,请注意前面个有一个'.'

*/

define("MAIN_DOMAIN", "https://www.360docs.net/doc/d311295020.html,"); //设置主域名/**

* 不同子域名下共享session信息

* COOKIE_DOMAIN = false 禁止该功能

* COOKIE_DOMAIN = true 启用该功能

* 默认禁止

* 开启前提需要定义MAIN_DOMAIN常量

*/

define("COOKIE_DOMAIN", true);

if (defined("COOKIE_DOMAIN") && COOKIE_DOMAIN) {

if (defined("MAIN_DOMAIN"))

@ini_set("session.cookie_domain", MAIN_DOMAIN); }

/**

* 同一个主域名,不同服务器之间共享session信息

* USER_SESSION = false 禁用该功能

* USER_SESSION = true 启用该功能

* 默认禁止

* 开启前提需要建立mysql数据表

*/

ini_set('https://www.360docs.net/doc/d311295020.html,', 'phpsessid');//设置色session id的名字define("USER_SESSION", true);

if (defined("USER_SESSION") && USER_SESSION)

{

@ini_set("session.save_handler", "user");

$session = new Session;

@session_module_name("user");

@session_set_save_handler(

array(&$session, "open"),

array(&$session, "close"),

array(&$session, "read"),

array(&$session, "write"),

array(&$session, "destroy"),

array(&$session, "gc"));

}

//@ini_set("session.save_path", dirname(__file__)."/tmp"); //@session_id("demo");

//ini_set("session.save_path",dirname(__file__)."/tmp"); session_start();

include("DBsession.php");

$_SESSION['usssser_oke'] = 'xxssssss';

$_SESSION['user_oke'] = 'xxsss';

?>

方式二:

ini_set('https://www.360docs.net/doc/d311295020.html,', 'sid');//设置色session id的名字

ini_set('https://www.360docs.net/doc/d311295020.html,e_trans_sid', 0);//不使用GET/POST 变量方式

ini_set('https://www.360docs.net/doc/d311295020.html,e_cookies', 1);//使用COOKIE 保存SESSION ID 的方式

ini_set('session.cookie_path', '/');

ini_set('session.cookie_domain', 'https://www.360docs.net/doc/d311295020.html,');//多主机共享保存SESSION ID 的COOKIE,注意此处域名为一级域名

session_start();

$_SESSION['usssser_oke'] = 'xxssssss';

$_SESSION['user_oke'] = 'xxsss';

?-->

方式三:

一级域名:

session_start();

setcookie("session_id",session_id(),time()+3600*24*365*10,"/","https://www.360docs.net/doc/d311295020.html,"); $_SESSION['user_name'] = '梁山良民';

二级域名:

session_id($_COOKIE['session_id']);

session_start();

$_SESSION['user_sssme'] = 222222;

方式四:

一级域名:

ini_set("session.cookie_domain",'https://www.360docs.net/doc/d311295020.html,');//注:该参数必须在sesson_start()之上,否则将不会生效

session_start();

$_SESSION['user_name'] = '梁山www良民';

二级域名:

ini_set("session.cookie_domain",'https://www.360docs.net/doc/d311295020.html,');//注:该参数必须在sesson_start()之上,否则将不会生效

session_start();

$_SESSION['user_nassse'] = '梁山www良民';

方式五:采用的p3p技术,实现原理,在访问网站https://www.360docs.net/doc/d311295020.html,的时候,https://www.360docs.net/doc/d311295020.html,程序触发https://www.360docs.net/doc/d311295020.html,文件的写入sessionid值,sessionid值便可以获取,然后把seesion值存入数据库,取相同的sessionid 值便可。这就要求https://www.360docs.net/doc/d311295020.html,里面的程序文件必需能跨域访问,默认情况下,浏览器是不能跨域设置cookie 的,加上p3p头后才行。在对应php文件加上:

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');

网上博文:

127.0.0.1 https://www.360docs.net/doc/d311295020.html,

127.0.0.1 https://www.360docs.net/doc/d311295020.html,

首先:创建a_setcookie.php 文件,内容如下:

然后:创建a_getcookie.php 文件,内容如下:

最后:创建b_setcookie.php 文件,内容如下:

----------------------------

三个文件创建完毕后,我们通过浏览器依次访问:

https://www.360docs.net/doc/d311295020.html,/b_setcookie.php

https://www.360docs.net/doc/d311295020.html,/a_getcookie.php

我们会发现,在访问https://www.360docs.net/doc/d311295020.html,域的时候,我们并没有在https://www.360docs.net/doc/d311295020.html,域设置上cookie值。去掉重新访问两文件设置成功

破解极域电子教室

?任务管理器/cmd ?ntsd.exe 以上工具windows电脑里基本上都有。 1. 打开“运行”对话框,输入cmd,按回车进入。 2. 输入tasklist,敲回车。变成了这个样子: 3. 找到一个名为studentmain.exe的进程,记下它的PID.如图: 4. 输入命令:/p PID 将PID改为刚才的值,这里为3144,如以下图:

5. 看到一些白字滚动一番就说明成功了。 6. 关闭所有窗口,完成! 7.可用任务管理器查找PID,单击“查看-选择列”,打上 PID的勾即可。记下PID之后可直接跳至第四步。 第二种 安装有同方易教的联想或清华同方机器的BIOS默认密码有可能是:thtfpc 可以开启USB 功能,某些机器只使用PS/2的外设。 通过注册表查看极域电子教室管理系统卸载/管理密码:WIN+R 输入regedit.exe 回车。 找到:[HKEY_LOCAL_MACHINE\SOFTWARE\TopDomain\极域电子教室V4.1 基教2006豪华版教师机\1.00] 其下“UninstallPasswd”就是明文的卸载密码 极域电子教室新版改为:[HKEY_LOCAL_MACHINE\SOFTWARE\TopDomain\e-learning Class Standard\1.00] 其下UninstallPasswd=Passwd后面的就是明文的密码例如:UninstallPasswd=Passwd123456 则123456就是明文密码. 第三种 一、起因 今天上电脑课,屏幕又被老师广播了,于是便有了下面一番故事。我们学校

实现多个https://www.360docs.net/doc/d311295020.html,跨程序池共享Session [高效]

实现多个https://www.360docs.net/doc/d311295020.html,跨程序池共享Session [高效] 简要介绍,本文主要内容是实现通过https://www.360docs.net/doc/d311295020.html,自己的Sql Server的Session存储机制实现,通过存储过程实现忽略程序标识的区别,达到多程序池间Session数据共享的目的。详细原文: 本文转载人数己经太多,所以不知道原文地址何处,敬请谅解! 大致思路: 采用SqlServer方式存储Session,分析数据库表结构、原理、流程,大致可以得到SqlServer存储Session的方法:表结构: ASPStateTempApplications表存储应用程序Id及名称 ASPStateTempSessions表存储具体的Session值不同的应用程序会在ASPStateTempApplications中注册不同的数据,从而在ASPStateTempSessions中有不同的Session,如果要实现Session共享,可以用欺骗SqlServer的方法:用某种方法使得不同的应用程序访问数据库时用相同的App!为了达到

这个目的,分析[dbo].[TempGetAppID]这个存储过程,代码如下:1 ALTER PROCEDURE [dbo].[TempGetAppID] 2 @appName tAppName, 3 @appId int OUTPUT 4 AS 5 SET @appName = LOWER(@appName) 6 SET @appId = NULL 7 8 SELECT @appId = AppId 9 FROM [Herald.Session].dbo.ASPStateTempApplications 10 WHERE AppName = @appName 11 12 IF @appId IS NULL BEGIN 13 BEGIN TRAN 14 15 SELECT @appId = AppId 16 FROM [Herald.Session].dbo.ASPStateTempApplications WITH (TABLOCKX) 17 WHERE AppName = @appName 18

jQuery中的Ajax几种请求方法

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到). 1. load( url, [data], [callback] ) :载入远程HTML 文件代码并插入至DOM 中。 url (String) : 请求的HTML页的URL地址。 data (Map) : (可选参数) 发送至服务器的key/value 数据。 callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。 这个方法默认使用GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。jQuery 1.2 中,可以指定选择符,来筛选载入的HTML 文档,DOM 中将仅插入筛选出的HTML 代码。语法形如"url #some > selector"。 这个方法可以很方便的动态加载一些HTML文件,例如表单。 示例代码: $(".ajax.load").load("[url]https://www.360docs.net/doc/d311295020.html,/QLeelulu/archive/2008/03/30/1130270.html[/url] .post", function (responseText, textStatus, XMLHttpRequest){ this;//在这里this指向的是当前的DOM对象,即$(".ajax.load")[0] //alert(responseText);//请求返回的内容 //alert(textStatus);//请求状态:success,error //alert(XMLHttpRequest);//XMLHttpRequest对象 }); 这里将显示结果。 注:不知道为什么URL写绝对路径在FF下会出错,知道的麻烦告诉下。下面的get()和post()示例使用的是绝对路径,所以在FF下你将会出错并不会看到返回结果。还有get()和post()示例都是跨域调用的,发现传上来后没办法获取结果,所以把运行按钮去掉了。 2. jQuery.get( url, [data], [callback] ):使用GET方式来进行异步请求 参数: url (String) : 发送请求的URL地址. data (Map) : (可选) 要发送给服务器的数据,以Key/value 的键值对形式表示,会做为QueryString附加到请求URL中。 callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。 这是一个简单的GET 请求功能以取代复杂$.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用$.ajax。示例代码: $.get("./Ajax.aspx", {Action:"get",Name:"lulu"}, function (data, textStatus){ //返回的 data 可以是 xmlDoc, jsonObj, html, text, 等等. this; // 在这里this指向的是Ajax请求的选项配置信息,请参考下图

需要注意的域控制器五种错误操作

需要注意的域控制器五种错误操作 一、不安装DNS 犯这种错误的大多数新手。因为一般在安装活动目录时,如果没有安装DNS,系统会给出相应的警告。只有新手才会直接忽略。也有朋友做过尝试,不装DNS,而用WINS是可以的,但是用户会发现登陆的时候速度相当慢。虽然还是可以用Netbios名访问网上邻居中的计算机,但其实是无法使用域资源的。这是因为在域环境网络中,DNS起到的不仅仅是一个域名解析的作用,更主要的是DNS服务器起到一个资源定位的作用,大家对于DNS的A记录应该有很深的了解,实际上,在A记录之外,还有很多其它的如SRV之类的记录。而这些资源没办法用IP直接访问,也不是WINS服务器能够做到的。所以部署活动目录请一定要安装DNS。 二、随意安装软件 由于域控制器在域构架网络中的作用是举足轻重的,所以一台域控制器的高可能性是必须的,但是太多的管理员朋友忽视了这一点。笔者曾见一个酒店网络的域控制器上装了不下三十个软件,甚至包括一些网络游戏之类的软件,如边锋、传奇等,还有一些MP3播放器,VCD播放器等。这样直接导致的结果就是软件冲突加重,而且即使是软件卸载,也会在注册表中存有大量无用信息,这些信息完全无法用手工方法卸载。于是,借助第三方软件,比如超级兔子、优化大师的,虽然这些软件都有清理注册表和提速的功能,但是域控制器毕竟不是个人PC,重装一次之后,很多网络的计算机名和域名都有可能更改,影响相当大。对于服务器而言,稳定大于一切。 三、操作方法不正确 网络管理员往往都是技术爱好者,所以对于自己机器的设置往往更加“个性化”。比如,有的网管一时兴起,增加一台额外域控制器,然后再增加一个子域,而哪天因为系统问题或者心情不爽,往往也不降级,直接把那些子域域控制器,额外域控制器等统统格式化,然后重装。这样反复操作,往往会导致活动目录出错,直到无法添加为止。笔者曾帮助一个网管修复域控制器,在检查中发现里面莫明其妙的有很多的域控制器,但是网络上却又没有这些域控制器,而且活动目录经常出错。查过日志却发现全是报错信息,都是一些无法复制,找不到相应的域控制器等。最终,笔者用Ntdsutil把这些垃圾信息全部清除才解决问题。不过这种情况是比较轻微的,如果用Ntdsutil清除活动目录还是不正常时,那基本没有什么解决方法,无论多么费时,都只能“重建”。 四、FSMO角色的任意分配 一般来说,FSMO一般是不需要去管理的。正常情况下如果需要对FSMO的角色进行转移的话,那么无非就是两种情况:一是服务器的正常维护;二是原来的FSMO角色所在的域控制器由于硬件或其它的原因导致无法联机。 但是目前很多网管碰到上述两种情况,会采取很极端的作法,就是只要原来的FSMO角色所在的域控制器一旦离线,就一定要把FSMO角色转移到其它的域控制器上,能传送就传送,不能传送就夺取。但是笔者在这儿要建议大家一个字:等!除了PDC仿真器这个角色以外,其它角

极域电子教室跨网段设置方法

典型应用-关于极域软件在多网段搭建的说明 刚入这个论坛,自己积分不够,就发了个2009豪华版极域,以为很多老师会需要,但现在老师反馈论坛上早有了,真不好意思,那就来点经验性的技术吧,现在老师可能只限于一个机房控制,其实多网段广播极域也支持的,这其实是一个非常典型的应用。 1.学校活动,一个机房容纳不下,可能需要在多个不同网段机房同时直播画面用。 2.可能有老师在上网络技术应用选修用到。当时我上网络技术课,学生是多网段实验的,这样教师就不能控制学生机了,这样必须打开多网段广播控制功能 其实只要相关网络设备,打开组播路由功能就可以了,但大家可能没有路由器或者三层交换配置的经验,我现在用每个机房的双网卡服务器来实现跨网段广播。 下面介绍启用并配置路由器的步骤: 1.服务器端配置(双网卡的机器): 1)右键“网上邻居”,调出“网络连接”对话框,设置该机器和子网络IP地址。 注意:默认的网关都不用设置,即为空。 2)点击:开始\ 程序\ 管理工具\ 路由和远程访问,弹出“路由和远程访问”对话框,右键单击“服务器状态”,在弹出的下拉菜单中点击“添加服务器”,使用默认设置,直接点击“确定”。此时在服务器状态下新增了一个服务器。 3)右键单击新添加的服务器,在弹出的下拉菜单中点击“配置并启用路由和远程访问”,弹出“路由和远程访问服务器安装向导”,点击“下一步”进入“设置”对话框,选择“自定义配置”,点下一步,选择“LAN路由”,点击“下一步”——>“完成”。 4)在“IP路由选择”,下的“常规”上右击,选择“新增路由协议”,在出现的对话框中,选择“IGMP路由器以及代理服务器”和“用于Internet协议的RIP版本2” 确定。 5)单击“IGMP”,在右测窗口中,右键单击选择“新增接口”,进行添加接口。添加的接口为:大网和子网段接口。 注意:此时,对于大网段的网络连接,在所有的2003服务器中,只需要设置一个2003服务器为“IGMP路由器”,其余的2003服务器均设置为:“IGMP代理”。切记!!对于各2003服务器的子网接口的添加,均设置为“IGMP路由器”; 6)单击“RIP”,在右测窗口中,右键单击选择“新增接口”,进行添加接口,各步骤采用默认设置。添加的接口为:大网和子网段接口。 2. 子网段机器的配置: 右键“网上邻居”,调出“网络连接”对话框 1)在“IP地址”栏,输入该机器的网端地址。例如:A机器连接的服务器的地址为192.168.20.1,可以设置A的地址为192.168.20.2; 2)在子网掩码内输入掩码; 3)在“默认网关”中输入该机器连入的服务器的地址。例如:A机器连接的服务器的地址为192.168.20.1,可以设置A的地址为192.168.20.1。 4)各子网内机器设置可参照步骤1至3即可。

php本地配置服务器集群,实现session共享

当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。 Web负载均衡 Web负载均衡(Load Balancing),简单地说就是给我们的服务器集群分配“工作任务”,而采用恰当的分配方式,对于保护处于后端的Web服务器来说,非常重要。 负载均衡的策略有很多,我们从简单的讲起哈。 1. HTTP重定向 当用户发来请求的时候,Web服务器通过修改HTTP响应头中的Location标记来返回一个新的url,然后浏览器再继续请求这个新url,实际上就是页面重定向。通过重定向,来达到“负载均衡”的目标。例如,我们在下载PHP源码包的时候,点击下载链接时,为了解决不同国家和地域下载速度的问题,它会返回一个离我们近的下载地址。重定向的HTTP返回码是302,如下图: 如果使用PHP代码来实现这个功能,方式如下:

这个重定向非常容易实现,并且可以自定义各种策略。但是,它在大规模访问量下,性能不佳。而且,给用户的体验也不好,实际请求发生重定向,增加了网络延时。 2. 反向代理负载均衡 反向代理服务的核心工作主要是转发HTTP请求,扮演了浏览器端和后台Web服务器中转的角色。因为它工作在HTTP层(应用层),也就是网络七层结构中的第七层,因此也被称为“七层负载均衡”。可以做反向代理的软件很多,比较常见的一种是Nginx。 Nginx是一种非常灵活的反向代理软件,可以自由定制化转发策略,分配服务器流量的权重等。反向代理中,常见的一个问题,就是Web服务器存储的session数据,因为一般负载均衡的策略都是随机分配请求的。同一个登录用户的请求,无法保证一定分配到相同的Web机器上,会导致无法找到session的问题。 解决方案主要有两种: 1. 配置反向代理的转发规则,让同一个用户的请求一定落到同一台机器上(通过分析cookie),复杂的转发规则将会消耗更多的CPU,也增加了代理服务器的负担。 2. 将session这类的信息,专门用某个独立服务来存储,例如redis/memchache,这个方案是比较推荐的。 反向代理服务,也是可以开启缓存的,如果开启了,会增加反向代理的负担,需要谨慎使用。这种负载均衡策略实现和部署非常简单,而且性能表现也比较好。但是,它有“单点故障”的问题,如果挂了,会带来很多的麻烦。而且,到了后期Web 服务器继续增加,它本身可能成为系统的瓶颈。 3. IP负载均衡

极域电子教室教师端使用说明

极域电子教室教师端使用说明 一、教师机登陆 运行桌面教师机程序后会出现登录对话框,它要求您输入登录密码与频道号,默认登录密码为空,默认频道号为教师机在系统设置中的频道号或上次登录的频道号,单击"确定"按钮,就可以进入教师机的操作平台。各机房登陆频道如下: 机房登陆频道 3301 1 3302 2 3304 4 3306 6 3308 8 3310 10 教师机操作平台主界面: 二、广播教学

广播教学功能可以将教师机屏幕传送至学生机。在班级模型显示区中选择学生,单击 图形按钮区的按钮,可开始广播教学。如广播教学中学生机接收出现异常(如屏幕显示出现缺失),可按组合键Shift + F5来刷新学生机屏幕显示的内容。 1、学生发言 广播教学过程中,在班级模型显示区选中一个已登录的学生机图标,单击右键弹出菜单。在此右键弹出菜单上单击"开始发言"可以让被选中的学生进行发言,此时所有接收者在接收到教师广播教学的同时接收该学生发言。 如需动态切换发言学生,对其他已登录学生进行上述操作,先前发言学生自动停止发言。如需停止学生发言,可在弹出菜单中选择"停止发言"即可。 2、广播的开始接受与停止接受

广播教学过程中,可以随意控制任意学生机停止或开始接收广播。在正在接收广播的学生机上单击右键,如图所示。在弹出菜单上选择"停止接收广播",可以让学生停止接收广播。 在班级模型区选中被停止接收广播的学生机,单击右键,弹出下图菜单。在此弹出菜单上选择"开始接收广播",该学生机重新开始接收广播。 三、弹出式工具条 启动教师机程序后,教师机主接口被最小化时,将鼠标移动到屏幕顶部右半边(黑线处)时,会出现弹出式工具条,如下图。 单击"窗口"按钮可重新显示教师机主接口。(教师机主接口出现后,此工具条将不会弹出。)

网络管理员需注意的域控制器五种错误操作

管好域控制器对于一个网络管理员来说,是专业性的技术体现。笔者通过多年经验,以及论坛上朋友们的种种方案,总结了域控制器的常见五种错误操作,希望能够与广大技术爱好者共享。 一、不安装DNS 犯这种错误的大多数新手。因为一般在安装活动目录时,如果没有安装DNS,系统会给出相应的警告。只有新手才会直接忽略。也有朋友做过尝试,不装DNS,而用WINS是可以的,但是用户会发现登陆的时候速度相当慢。虽然还是可以用Netbios名访问网上邻居中的计算机,但其实是无法使用域资源的。这是因为在域环境网络中,DNS起到的不仅仅是一个域名解析的作用,更主要的是DNS服务器起到一个资源定位的作用,大家对于DNS的A记录应该有很深的了解,实际上,在A记录之外,还有很多其它的如SRV之类的记录。而这些资源没办法用IP直接访问,也不是WINS服务器能够做到的。所以部署活动目录请一定要安装DNS。 二、随意安装软件 由于域控制器在域构架网络中的作用是举足轻重的,所以一台域控制器的高可能性是必须的,但是太多的管理员朋友忽视了这一点。笔者曾见一个酒店网络的域控制器上装了不下三十个软件,甚至包括一些网络游戏之类的软件,如边锋、传奇等,还有一些MP3播放器,VCD播放器等。这样直接导致的结果就是软件冲突加重,而且即使是软件卸载,也会在注册表中存有大量无用信息,这些信息完全无法用手工方法卸载。于是,借助第三方软件,比如超级兔子、优化大师的,虽然这些软件都有清理注册表和提速的功能,但是域控制器毕竟不是个人PC,重装一次之后,很多网络的计算机名和域名都有可能更改,影响相当大。所以,笔者认为“预防永远大于急救”。笔者的域控制器上除了活动目录和DNS,只安装了一个SUS服务器,运行已经有一年半了,没有发生过任何软件问题。毕竟,对于服务器而言,稳定大于一切。 三、操作方法不正确 网络管理员往往都是技术爱好者,所以对于自己机器的设置往往更加“个性化”。比如,有的网管一时兴起,增加一台额外域控制器,然后再增加一个子域,而哪天因为系统问题或者心情不爽,往往也不降级,直接把那些子域域控制器,额外域控制器等统统格式化,然后重装。这样反复操作,往往会导致活动目录出错,直到无法添加为止。笔者曾帮助一个网管修复域控制器,在检查中发现里面莫明其妙的有很多的域控制器,但是网络上却又没有这些域控制器,而且活动目录经常出错。查过日志却发现全是报错信息,都是一些无法复制,找不到相应的域控制器等。最终,笔者用Ntdsutil把这些垃圾信息全部清除才解决问题。不过这种情况是比较轻微的,如果用Ntdsutil清除活动目录还是不正常时,那基本没有什么解决方法,无论多么费时,都只能“重建”。 四、FSMO角色的任意分配 一般来说,FSMO一般是不需要去管理的。正常情况下如果需要对FSMO的角色进行转移的话,那么无非就是两种情况:一是服务器的正常维护;二是原来的FSMO角色所在的域控制器由于硬件或其它的原因导致无法联机。

极域2010使用教程

极域电子教室软件快速上手指南 本文档适用于本软件的初学者。阅读该文档,将有助于他们快速掌握本软件的基本使用方法和操作步骤,他包括如下三个部分: 1.检查和配置网络连接。 2.教师机的使用。 3.学生机的使用。 有关本软件的更详细的介绍,请参考用户手册或在线帮助。

1.检查和配置网络连接 本软件需要 TCP/IP 协议的支持。如果网络中有 Windows 服务器,并且服务器上安装有 DHCP 服务,此时教师机和学生机网卡所绑定的 TCP/IP 协议的设置上可以设为自动获取 IP 地址。如果网络中没有服务器或服务器上没有安装 DHCP 服务,此时网络中所有计算机的网卡所绑定的 TCP/IP 协议的设置上必须指定一个固定的 IP 地址。 1.1.检查教师机和学生的 IP 地址 1.打开 Windows 的“开始”菜单,选择“运行”。在“运行”对话框中,输入“cmd”命 令后,按“确定”按钮。如下图所示: 图 - “运行”对话框 2.在 Windows的“命令提示符”窗口中,输入“ipconfig”命令后,按回车键。如下图 所示: 图 - “命令提示符”窗口 3.“命令提示符”窗口中显示的教师机和学生的 “IP Address”应该为在同一网段,一 般为“192.168.0.xxx”。教师机和学生的“IP Address”的前三段应该相同。最后一

段应该不同。“Subnet Mask”一般都为“255.255.255.0”。 1.2.手工指定教师和学生 IP 地址 如果教师和学生没有正确的 IP 地址,可以参考下面的步骤,手工指定一个IP地址: 1.打开Windows 的“控制面板”,双击选择“网络连接”。出现如下对话框: 图 - “网络链接”对话框 2.在“网络连接”中,右键单击“本地连接”图标,在弹出菜单中,选择“属性”。如下 图所示: 图 - “本地连接”右键菜单 3.在弹出的“本地连接属性”对话框中,双击“Internet 协议(TCP/IP)”。如下图所示:

解决js跨域问题

JSONP(JSON With Padding),就是打包在函数调用中的的JSON(或者包裹的JSON)。AJAX和JSONP在jQuery中的调用方式看起来极为相像,千万不要被这种现象迷惑,它们本质上有很大不同。AJAX是通过XMLHttpRequest对象获取非页面内容,而JSONP是动态的添加