' x0 m; ?' _5 V9 {. _5 M' L 函数名: access ) H' A% D1 e3 w2 F4 a * o* r, q: M& r5 L. u 功 能: 确定文件的访问权限 # H# U% c0 _" f( ?" g% V" N+ L $ Z2 w2 I- p( ~. Z* j 用 法: int access(const char *filename, int amode); 5 x4 ^) ^# e/ ^9 {
[编辑本段]1 S/ H' ?5 Y2 X8 f! w$ q* C' T* p
access Synopsis, w) t* n! J' H! g, k; u- @
# |& Y) s& ]4 G4 v% l# H #include <io.h>3 ~' P- R% _4 I" {* y
5 e1 U0 w, Z1 O/ [5 q int _access(const char *path,int mode) ; " R _0 W1 t$ b& t5 y# g* `& J4 Q- O# j4 Q9 e9 R Description ! d9 @( d2 E. m k+ K9 g# o+ h( K; D4 F! [) S
The access function, when used with files, determines whether the specified file exists and can be accessed as specified by the value of mode. When used with directories, _access determines only whether the specified directory exists; since under Windows all directories have read and write access. 6 c, D) S" F% m( G3 q r 3 o5 o, L9 T4 S( g6 \ The mode argument can be one of : - n2 q: R5 ?! `( v i# a) n0 b3 g1 [2 \6 h- ?, }; a! W6 t/ P6 [% e: X
00 Existence only & T6 |. V& q! M$ G/ o+ c5 ]8 } ( Z8 `; S) v4 m I6 R4 R 02 Write permission4 p8 _9 K: V- k$ ?3 _1 k
7 f4 e8 w5 W6 l+ ^0 |7 w. P ]: @+ D 04 Read permission; p. }' }$ y% w2 e' k
9 b' s# J3 h# s9 \- b; Z9 D
06 Read and write permission ; w& V H& h: c/ C v/ P5 V# M - L# Y6 }; m2 ~! Q4 L z8 F% IReturns ! w9 I! n. N$ X4 v, {" l$ i" f 6 g) x% B( F- w7 J; Y Zero if the file has the given mode, -1 if an error occurs. # W/ c* H/ G& [ / @; t# S5 \% i3 M: NPortability : 2 Z: Q& B j) }( T+ n# m$ d - s, H9 w8 B0 {4 z; G6 { O Windows. Under Unix a similar function exists too.( X5 c3 q/ K" Z0 c" ~
! a2 c0 ~' D1 J3 J& Q5 u0 R Note that lcc-win32 accepts both _access (Microsoft convention) and access. ! G2 x; S W0 i- r3 C$ U/ O; N4 {" X {' {
程序例: 3 a. V: `4 r5 z" ?3 N
2 r! C' H. [& H. P% g' {! a$ P #include <stdio.h> 1 r' P: ^7 |( U s( r3 x
u2 N9 k2 K& a) p #include <io.h> k# y0 L. v- L L2 z' P
! A8 g3 Z8 Y8 t0 G- i! ], h: n$ }5 R
int file_exists(char *filename); ) j2 F' r$ e/ s# L& I! @9 a$ y
' d9 Y2 ]! d: _2 e
int main(void) - K5 C, h) f, R 7 t6 }3 e+ ?) X v/ a7 [ c2 H { % Y9 [3 w4 T& k 7 V% b" U) G& [ printf("Does NOTEXIST.FIL exist: %s\n", 0 G. h" L" z1 {) T' C: f* Q; U) P3 S: W; i
file_exists("NOTEXISTS.FIL") ? "YES" : "NO"); / c! E, r+ B; M- N k4 O
% B( z- T+ q M7 U Y$ `
return 0; 9 h- I& a% c8 a Y2 ]
# ?1 g- E d/ @1 t6 v% J) f b8 h
} $ A* [+ r$ f, c2 G. r/ J/ @3 ]7 E' c
int file_exists(char *filename) & h6 r6 v" H) e i; {9 Q. T ~8 X1 U9 f8 M! g1 G3 b; l
{ ' k1 i8 w5 C4 z 2 A! j$ M. \+ C& f return (access(filename, 0) == 0); . y8 \8 G/ `0 z 6 ~# r0 }7 `' i) \ }1 R% @# g+ |( y8 w# C
/ e5 F, O9 d( v, u Access数据库安全方式% R9 @' F7 a& O3 g7 _* F" l
; X+ S$ w4 q) v) @% k
5 b2 Q( l/ T2 }5 s" d1 Z
一、密码式 3 a( a& {3 \4 l
) X+ ^# K) A0 u+ m
给数据库起一个随机复杂的名称,避免被猜到被下载,这种方式在以前很流行,因为大家都对自己的代码很有自信。但随着错误提示对数据库地址的泄露导致数据库被非法下载,这种方式也就越来越少人用了。 / D, A% G2 Z3 p6 K& | T/ v2 G* U; C% G, t1 `% M" R
二、"#"式 / S+ q e% }+ }! N % i& S. W0 x+ _1 Y0 L4 W1 ^! G6 k 在数据库名称里加上#号,从URL上请求时#是请求地址和请求参数的一个分隔字符,如果知道了数据库名,直接请求的话,如:http://www.xx.com/access#.mdb,WEB服务器会认为请求的是access而不是access#.mdb,所以会提示找不到文件,但是很遗憾,URL中对于这些特殊的字符都会有一个特殊的表示方式,#的特殊表示就是%23,如http://www.xx.com/access%23.mdb,那么access#.mdb将会被下载。还有如果用FlashGet之类的下载工具也可以直接下载。 : @8 v2 `& [5 a+ ?* Z+ t" k
. A% D: |: x- o5 @ 三、ASP式 / J( u0 Y5 z3 J* I3 |+ |: Z4 ^
3 y# X: D6 L4 A0 f% C5 |
这种作法是比较专业但也是很安全的也是现在比较流行的作法,但是现在许多的人只是作了一半,只是将数据名改成ASP而以,这样的话直接用FlashGet之类的下载工具一样可以将数据库下载,这种方式的正确作法有两步: 5 [9 }5 [' \# V$ _, e. E2 f4 R 3 f: D% f" O. b' ? 第一步:在数据库内创建一个字段,名称随意,类型是OLE对象,内容设置为单字节型的" 5 }% f7 E$ W- u% J) N! W
, x# @ g3 O8 U; O; B
这段代码运行完之后将会在数据库内生成一个nodownload表,表内字段是notdown。如果数据库内已有同名的数据表存在请将代码内的nodownload改成自己想要的数据表名即可。 3 ^( c! X1 L* }
( R4 x7 \8 o1 V& l
四、asa式 / L) Y: ? s9 e3 j0 z, s2 R7 g ' e; l3 ]# Z" F3 z; Q$ j2 d& x 这种方式的真谛是利用IIS对ASA文件的保护,从而使得数据库文件不能从URL上直接请求下载,但是这种方式被误解成只要将文件后缀改成ASA就可以了。要知道IIS只是对global.asa这个文件名有请求保护,所以这种方式只能将数据库名设置为global.asa,而且要注意的是,设置成global.asa之后最好不要将其放在主机或虚拟目录的根目录里,不然会被IIS当然正常的global.asa文件进行尝试运行的。 + U2 ?0 h @' x& j, d4 }[编辑本段] ) z) _0 l% S6 fOpen Access的信息交流新模式 Open Access(简称OA)是在网络环境下发展起来的学术界传播信息及出版学术信息的一种新模式。它的兴起为信息的交流和利用方式产生重大影响,已经受到国际学术界、出版界、图书馆学界等的广泛关注。! E$ O3 r( t+ ?: p3 s
- N: W: s7 F# m; h/ p6 j6 Y Open Access通常被译作开放存取、开放获取,本文采用“开放存取”这一译法,主要是基于两个方面的考虑。一是“存取”相对于“获取”而言,不仅包括用户的“获取”,还包括作者的“存放”,所以用“存取”更能全面地覆盖OA的内涵;二是在图书馆学及情报科学领域,access一词译成“存取”已约定成俗。 1 e$ v @0 } y6 Y 6 T' }) z# I; l" o# e1 T+ C0 J 目前被广泛接受的关于OA的定义源于布达佩斯开放存取倡议(Budapest Open Access Initiative,BOAI),即:OA意味着用户通过公共互联网可以免费阅读、下载、复制、传播、打印和检索论文的全文,或者对论文的全文进行链接、为论文建立索引、将论文作为素材编入软件,或者对论文进行任何其他出于合法目的的使用,而不受经济、法律和技术方面的任何限制,除非网络本身造成数据获取的障碍。对复制和传播的唯一约束,以及版权在此所起的唯一作用是,应该保证作者拥有保护其作品完整性的权利,并要求他人在使用作者的作品时以适当的方式表示致谢并注明引用出处。 / M4 ]- p7 Y$ q. B; d/ H& J8 r! F: P6 I+ R; X# q
推动开放存取运动的重要力量/ j! W: K- ^8 `& a
开放存取符合作者同时也是读者的非赢利的信息传播动机和利用需求。在最近几年蓬勃兴起,主要的推动力量有:①政府部门和科研资助机构。一方面通过政策推动开放存取运动。近年来欧美一些国家政府和科研资助机构积极倡导由公共投资支持的科研成果应该为全社会所免费利用和共享,并通过制订政策来加以保障。如世界上最大的医学研究资助单位美国国立卫生院(National Institutes of Health,NIH) 的公共存取政策。另一方面提供资金支持。随着开放存取运动的发展,越来越多的政府部门、科研资助机构、基金会愿意为科研成果的开放存取提供资金支持。②学术科研人员。科学研究工作者是科研成果的创造者、评议者,同时还是科研成果的消费者。基于当前学术出版被商业出版者垄断,学术科研人员作为科研成果的创造者却不能自由享受科研成果的局面,科学家强烈呼吁要把学术出版的主导权和控制权夺回到科研人员手中。③大学。大学是开放存取运动的重要实践者和支持者。近年来一些知名大学纷纷推出了机构仓储,如加州大学、麻省理工、哈佛和斯坦福大学根据学校开放存取政策的要求,保存教员的研究成果,对公众免费开放并可在网络上获取。④图书馆。图书馆界是开放存取运动的积极参与者,通过成立推动开放运动的联盟、在网站上大力宣传开放资源、建立机构库等方式,致力于推动和创建服务于科学研究的基于网络环境的学术交流体系。⑤因特网。从技术的角度讲,开放存取一个重要的推动力量就是因特网。计算机和网络技术在出版领域中的应用,降低了在线出版和在线传播的总成本,使得开放存取成为有效又可行的学术出版和交流模式。 ( c2 R, I0 d$ ~. L/ A- T# j& t$ {& k2 b2 p, i
开放存取的主要影响$ g; p, ^7 g. d; Q4 p( q7 I
开放存取是一种学术交流方式的变革。开放存取的文献是数字化、在线、免费和几乎没有版权和授权的限制的,因此世界上每个人都有机会接触和共享研究成果,从而加快了学术信息传播速度,促进了科学研究的快速发展,提升了科学研究的公共利用程度。对于读者、作者、研究机构、图书馆和出版单位有不同的影响。0 D8 f% ~6 U/ u# [, V9 B" C- D
. e" I6 P* N- Q( k
①对作者而言,读者群得到拓展,扩大了学术成果传播的范围,增加了学术成果参与交流和被引用的机会,提高了成果的影响力和显示度。②对读者而言,无须面对合理使用的争议或可能侵权的担忧,可以方便快捷地免费获取同行的研究成果,同时也提高了获得资料的时效性。③对于研究机构而言,一方面随着机构学术成果的广泛传播,彰显了机构的科研实力,提高了机构的知名度。另一方面作为学术成果的利用者,减少了费用支出,避免了为出版学术成果和获取学术成果的重复付费。④对于资助机构而言,他们资助的研究工作更加公开,影响更大,科研成果得到了更广泛的传播,使得投资产生了更大的社会效益。⑤对图书馆而言,一定程度上缓解了图书馆的经费紧张,收集和整理网上的开放存取资源,扩充数字馆藏,增强了图书馆的信息保障能力。另外也分流了图书馆用户,弱化了图书馆信息中介的作用。⑥对出版商而言,OA是一种挑战,一方面扩大了期刊论文的使用率和影响力,直接效果是提高了论文的被引频次;另一方面一定程度上影响了发行量和优质稿源,降低了利润和缩小了市场风份额。6 A k: B, Z# j