第一页 上页 15 16 17 18 19 20 21 22 23 24 下页 最后页 [ 显示模式: 摘要 | 列表 ]

大家是否测试Apache做了目录禁止浏览后,目录下面的txt文件还是可以显示里面的内容的。

例如:http://www.domain.com/test/此访问会报403错误,但是如果test下有很多txt,你访问该txt时;
例如:http://www.domain.com/test/a.txt,此时a.txt里的内容会全部暴露在外面了(有时这个txt是很机密的文件),这样以来就不安全了。
同样:我在Nginx配置后后也存在这样的问题,Apache下此问题的解决多谢NetSeek帮助。
#不解析PHP文件,但是提示下载文件
#php_flag engine off 

#APACHE 禁止相关文件类型
#<Files ~ "\.(php|sh|bat|c|.php.*)$">
#Order allow,deny
#Deny from all
#</Files>
 
如下是关于Apache和Nginx 限制该类事情办法:
 
【apache配置禁止访问】
1. 禁止访问某些文件/目录
增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:
<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>
 
禁止访问某些指定的目录:(可以用 <DirectoryMatch>   来进行正则匹配)
 
<Directory ~ "^/var/www/(.+/)*[0-9]{3}">
Order allow,deny
Deny from all
</Directory>
 
通过文件匹配来进行禁止,比如禁止所有针对图片的访问:
<FilesMatch \.(?i:gif|jpe?g|png)$>
Order allow,deny
Deny from all
</FilesMatch>
 
针对URL相对路径的禁止访问:
<Location /dir/>
Order allow,deny
Deny from all
</Location>
 
针对代理方式禁止对某些目标的访问(<ProxyMatch> 可以用来正则匹配),比如拒绝通过代理访问cnn.com:
<Proxy http://cnn.com/*>
Order allow,deny
Deny from all
</Proxy>
 
2. 禁止某些IP访问/只允许某些IP访问
如果要控制禁止某些非法IP访问,在Directory选项控制:
<Directory "/var/www/web/">
Order allow,deny
Allow from all
Deny from 10.0.0.1 #阻止一个IP
Deny from 192.168.0.0/24 #阻止一个IP段
</Directory>
 
只允许某些IP访问,适合比如就允许内部或者合作公司访问:
<Directory "/var/www/web/">
Order deny,allow
Deny from all
All from example.com #允许某个域名
All from 10.0.0.1 #允许一个iP
All from 10.0.0.1 10.0.0.2 #允许多个iP
Allow from 10.1.0.0/255.255.0.0 #允许一个IP段,掩码对
All from 10.0.1 192.168 #允许一个IP段,后面不填写
All from 192.168.0.0/24 #允许一个IP段,网络号
</Directory>
 
 
Apache:解决办法;
<Directory "/home/domain/public_html">
Options -Indexes FollowSymLinks
AllowOverride All
<Files ~ ".txt">
Order allow,deny
Deny from all
</Files>
</Directory>
 
Nginx:解决办法;
location ~* \.(txt|doc)$ {
if (-f $request_filename) {
root /home/domain/public_html/test;
break;
 
}
 
}
 
 
Nginx下请大家注意标点符号的使用,不要漏掉后面的“;”!

 RewriteCond 重写规则执行条件


语法: RewriteCond TestString CondPattern
生效域: server config, virtual host, directory, .htaccess
特别的上面的 TestString, 可提供反向引用. 引用模式为: %N 其中N为(0 <= N <=9), 引用当前若干RewriteCond条件中最后符合的条件中的分组成分, 也就是括号里的内容.不过用到的不多. 反向应用多在RewriteRule里常用.
RewriteCond 语法中的 TestStrng 为要被检查的内容, CondPattern 是进行匹配的规则, 它是一个兼容Perl风格的正则表达式和一些其他的特有字符属性. 这里介绍一下.
第一个: ! (感叹号) 表示否的意思. 比如一个条件: 判断访问此页面的上一页URL是否包含 sex 字符的话可以用这样: RewriteCond %{HTTP_REFERER} !(sex)
第二个: < 就是小于的意思, TestString < CondPattern.
第三个: > 就是大于于的意思, TestString < CondPattern.
第四个: = 相等的意思. <, >, = 三个和通常程序语言使用的 <, >, = 功能类似.
第五个: -d 是否是一个目录. 判断TestString是否不是一个目录可以这样: !-d
第六个: -f 是否是一个文件. 判断TestString是否不是一个文件可以这样: !-f
第七个: -s 是否是一个正常的有大小的文件. 判断TestString是否不是一个正常的有大小的文件可以这样: !-s
第八个: -l 是否是一个快捷方式文件. 判断TestString是否不是一个快捷方式文件可以这样: !-l
第九个: -x 是否是一个文件并且又执行权限. 判断TestString是否不是一个文件并且又执行权限可以这样: !-x
第十个: -F 检查TestString是否是一个合法的文件,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。
第十一个: -U 检查TestString是否是一个合法的URL,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能.
另外: RewriteCond 指令后面可带 Flag, 现在只要2个可用, 一个是 NC|nocase, 不区分大小写的意思. 一个是 OR|ornext 表示连接下一个条件的意思.
RewriteCond 实际需要使用情况比如要判断一个条件成真的时候才执行相关的重写操作. 紧接着它下面的 RewriteRule 总是在RewriteCond 条件判断为真的时候才被执行.
看下面的一个例子:
#开启服务器重写模式
RewriteEngine on
#来自 www.test.cn 的连接访问本站时都只能访问 test.php 这页.
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
#来自 www.test.com 的连接访问本站时都只能访问 newTest.php 这页.
RewriteCond %{HTTP_REFERER} (www.test.com)
RewriteRule (.*)$ newTest.php
OK, RewriteCond 就介绍到这里了. 其实很简单. 就想程序里的 if() 这样的效果.
Apache Rewrite实现URL的跳转和域名跳转
Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。
 
基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。
 
基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明RewriteEngine on。
 
2、举例说明:
 
例一.下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.kiya.cn和70.40.213.183都跳转到主机前缀为http://www.kiya.cn,避免相同内容的网页有多个指向的域名,如http://kiya.cn。
 
NameVirtualHost 70.40.213.183:80
ServerAdmin slj@kiya.cn
DocumentRoot “/web”
ServerName kiya.cn
 
RewriteEngine on #打开rewirte功能
RewriteCond %{HTTP_HOST} !^www.kiya.cn [NC] #声明Client请求的主机中前缀不是www.kiya.cn,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #声明Client请求的主机中前缀不是70.40.213.183,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空
RewriteRule ^(.*) http://www.kiya.cn/ [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://www.kiya.cn/,[L]意味着立即停止重写操作,并不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的 (.*)字符。
 
例二.将输入 en.sicasoft.com 的域名时跳转到www.sicasoft.com
 
RewriteEngine on
RewriteCond %{HTTP_HOST} ^en.sicasoft.com [NC]
RewriteRule ^(.*) http://www.sicasoft.com/ [L]
 
例三.赛卡软件近期更换了域名,新域名为www.sicasoft.com, 更加简短好记。这时需要将原来的域名ss.kiya.cn, 以及论坛所在地址ss.kiya.cn/bbs/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的http://ss.kiya.cn/bbs/tread-60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.sicasoft.com/tread-60.html,而其他网页,如原先的http: //ss.kiya.cn/purchase不会到二级域名bbs.sicasoft.com/purchase上,而是到 www.sicasoft.com/purchase
按照这样的要求重定向规则应该这样写:
 
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/bbs/
RewriteRule ^bbs/(.*) http://bbs.sicasoft.com/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteRule ^(.*) http://www.sicasoft.com/$1 [R=permanent,L]
 
3.Apache mod_rewrite规则重写的标志一览
 
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
 
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
 
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量
 
4.Apache rewrite例子集合
 
URL重定向
 
例子一:
同时达到下面两个要求:
1.用http://www.zzz.com/xxx.php 来访问 http://www.zzz.com/xxx/
2.用http://yyy.zzz.com 来访问 http://www.zzz.com/user.php?username=yyy 的功能
 
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.zzz.com
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ http://www.zzz.com/$1/ [R]
RewriteCond %{HTTP_HOST} !^www.zzz.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+).zzz.com http://www.zzz.com/user.php?username=$1
 
例子二:
 
/type.php?typeid=* –> /type*.html
/type.php?typeid=*&page=* –> /type*page*.html
 
RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]
 
5.使用Apache的URL Rewrite配置多用户虚拟服务器
 
要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.kiya.us和 *.kiya.cn全部解析到了我的IP地址70.40.213.183上。
 
然后,看一下我的Apache中关于*.kiya.us的虚拟主机的设定。
 
ServerAdmin webmaster@kiya.us
DocumentRoot /home/www/www.kiya.us
ServerName dns.kiya.us
ServerAlias dns.kiya.us kiya.us *.kiya.us
CustomLog /var/log/httpd/osa/access_log.log” common
ErrorLog /var/log/httpd/osa/error_log.log”
AllowOverride None
Order deny,allow
 
#AddDefaultCharset GB2312
 
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/www.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]
 
在这段设定中,我把*.kiya.cn和*.kiya.us 的Document Root都设定到了 /home/www/www.kiya.us
 
继续看下去,在这里我就配置了URL Rewrite规则。
 
RewriteEngine on #打开URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$ #匹配条件,如果用户输入的URL中主机名是类似 xxxx.kiya.us 或者 xxxx.kiya.cn 就执行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用户输入完整的地址(GET方式的参数除外)作为参数传给下一个规则,[C]是Chain串联下一个规则的意思
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/dev.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]
# 最关键的是这一句,使用证则表达式解析用户输入的URL地址,把主机名中的用户名信息作为名为un的参数传给/home/www/dev.kiya.us 目录下的脚本,并在后面跟上用户输入的GET方式的传入参数。并指明这是最后一条规则([L]规则)。注意,在这一句中指明的重写后的地址用的是服务器上的绝对路径,这是内部跳转。如果使用http://xxxx这样的URL格式,则被称为外部跳转。使用外部跳转的话,浏览着的浏览器中的URL地址会改变成新的地址,而使用内部跳转则浏览器中的地址不发生改变,看上去更像实际的二级域名虚拟服务器。
 
设置后重启Apache服务器就大功告成了!
Update May 1, 2009
 
今天上网看到了有人提一个问题:
 
求Rewrite 防盗链正则
不允许www.im286.com www.chinaz.com 这两个网站盗链 , 其它的网站都可以盗链的规则怎么写.
 
论坛中的答案是:
 
RewriteEngine On
RewriteCond %{HTTP_REFERER} chinaz.com [NC]
RewriteCond %{HTTP_REFERER} im286.com [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|rar|zip|txt|ace|torrent|gz|swf)$ http://www.xxx.com/fuck.png [R,NC,L]
 
Update May 7, 2009
 
介绍一篇文章:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html
 
Update May 24, 2009
 
一、关于是否需要使用完全转义,比如在 RewriteCond %{HTTP_REFERER} chinaz.com [NC] 中 把 chinaz.com 改成 chinaz\.com
答案是,两者都是可以的。
 
二、今天在做 YOURcaddy.com (就是我去年做的PlanetCoachella的变形)的时候,在 GoDaddy 主机上无法正常转向,后来找到了问题:
在HostMonster以及我自己的机器上,是用
RewriteRule ^business/([^\.]+)$ biz/detail.php?name=$1 [L]
达到改写的。而在Godaddy主机上,是这样:
RewriteRule ^business/([^\.]+)$ /biz/detail.php?name=$1 [L]
目标文件前多了一个/
现在想想,可能是因为没有指定RewriteBase,至于到底是不是我改日再验证一下。
 
三、添加两个关于判断 USER AGENT 例子和自动添加.php扩展名及自动换.html到.php扩展名的例子:
1
 
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* – [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。 
 
2
 
RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)\.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php
 
限制目录只能显示图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ – [F,L]
< /IfModule> 
 
Update Jun 10, 2009
 
补充,关于特定文件扩展名的重写。
 
重写有某些扩展名的文件:
RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]
如果要排除一些扩展名:
RewriteRule !\.(js|ico|gif|jpg|JPG|png|PNG|css|pdf|swf)$ index.php
ServerSignature Off
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
</Directory>
<Directory /var/www/example_com/XXX/htdocs>
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
RewriteEngine On
RewriteCond %{SERVER_NAME} !XXX.example.com
RewriteRule ^(.*)$ http://XXX.example.com$1 [R,L]
</VirtualHost>

查看电脑显卡相关信息

[不指定 2013/06/14 13:44 | by 刘新修 ]

电脑确认电脑显卡型号,可以使用下面方法:
一、在已经安装好显卡驱动的情况下:
1.请鼠标右键点击"我的电脑"——点击属性——点击硬件,
可以打开设备管理器,在设备管理器中找到显卡设备,
会看到显卡已经显示出具体型号。
2.如果显卡设备没有显示出显卡具体型号,而是显示为
"视频控制器"或"显示卡",那么可以鼠标右键点击这个设备,
选择属性,在"常规"看到显卡型号。

二、在没有安装显卡驱动的情况下:
可以通过查询显卡设备的硬件ID的方法来进行查看,
具体方法:在设备管理器中,鼠标右键点击
显卡设备——选择属性——详细信息,
看一下"设备范例ID"下面的信息:
1.如果显示的是PCI\VEN_8086......,说明使用的是INTEL显卡。
2.如果显示的是PCI\VEN_1002......,说明使用的是ATI显卡。
3.如果显示的是PCI\VEN_10DE......,说明使用的是NVIDIA显卡。

常用代码CSS Case Modules

[不指定 2013/06/13 23:57 | by 刘新修 ]

 

XML/HTML代码
  1. /*Top-sidebar-bg*/  
  2. <div style="height: 30px; width: 100%; text-align: center; position: relative; line-height: 30px; background-color:#FFF9E1;" class="xiatui">幸福摩天轮,激情过山车!点击下载游乐主题精美壁纸,重拾童年美好记忆,尽享欢乐游戏时光!<a style="color:#fff;padding:5px 10px;background-color:#aca794;margin-left:5px;" target="_blank" href="#">过山车与摩天轮桌面主题</a><a style="padding-left:30px;" target="_target" href="#">查看更多</a><span style="position:absolute;left:50%;margin-left:490px;cursor:pointer;color:#cfcfcf;font-weight:bold;" id="UP">X</span></div>  
  3. <div style="background-color: #0072BC;height: 40px;margin: 0 auto;width: 100%;"></div>  
  4.   
  5. /*背景AD: Left-Right*/  
  6. <div style="background:url(http://stimgcn3.s-msn.com/msnportal/hp/2013/06/09/5381700f-5943-49a4-b751-9239db2b1dcb.jpg) no-repeat 0px 0px;height:450px;left: 50%;margin-left: -700px;position: fixed;top: 70px;width: 200px;" class="left_Bg"></div>  
  7. <div style="background:url(http://stimgcn3.s-msn.com/msnportal/hp/2013/06/09/5381700f-5943-49a4-b751-9239db2b1dcb.jpg) no-repeat right top;height:450px;right: 50%;margin-right: -700px;position: fixed;top: 70px;width: 200px;" class="right_Bg"></div>  
  8.   
  9. /*video Baidu Change the width of sidebar and main margin-left */  
  10. <div id="wrapper" style="height: 100%;position: relative;">  
  11. <div id="sidebar" style="background: url("/browse_static/play_iframe/layout/bg_side_bbfcfbf7.gif") repeat-y scroll 100% 0 #323232;  
  12. height: 100%;left: 0;position: absolute;top: 0;width: 136px;"></div>  
  13. <div id="main" style="height: 100%;margin-left: 136px;"></div>  
  14. </div>  

 

jquery.cookie 使用方法

[不指定 2013/05/19 00:36 | by 刘新修 ]
一个轻量级的cookie 插件,可以读取、写入、删除 cookie。
jquery.cookie.js 的配置
首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文
JavaScript代码
  1. <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>  
  2. <script type="text/javascript" src="js/jquery.cookie.js"></script>  
使用方法
1.新添加一个会话 cookie:
$.cookie('the_cookie', 'the_value');
注:当没有指明 cookie有效时间时,所创建的cookie有效期默认到用户关闭浏览器为止,所以被称为
“会话cookie(session cookie)”。
2.创建一个cookie并设置有效时间为 7天:
$.cookie('the_cookie', 'the_value', { expires: 7 });
注:当指明了cookie有效时间时,所创建的cookie被称为“持久 cookie (persistent cookie)”。
3.创建一个cookie并设置 cookie的有效路径:
$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
注:在默认情况下,只有设置 cookie的网页才能读取该 cookie。如果想让一个页面读取另一个页面设
置的cookie,必须设置cookie的路径。cookie的路径用于设置能够读取 cookie的顶级目录。将这
个路径设置为网站的根目录,可以让所有网页都能互相读取 cookie (一般不要这样设置,防止出现冲突) 。
4.读取cookie:
$.cookie('the_cookie'); // cookie存在 => 'the_value'
$.cookie('not_existing'); // cookie不存在 => null
5.删除cookie,通过传递null作为cookie的值即可:
$.cookie('the_cookie', null);
 
----------相关参数的解释---------------
1).expires: 365
定义cookie的有效时间,值可以是一个数字(从创建cookie时算起,以天为单位)或一个Date 对
象。如果省略,那么创建的cookie是会话cookie,将在用户退出浏览器时被删除。
2).path: '/'
默认情况:只有设置cookie的网页才能读取该cookie。
定义cookie的有效路径。默认情况下, 该参数的值为创建 cookie 的网页所在路径(标准浏览器的行为) 。
如果你想在整个网站中访问这个cookie需要这样设置有效路径:path: '/'。如果你想删除一个定义
了有效路径的 cookie,你需要在调用函数时包含这个路径:$.cookie('the_cookie', null,
{ path: '/' });。 domain: 'example.com'
默认值:创建 cookie的网页所拥有的域名。
3).secure: true
默认值:false。如果为true,cookie的传输需要使用安全协议(HTTPS)。
4).raw: true
默认值:false。
默认情况下,读取和写入 cookie 的时候自动进行编码和解码(使用encodeURIComponent 编码,
decodeURIComponent 解码)。要关闭这个功能设置 raw: true 即可。
XML/HTML代码
  1. <head>  
  2.     <title>cookie保存用户名密码</title>  
  3.     <script src="Scripts/jquery-1.4.2.js" type="text/javascript"></script>  
  4.     <script src="Scripts/jquery.cookie.js" type="text/javascript"></script>  
  5.     <!--插件必须放在jquery下面-->  
  6.     <script type="text/javascript">  
  7.         $(function () {  
  8.             $("#btn").click(function () {  
  9.                 var hname = $("#txtname").val();  
  10.                 var hpassword = $("#txtpassword").val();  
  11.                 $.cookie("hostname", hname, { expires: 1 });  
  12.                 $.cookie("hostpassword", hpassword, { expires: 1 });  
  13.                 if (hname == "admin" && hpassword == "123456") {  
  14.                     alert("欢迎admin登入");  
  15.                 }  
  16.             });  
  17.             var hname = $.cookie("hostname");  
  18.             var hpassword = $.cookie("hostpassword");  
  19.             if (hname && hpassword) {  
  20.                 $("#txtname").val(hname);  
  21.                 $("#txtpassword").val(hpassword);  
  22.             }  
  23.         });  
  24.     </script>  
  25. </head>  
  26. <body>  
  27. <table border="1">  
  28.     <tr>  
  29.         <td>用户名:</td>  
  30.         <td><input type="text" id="txtname" /></td>  
  31.     </tr>  
  32.     <tr>  
  33.         <td>密码:</td>  
  34.         <td><input type="password" id="txtpassword" /></td>  
  35.     </tr>  
  36.     <tr>  
  37.         <td colspan="2"><input type="button" id="btn" value="进入" /></td>  
  38.     </tr>  
  39. </table>  
  40. </body>  

 

使用jquery实现对cookie的操作  前段时间刚学完jquery和ajax,老师就要我们使用jquery和ajax做一个项目,功能类似于淘宝一样的网上购物,但是不允许使用服务器控件。那么要想保存用户登录信息的cookie也就只有使用jquery了。其实使用query操作cookie也不难。

首先我们要下载一个jquery.cookie.js的插件,然后添加到项目里面就行了。
下面我们来简单了解一下jquery.cookie.js这个插件的用法:
 
jquery中cook的使用方法:
1.首先找到jquery.cook.js这个文件,然后添加到html页或aspx页中(请注意上面两个文件的顺序切勿添加反了)
2.然后在需要使用cookie的js文件中使用cookie
/// <reference path="jquery-1.8.3.min.js" />
/// <reference path="jquery.cookie.js" />
(请注意上面两个文件的顺序切勿添加反了)
3.cookie的简单介绍  cookie("cookie的名称","cookie中保存的值","cookie保存的时间(单位为天)")
4.使用cookie  获取将本地的cookie中的值 var v= $.cookie("GoodsInfo")  新创建一个名为UserInfo的cookie,其值为:userName=zhangsan;pwd:123456;id=1,
保存时间为7天:
var value = "userName=zhangsan;pwd=123456;id=1";
$.cookie("UserInfo", cookieValue, { expires: 7 });
//{ expires: 7 }cookie在本地保存的时间,需要修改时间的话只需要将7改为其他值
 
为了方便获取到cookie中的值,我们也可以以"用户名;密码;用户编号"的形式来存放cookie的值:  var value="zhangsan;123456;1";
//建议使用这种方法
5.cookie的具体使用:
//在页面加载的时候会执行下面的
JavaScript代码
  1. $(function() {
  2. //判断本地之后存在cookie,如果存在即取出里面的值    
  3. if($.cookie("UserInfo")!=null)
  4. {
  5. //获取存放在cookie中的值  var cookieValue = $.cookie("UserInfo");  
  6. //将获取到的cookie中的值以";"分割,会分别得到id与count的字符串  
  7. //分割得到的值会存放还一个数组中  var cookieArr=cookieValue.split(';');  
  8. //这样获取到得的cookieArr中的个元素以及值分别为:  
  9. //cookieArr[0]:zhangsang     对应用户的用户名  
  10. //cookieArr[1]:123456        对应用户的密码  
  11. //cookieArr[2]:1             对应用户的编号  
  12. }
  13.  
  14. })
6.在WebService中用来实现登录的方法中可以按照这样的思路来编写代码:
(1)根据用户的用户名和密码查询用户的信息
(2)将查询到得用户的信息以“用户名;密码;用户编号”的形式返回,也可以单独返回用户的编号
(3)在$.ajax执行成功后的方法里面可以将返回的值存储在cookie中
JavaScript代码
  1. $.ajax({
  2. type: "post",
  3. contentType: "application/json",
  4. url: "WebServices/UserWebService.asmx/GetUserInfo",
  5. data: "{userName:'" + userName + "',userPwd:'" + userPwd + "'}",
  6. dataType: "json",
  7. success: function (result)
  8. {
  9. $.cookie("UserInfo", result.d, { expires: 7 });
  10. }
  11.  
  12. });
在需要使用用户编号或用户名的方法中使用第5步提供的方法获取用户的编号或用户名,然后再将用户的编号或用户名作为参数传递
****************************************************************************************
关闭广告的实例DEMO:
JavaScript代码
  1. $(".close").click(function(){
  2. $(this).parents('div.ad-box:eq(0)').hide();
  3. $.cookie('topad', 'test', { path: '/', expires: 1 });
  4. return false;
  5. })
  6. //判断如果topad不为空的话就执行
  7. if($.cookie("topad")!=null){
  8. $(".topad").hide();
  9. }
XML/HTML代码
  1. <div class="firstad topad ad-box">
  2. <h4>这里的第一个广告</h4>
  3. <div id="close-boxs"><div class="close"></div></div>
  4. </div><!-- firstad end -->
CSS代码
  1. .firstad{width:800px;height:50px;line-height:50px;text-align:center;color:#fff;width:auto;background:#0000ff;position:relative;}
  2. .close{width:10px;height:10px;background:#FF0000;border:1px solid white;position:absolute;top:0px;rightright:0;cursor:pointer}
  3.  

 

Tags: ,

jQuery替换节点

[不指定 2013/05/19 00:25 | by 刘新修 ]

 如果要替换某个节点,jQuery提供了相应的方法,即replaceWith()和replaceAll()。replaceWith()方法的作用是将所有的元素都替换成指定的HTML或者DOM元素。

JavaScript代码
  1. $("p").replaceWith("<strong>我在学习jQuery</strong>");  

也可以使用jQuery中另一种方法replaceAll()来实现,该方法与replaceWith()方法的左右相同,知识点到了replaceWith()操作,可以使用如下的jQuery代码实现同样的功能:

JavaScript代码
  1. $("<strong>我在学习jQuery</strong>").replaceAll("p");  

该示例用到的HTML代码:

XML/HTML代码
  1. <p>我在学习jQuery</p>  

 

 下面,让我们来学习制作一个简易的下拉面板。你可能已经见过许多下拉面板,在上面你只需要点击提示按钮,页面就会出现一个下拉面板。

下面是核心jQuery代码:

JavaScript代码
  1. $(document).ready(function(){  
  2.     $(".btn-slide").click(function(){  
  3.         $("#panel").slideToggle("slow");  
  4.         $(this).toggleClass("active");  
  5.         return false;  
  6.     });  
  7. });  

当点击一个带有class=”btn-slide”的元素时,jQuery就会对 <div id=”panel”> 元素进行展收操作(slideToggle),并且给<a class=”btn-slide”>元素添加一个class=”active”的属性。然后.active class通过CSS背景定位改变箭头的背景位置。

 1、停止元素的动画

很多时候需要停止匹两己元素正在进行的动画,例如上例的动画,如l果需要在某处停止动画,需要使用stop()方法。stop()方法的语法缩构为:

stop([clearQueue][,gotoEnd]);

参数clearQHCHC和gotoEnd都足町选的参数,为Boolean值(ture或flase)。clearQueue代表足胥婴清空术执{j.完的动嘶队列,90toEnd代表是否直接将萨在执行的动画跳转到术状态。
    如粜商接使川stop()方法.!【!IJ会。一即停.l卜专前一在进行的动画,如.粜接下来还有动画等待继续进行.呲0以当前状态J r始接下柬的动画。经常会遇到这种情况.在为。’个元索绑定hover事件之后.Jf】户把光标移入元素时会触发动画效粜,而当这个动画还没结束时,用户就将光标移出这个元素了,J且j么光标移出的动画效粜将会被放进队列之中,等待光标移入的动画结束后再执行。I蚓此如粜光标移入移出搿过快就会导致动画效粜.b光标的动作不一1致。此时只要神:光标的移入、移出动越之前加入stop()力‘法,就能解决这个问题。stop()方法会结束当前j下在进行的动l画,并立即执行队列中个动画。以下代码就可以解决刚才的问题。

2.判断元素是否处于动画状态

在使用animate()方法的时候,要避免动画积累而导致的动画与用户的行为不一致.当用户快速在某个元素上执行animate()动画的时,就会出现动画积累。解决方法是判断元素是否正处于动画状态,如果元素不处于动画状态,才为元素添加新的动画,否则不添加。代码如下:

JavaScript代码
  1. if (!$(element).is(":animated")) {   
  2.     //判断元素是否正处于动画状态  
  3.     //如果没有进行动画,则添加动画  
  4. }  

这个判断方法在animate()动画中经常被用到,需要特别注意。

Tags: , , ,

jQuery CSS-DOM操作

[不指定 2013/05/18 23:48 | by 刘新修 ]

CSS-DOM技术简单来书就是读取和设置style对象的各种属性。style属性很有用,但最大不足是无法通过它来提取到通过外部CSS设置的样式信息,然而在jQuery中,这些都是非常的简单。

可以直接利用css()方法获取元素的样式属性,jQuery代码如下;

JavaScript代码
  1. $("p").css("color"); // 获取<p>元素的样式颜色  

 

无论color属性是外部CSS导入,还是直接拼接在HTML元素里,css()方法都可以获取到属性style里的其它属性的值。

也可以直接利用css()方法设置某个元素的单个样式,例如:

JavaScript代码
  1. $("p").css("color","red"); //设置<p>元素的样式颜色为红色  

与attr()方法一样,css()方法也可以同时设置多个样式属性,代码如下:

JavaScript代码
  1. $("p").css({"fontsize""30px", "backgroundcolor":"#EEE"})  
  2. //同时设置字体大小和背景色  

对透明度的设置,可以直接使用opacity属性,则可以通过如下jQuery代码实现:

JavaScript代码
  1. $("p").css("opacity","0.5");  

如果获取某个元素的height属性,则可以通过如下jQuery代码实现;

JavaScript代码
  1. $(element).css("height");  

在jQuery中还有另外一种方法也可以获取元素的高度,即height().他的左右是取得匹配元素当前计算的高度(px)。jQuery代码如下:

JavaScript代码
  1. $("p").height();  

height()方法也能用来设置元素的高度,如果传递的值是一个数字,则默认单位为px.如果要用其他单位(例如em),则必须传递一个字符串。jQuery代码如下:

JavaScript代码
  1. $("p").height(100);  
  2. $("p").height("10em");  

与height()方法对应的还有一个width()方法,它可以取得匹配元素的宽度值(px)。

JavaScript代码
  1. $("p").width(); //获取<p>元素的宽度值  

同样,width()方法也能用来设置元素的宽度

JavaScript代码
  1. $("p").width("400px"); //用来设置<p>元素的宽度值为400px  

 

此外,在CSS-DOM中,还有以下几个经常使用的方法。

1.offset()方法

它的作用是获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即top和left,它只对可见元素有效。例如用它来获取<p>元素的偏移量,jQuery代码如下:

JavaScript代码
  1. var offset = $("p").offset(); //获取<p>元素的offset()  
  2. var left = offset.left;  
  3. var top = offset.top;  

 

2.position()方法

它的作用是获取元素相对于最近的一个postion样式属性设置为relative或者absolute的祖父节点的相对偏移,与offset()一样,它返回的对象也包括两个属性,即top和left。jQuery代码如下:

JavaScript代码
  1. var postion = $("p").postion(); //获取<p>元素的postion()  
  2. var left = postion.left; //获取左偏移  
  3. var top = postion.top; //获取右偏移  

 

3.scrollTop方法和scrollLeft()方法

这两个方法的作用分别是获取元素的滚动条距顶端的距离和距左侧的距离。例如使用下面的代码获取<p>元素的滚动条距离:

JavaScript代码
  1. var $p = $("p")  
  2. var scroolTop = $p.scrollTop();  
  3. var scroolLeft = $p.scrollLeft();  

另外,可以为这两个方法指定一个参数,控制元素的滚动条到指定位置。例如使用如下代码控制元素内的滚动条滚动到距顶端300和距左侧300的位置;

JavaScript代码
  1. $("textarea").scrollTop(300);  
  2. $("textarea").scrollLeft(300);  
Tags: , ,

用户可以单击商品列表下方的“显示全部品牌”按钮来显示全部的品牌。单击“显示全部品牌”按钮同时,列表会将推荐的品牌的名字高亮显示,按钮里的文字也换成了“精简显示品牌”。再次单击“精简显示品牌”按钮,即可回到初始状态。

实现这个示例,代码如下:

JavaScript代码
  1. ……  
  2. <script>  
  3. $(function() {  
  4.     var $category = $("ul li:gt(4):not(:last)"); //获取索引值大于4的品牌对象(除最后一条)  
  5.     $category.hide(); //隐藏上面获取到的jQuery对象  
  6.     var $togglebtn = $(".more>a"); //获取“显示全部品牌”按钮  
  7.     $togglebtn.click(function() { //给按钮添加onclick事件  
  8.         if ($category.is(":visible")) { //如果元素显示  
  9.             $category.hide(); //隐藏$category  
  10.             $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 5px").text("显示全部品牌"); //改变背景、文字  
  11.             $("ul li").removeClass("promoted");  //移除高亮样式  
  12.         } else {  
  13.             $category.show(); //显示$category  
  14.             $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 -18px").text("精简显示品牌") //改变背景、文字  
  15.             $("ul li").filter(":contains('佳能'),:contains('三星'),:contains('松下')").addClass("promoted"); //增加高亮显示  
  16.         }  
  17.         return false; //阻止链接跳转  
  18.     })  
  19. })  
  20. </script>  
  21. ……  
  22. <div>  
  23.   <ul>  
  24.     <li><a href="#">佳能</a><i>(3048)</i></li>  
  25.     <li><a href="#">索尼</a><i>(204)</i></li>  
  26.     <li><a href="#">三星</a><i>(1040)</i></li>  
  27.     <li><a href="#">尼康</a><i>(390)</i></li>  
  28.     <li><a href="#">松下</a><i>(700)</i></li>  
  29.     <li><a href="#">明基</a><i>(800)</i></li>  
  30.     <li><a href="#">三洋</a><i>(700)</i></li>  
  31.     <li><a href="#">拍得丽</a><i>(800)</i></li>  
  32.     <li><a href="#">尼柯</a><i>(700)</i></li>  
  33.     <li><a href="#">爱国者</a><i>(800)</i></li>  
  34.     <li><a href="#">其它</a><i>(760)</i></li>  
  35.   </ul>  
  36.   <div><a href="a.html"><span>显示全部品牌</span></a></div>  
  37. </div>  
  38. ……  

 

1.从第4条开始隐藏后面的品牌(最后一条“其它”除外)。

JavaScript代码
  1. var $category = $("ul li:gt(4):not(:last)");  
  2. $category.hide(); //隐藏上面获取到的jQuery对象  

 

$(“ul li:gt(4):not(:last)”)的意思是获取ul元素下索引值大于5的li元素的集合元素,然后去掉集合元素中的最后一个元素。

2.当用户单击“显示全部品牌”按钮时,执行一下操作。

首先获取到按钮,代码如下:

JavaScript代码
  1. var $gogglebtn = $(".more > a"); //获取“显示全部品牌”按钮  

然后给按钮添加事件,使用show()方法把隐藏的品牌列表显示出来,代码如下:

JavaScript代码
  1. $togglebtn.click(function(){  
  2.     $category.show(); //显示全部品牌  
  3.     return false;  //阻止链接跳转  
  4. })  

 

由于给超练级添加onclick 事件,因此需要使用“return flash”语句让浏览器认为用户没有单击该超链接,从而阻止该超链接跳转。

之后,需要将“显示全部品牌”按钮文本切换成“精简显示品牌”,代码如下:

JavaScript代码
  1. $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 -18px").text("精简显示品牌") //改变背景、文字  

 

这里完成了两部操作,即把按钮的背景图片换成向上的图片,同时也改变了按钮文本内容,将其替换成了“精简显示品牌”。

接下来需高亮推荐品牌,代码如下:

JavaScript代码
  1. $("ul li").filter(":contains('佳能'),:contains('三星'),:contains('松下')").addClass("promoted");
  2. //增加高亮显示  

 

使用filter()方法筛选出符合要求的品牌,然后为它们添加promoted样式。在这里推荐了3个品牌,即佳能、三星、松下。

3.当用户单击“精简显示品牌”按钮时,将执行以下操作。

由于用户单击的是同一个按钮,因此事件仍然是在刚才的按钮元素上。要将切换两种状态的效果在一个按钮上进行,可以通过判断元素的显示或者隐藏来达到目的,代码结构如下:

JavaScript代码
  1. if(元素显示){  
  2.     //元素隐藏  
  3. }else{  
  4.     //元素显示  
  5. }  

在jQuery中,与show方法相反的是hide()方法,因此可以使用hide()方法将品牌隐藏起来,代码如下:

JavaScript代码
  1. $(".more a span").css("background", "url(img/up_down.png) no-repeat 0 5px").text("显示全部品牌"); //改变背景、文字  

接下来需要去掉所有的品牌高亮显示状态,此时可以使用removeClass()方法来完成,代码如下:

JavaScript代码
  1. $("ul li").removeClass("promoted"); //去掉高亮样式  

它将去掉所有li元素上的”promoted”样式,即去掉了品牌的高亮状态。

第一页 上页 15 16 17 18 19 20 21 22 23 24 下页 最后页 [ 显示模式: 摘要 | 列表 ]