竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


95月/160

微信公众平台开发 OAuth2.0网页授权认证

发布在 邵珠庆

一、什么是OAuth2.0

官方网站:http://oauth.net/   http://oauth.net/2/

权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. 

OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站、移动或桌面应用上存储的私密的资源(如用户个人信息、照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。

OAuth 2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0。 OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。

OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。

新浪微博API目前也使用OAuth 2.0。

二、微信公众平台OAuth2.0授权

微信公众平台OAuth2.0授权详细步骤如下:

1. 用户关注微信公众账号。
2. 微信公众账号提供用户请求授权页面URL。
3. 用户点击授权页面URL,将向服务器发起请求
4. 服务器询问用户是否同意授权给微信公众账号(scope为snsapi_base时无此步骤)
5. 用户同意(scope为snsapi_base时无此步骤)
6. 服务器将CODE通过回调传给微信公众账号
7. 微信公众账号获得CODE
8. 微信公众账号通过CODE向服务器请求Access Token
9. 服务器返回Access Token和OpenID给微信公众账号
10. 微信公众账号通过Access Token向服务器请求用户信息(scope为snsapi_base时无此步骤)
11. 服务器将用户信息回送给微信公众账号(scope为snsapi_base时无此步骤)

如果用户在微信中(Web微信除外)访问公众号的第三方网页,公众号开发者可以通过此接口获取当前用户基本信息(包括昵称、性别、城市、国家)。利用用户信息,可以实现体验优化、用户来源统计、帐号绑定、用户身份鉴权等功能。请注意,“获取用户基本信息接口是在用户和公众号产生消息交互时,才能根据用户OpenID获取用户基本信息,而网页授权的方式获取用户基本信息,则无需消息交互,只是用户进入到公众号的网页,就可弹出请求用户授权的界面,用户授权后,就可获得其基本信息(此过程甚至不需要用户已经关注公众号。)”

微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。

在微信公众号请求用户网页授权之前,开发者需要先到公众平台网站的我的服务页中配置授权回调域名。请注意,这里填写的域名不要加http://

关于配置授权回调域名的说明:

授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com  无法进行OAuth2.0鉴权。

具体而言,网页授权流程分为四步:

  1. 引导用户进入授权页面同意授权,获取code
  2. 通过code换取网页授权access_token(与基础支持中的access_token不同)
  3. 如果需要,开发者可以刷新网页授权access_token,避免过期
  4. 通过网页授权access_token和openid获取用户基本信息

目录

[隐藏]

第一步:用户同意授权,获取code

在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认带有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
参考链接(请在微信客户端中打开此链接体验) Scope为snsapi_base https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=http%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect Scope为snsapi_userinfo https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

参数说明

参数 是否必须 说明
appid 公众号的唯一标识
redirect_uri 授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type 返回类型,请填写code
scope 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
state 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值
#wechat_redirect 无论直接打开还是做页面302重定向时候,必须带此参数

下图为scope等于snsapi_userinfo时的授权页面:

网页授权

用户同意授权后

如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE

code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

第二步:通过code换取网页授权access_token

首先请注意,这里通过code换取的网页授权access_token,与基础支持中的access_token不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

请求方法

获取code后,请求以下链接获取access_token:  https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数说明

参数 是否必须 说明
appid 公众号的唯一标识
secret 公众号的appsecret
code 填写第一步获取的code参数
grant_type 填写为authorization_code

返回说明

正确时返回的JSON数据包如下:

{    "access_token":"ACCESS_TOKEN",    "expires_in":7200,    "refresh_token":"REFRESH_TOKEN",    "openid":"OPENID",    "scope":"SCOPE" }
参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in access_token接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
openid 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
scope 用户授权的作用域,使用逗号(,)分隔

错误时微信会返回JSON数据包如下(示例为Code无效错误):

{"errcode":40029,"errmsg":"invalid code"}

全局返回码说明

第三步:刷新access_token(如果需要)

由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token拥有较长的有效期(7天、30天、60天、90天),当refresh_token失效的后,需要用户重新授权。

请求方法

获取第二步的refresh_token后,请求以下链接获取access_token:  https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
参数 是否必须 说明
appid 公众号的唯一标识
grant_type 填写为refresh_token
refresh_token 填写通过access_token获取到的refresh_token参数

返回说明

正确时返回的JSON数据包如下:

{    "access_token":"ACCESS_TOKEN",    "expires_in":7200,    "refresh_token":"REFRESH_TOKEN",    "openid":"OPENID",    "scope":"SCOPE" }
参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in access_token接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
openid 用户唯一标识
scope 用户授权的作用域,使用逗号(,)分隔

错误时微信会返回JSON数据包如下(示例为Code无效错误):

{"errcode":40029,"errmsg":"invalid code"}

全局返回码说明

第四步:拉取用户信息(需scope为 snsapi_userinfo)

如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。

请求方法

http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明

参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid 用户的唯一标识
lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语

返回说明

正确时返回的JSON数据包如下:

{    "openid":" OPENID",    " nickname": NICKNAME,    "sex":"1",    "province":"PROVINCE"    "city":"CITY",    "country":"COUNTRY",     "headimgurl":    "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",  "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ] }
参数 描述
openid 用户的唯一标识
nickname 用户昵称
sex 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
province 用户个人资料填写的省份
city 普通用户个人资料填写的城市
country 国家,如中国为CN
headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
privilege 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)

错误时微信会返回JSON数据包如下(示例为openid无效):

{"errcode":40003,"errmsg":" invalid openid "}

全局返回码说明

附:检验授权凭证(access_token)是否有效

请求方法

http:GET(请使用https协议) https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

参数说明

参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid 用户的唯一标识

返回说明

正确的Json返回结果:

{ "errcode":0,"errmsg":"ok"}

错误时的Json返回示例:

{ "errcode":40003,"errmsg":"invalid openid"}

 案例代码:

请求授权页面的构造方式

url在线编码工具:http://tool.oschina.net/encode?type=4

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

前端代码


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="format-detection" content="telephone=no"><title>会员注册</title><script type="text/JavaScript" src="jQuery.js"></script>

 <script type="text/javascript"> 
  function callback(result) {  
        alert('cucess');         
  alert(result);  //输出openid    
  } 
  
  function getQueryString(name) {  
   var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");   
   var r = window.location.search.substr(1).match(reg);    
   if (r != null) return unescape(r[2]); return null;   
  }
  var code = getQueryString("code");
  
  $.ajax({ 
  async: false,       url: "http://atest.sinaapp.com/oauth2.php", //这是我的服务端处理文件php的     
  type: "GET",       //下面几行是jsoup,如果去掉下面几行的注释,后端对应的返回结果也要去掉注释      
  // dataType: 'jsonp',      
  // jsonp: 'callback', //jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象.       
  // jsonpCallback:'callback',      
  data: {code:code}, //传递本页面获取的code到后台,以便后台获取openid      
  timeout: 5000,       
  success: function (result) { 
        callback(result);     
  },       
  error: function (jqXHR, textStatus, errorThrown) {
  alert(textStatus);       }   
  });
  
  </script>
  
  </head><body></body> 


后端代码


<?php
$code = $_GET['code'];//前端传来的code值
$appid = "wx468622291a1e99d6";
$appsecret = "98566dc38863aa4395fabebb0de6ecc1";//获取openid
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
$result = https_request($url);
$jsoninfo = json_decode($result, true);
$openid = $jsoninfo["openid"];//从返回json结果中读出openid
$access_token = $jsoninfo["access_token"];//从返回json结果中读出openid
$callback=$_GET['callback'];  // echo $callback."({result:'".$openid."'})";

$url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
$result1 = https_request($url1);
$jsoninfo1 = json_decode($result1, true);
$nickname=$jsoninfo1["nickname"];
echo $openid.":".$access_token.":".$nickname; //把openid 送回前端

 function https_request($url,$data = null){
  $curl = curl_init();   
  curl_setopt($curl, CURLOPT_URL, $url);   
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);   
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    
  if (!empty($data)){    
  curl_setopt($curl, CURLOPT_POST, 1);  
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data);   
  }    
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  $output = curl_exec($curl);    
  curl_close($curl);    
  return $output;
 }
?> 

 
 
257月/100

网页配色实例:Web设计色彩速查表

发布在 邵珠庆

一直希望自己对Web设计的色彩把握的更好些,所以手头上就备了一份图片版的配色表,对色彩的搭配有了很多的提高,今天发现了这套非常完整的Web版设计色彩速查表,相比图片版的来说就更容易实时学习了。

████ 粉红(#ffb3a7),即浅红色。别称:妃色 杨妃色 湘妃色 妃红色
████ 妃色 妃红色(#ed5736):古同“绯”,粉红色。杨妃色 湘妃色 粉红皆同义。
████ 品红(#f00056):比大红浅的红色(quester注:这里的“品红”估计是指的“一品红”,是基于大红色系的,和现在我们印刷用色的“品红M100”不是一个概念)

████ 桃红(#f47983),桃花的颜色,比粉红略鲜润的颜色。 (quester注:不大于M70的色彩,有时可加入适量黄色)
████ 海棠红(#db5a6b),淡紫红色、较桃红色深一些,是非常妩媚娇艳的颜色。
████ 石榴红(#f20c00):石榴花的颜色,高色度和纯度的红色。
████ 樱桃色(#c93756):鲜红色

████ 银红(#f05654):银朱和粉红色颜料配成的颜色。多用来形容有光泽的各种红色,尤指有光泽浅红。
████ 大红(#ff2121):正红色,三原色中的红,传统的中国红,又称绛色 (quester注:RGB 色中的 R255 系列明度)
████ 绛紫(#8c4356):紫中略带红的颜色
████ 绯红(#c83c23):艳丽的深红

████ 胭脂(#9d2933):1,女子装扮时用的胭脂的颜色。2,国画暗红色颜料
████ 朱红(#ff4c00):朱砂的颜色,比大红活泼,也称铅朱 朱色 丹色 (quester注:在YM对等的情况下,适量减少红色的成分就是该色的色彩系列感觉)
████ 丹(#ff4e20):丹砂的鲜艳红色
████ 彤(#f35336):赤色

████ 茜色(#cb3a56):茜草染的色彩,呈深红色
████ 火红(#ff2d51):火焰的红色,赤色
████ 赫赤(#c91f37):深红,火红。泛指赤色、火红色。
████ 嫣红(#ef7a82):鲜艳的红色
████ 洋红:色橘红(#ff0097) (quester注:这个色彩方向不太对,通常洋红指的是倾向于M100系列的红色,应该削弱黄色成分。)

████ 炎(#ff3300):引申为红色。
████ 赤(#c3272b):本义火的颜色,即红色
████ 绾(#a98175):绛色;浅绛色。
████ 枣红(#c32136):即深红 (quester注:色相不变,是深浅变化)

████ 檀(#b36d61):浅红色,浅绛色。
████ 殷红(#be002f):发黑的红色。
████ 酡红(#dc3023):像饮酒后脸上泛现的红色,泛指脸红
████ 酡颜(#f9906f):饮酒脸红的样子。亦泛指脸红色

████ 鹅黄(#fff143):淡黄色 (quester注:鹅嘴的颜色,高明度微偏红黄色)
████ 鸭黄(#faff72):小鸭毛的黄色
████ 樱草色(#eaff56):淡黄色
████ 杏黄(#ffa631):成熟杏子的黄色 (quester注:Y100 M20~30 感觉的色彩,比较常用且有浓郁中国味道)

████ 杏红(#ff8c31):成熟杏子偏红色的一种颜色
████ 橘黄(#ff8936):柑橘的黄色。
████ 橙黄(#ffa400):同上。 (quester注:Y100 M50 感觉的色彩,现代感比较强。广告上用得较多)
████ 橘红(#ff7500):柑橘皮所呈现的红色。

████ 姜黄(#ffc773):中药名。别名黄姜。为姜科植物姜黄的根茎。又指人脸色不正,呈黄白色
████ 缃色(#f0c239):浅黄色。
████ 橙色(#fa8c35):界于红色和黄色之间的混合色。
████ 茶色(#b35c44):一种比栗色稍红的棕橙色至浅棕色
████ 驼色(#a88462):一种比咔叽色稍红而微淡、比肉桂色黄而稍淡和比核桃棕色黄而暗的浅黄棕色

████ 昏黄(#c89b40):形容天色、灯光等呈幽暗的黄色
████ 栗色(#60281e):栗壳的颜色。即紫黑色
████ 棕色:棕毛的颜色,即褐色。1,在红色和黄色之间的任何一种颜色2,适中的暗淡和适度的浅黑。
████ 棕绿(#827100):绿中泛棕色的一种颜色。
████ 棕黑(#7c4b00):深棕色。

████ 棕红(#9b4400):红褐色。
████ 棕黄(#ae7000):浅褐色。
████ 赭(#9c5333):赤红如赭土的颜料,古人用以饰面
████ 赭色(#955539):红色、赤红色。
████ 琥珀(#ca6924):

████ 褐色(#6e511e): 黄黑色
████ 枯黄(#d3b17d):干枯焦黄
████ 黄栌(#e29c45):一种落叶灌木,花黄绿色,叶子秋天变成红色。木材黄色可做染料。
████ 秋色(#896c39):1,中常橄榄棕色,它比一般橄榄棕色稍暗,且稍稍绿些。2,古以秋为金,其色白,故代指白色。
████ 秋香色(#d9b611):浅橄榄色 浅黄绿色。 (quester注:直接在Y中掺入k10~30可得到不同浓淡的该类色彩)

████ 嫩绿(#bddd22):像刚长出的嫩叶的浅绿色
████ 柳黄(#c9dd22):像柳树芽那样的浅黄色
████ 柳绿(#afdd22):柳叶的青绿色
████ 竹青(#789262):竹子的绿色

████ 葱黄(#a3d900):黄绿色,嫩黄色
████ 葱绿(#9ed900):1,浅绿又略显微黄的颜色2,草木青翠的样子
████ 葱青(#0eb83a):淡淡的青绿色
████ 葱倩(#0eb83a):青绿色
████ 青葱(#0aa344):翠绿色,形容植物浓绿

████ 油绿(#00bc12):光润而浓绿的颜色。以上几种绿色都是明亮可爱的色彩。
████ 绿沈(#0c8918)(沉) :深绿
████ 碧色(#1bd1a5):1,青绿色。2,青白色,浅蓝色。
████ 碧绿(#2add9c):鲜艳的青绿色

████ 青碧(#48c0a3):鲜艳的青蓝色
████ 翡翠色(#3de1ad):1,翡翠鸟羽毛的青绿色。2,翡翠宝石的颜色。 (quester注:C-Y≥30 的系列色彩,多与白色配合以体现清新明丽感觉,与黑色配合效果不好:该色个性柔弱,会被黑色牵制)
████ 草绿(#40de5a):绿而略黄的颜色。
████ 青色(#00e09e):1,一类带绿的蓝色,中等深浅,高度饱和。3,本义是蓝色。4,一般指深绿色。5,也指黑色。6,四色印刷中的一色。2,特指三补色中的一色。

████ 青翠(#00e079):鲜绿

████ 青白(#c0ebd7):白而发青,尤指脸没有血色
████ 鸭卵青(#e0eee8):淡青灰色,极淡的青绿色
████ 蟹壳青(#bbcdc5):深灰绿色

████ 鸦青(#424c50):鸦羽的颜色。即黑而带有紫绿光的颜色。
████ 绿色(#00e500):1,在光谱中介于蓝与黄之间的那种颜色。2,本义:青中带黄的颜色。3,引申为黑色,如绿鬓:乌黑而光亮的鬓发。代指为青春年少的容颜。 (quester注:现代色彩研究中,把绿色提高到了一个重要的位置,和其它红黄兰三原色并列研究,称做“心理原色”之一)
████ 豆绿(#9ed048):浅黄绿色
████ 豆青(#96ce54):浅青绿色

████ 石青(#7bcfa6):淡灰绿色
████ 玉色(#2edfa3):玉的颜色,高雅的淡绿、淡青色
████ 缥(#7fecad):绿色而微白
████ 艾绿(#a4e2c6):艾草的颜色。偏苍白的绿色。
████ 松柏绿(#21a675):经冬松柏叶的深绿

████ 松花绿(#057748):亦作“松花”、“松绿”。偏黑的深绿色,墨绿。
████ 松花色(#bce672):浅黄绿色。(松树花粉的颜色)《红楼梦》中提及松花配桃红为娇艳 ██ ██

████ 蓝(#44cef6):三原色的一种。像晴天天空的颜色 (quester注:这里的蓝色指的不是RGB色彩中的B,而是CMY色彩中的C)

████ 靛青(#177cb0):也叫“蓝靛”。用蓼蓝叶泡水调和与石灰沉淀所得的蓝色染料。呈深蓝绿色 (quester注:靛,发音dian四声,有些地方将蓝墨水称为“靛水”或者“兰靛水”)
████ 靛蓝(#065279):由植物(例如靛蓝或菘蓝属植物)得到的蓝色染料
████ 碧蓝(#3eede7):青蓝色
████ 蔚蓝(#70f3ff):类似晴朗天空的颜色的一种蓝色

████ 宝蓝(#4b5cc4):鲜艳明亮的蓝色 (quester注:英文中为 RoyalBlue 即皇家蓝色,是皇室选用的色彩,多和小面积纯黄色(金色)配合使用。)
████ 蓝灰色(#a1afc9):一种近于灰略带蓝的深灰色
████ 藏青(#2e4e7e):蓝而近黑
████ 藏蓝(#3b2e7e):蓝里略透红色

████ 黛(#4a4266):青黑色的颜料。古代女子用以画眉。
████ 黛螺(#4a4266):绘画或画眉所使用的青黑色颜料,代指女子眉妩。
████ 黛色(#4a4266):青黑色。
████ 黛绿(#426666):墨绿。
████ 黛蓝(#425066):深蓝色

████ 黛紫(#574266):深紫色
████ 紫色(#8d4bbb):蓝和红组成的颜色。古人以紫为祥瑞的颜色。代指与帝王、皇宫有关的事物。
████ 紫酱(#815463):浑浊的紫色
████ 酱紫(#815476):紫中略带红的颜色
████ 紫檀(#4c221b):檀木的颜色,也称乌檀色 乌木色

████ 绀青 绀紫(#003371):纯度较低的深紫色
████ 紫棠(#56004f):黑红色
████ 青莲(#801dae):偏蓝的紫色
████ 群青(#4c8dae):深蓝色
████ 雪青(#b0a4e3):浅蓝紫色

████ 丁香色(#cca4e3):紫丁香的颜色,浅浅的紫色,很娇柔淡雅的色彩
████ 藕色(#edd1d8):浅灰而略带红的颜色
████ 藕荷色(#e4c6d0):浅紫而略带红的颜色

████ 苍色(#75878a):即各种颜色掺入黑色后的颜色,如苍翠(#519a73)████ 苍黄(#a29b7c)████ 苍青(#7397ab)████ 苍黑(#395260)████ 苍白(#d1d9e0)████ (quester注:准确的说是掺入不同灰度级别的灰色)

████ 水色(#88ada6):水红(#f3d3e7)████ 水绿(#d4f2e7)████ 水蓝(#d2f0f4)████ 淡青(#d3e0f3)████ 湖蓝(#30dff3)████ 湖绿(#25f8cb)████ 皆是浅色。

████ 深色淡色(#ffffff):颜色深的或浅的,不再一一列出。

████ 精白(#ffffff):纯白,洁白,净白,粉白。
████ 象牙白(#fffbf0):乳白色
████ 雪白(#f0fcff):如雪般洁白

████ 月白(#d6ecf0):淡蓝色
████ 缟(#f2ecde):白色
████ 素(#e0f0e9):白色,无色
████ 荼白(#f3f9f1):如荼之白色
████ 霜色(#e9f1f6):白霜的颜色。

▓▓▓▓ 花白(#c2ccd0):白色和黑色混杂的。斑白的 夹杂有灰色的白
████ 鱼肚白(#fcefe8):似鱼腹部的颜色,多指黎明时东方的天色颜色 (quester注:M5 Y5)
████ 莹白(#e3f9fd):晶莹洁白
████ 灰色(#808080):黑色和白色混和成的一种颜色

████ 牙色(#eedeb0):与象牙相似的淡黄色 (quester注:暖白)
████ 铅白(#f0f0f4):铅粉的白色。铅粉,国画颜料,日久易氧化“返铅”变黑。铅粉在古时用以搽脸的化妆品。 (quester注:冷白)

████ 玄色(#622a1d):赤黑色,黑中带红的颜色,又泛指黑色
████ 玄青(#3d3b4f):深黑色

████ 乌色(#725e82):暗而呈黑的颜色
████ 乌黑(#392f41):深黑;漆黑
████ 漆黑(#161823):非常黑的
████ 墨色(#50616d):即黑色
████ 墨灰(#758a99):即黑灰

████ 黑色(#000000):亮度最低的非彩色的或消色差的物体的颜色;最暗的灰色;与白色截然不同的消色差的颜色;被认为特别属于那些既不能反射、又不能透过能使人感觉到的微小入射光的物体,任何亮度很低的物体颜色。
████ 缁色(#493131):帛黑色
████ 煤黑象牙黑(#312520):都是黑,不过有冷暖之分。
████ 黧(#5d513c):黑中带黄的颜色
████ 黎(#75664d):黑中带黄似黎草色

████ 黝(#6b6882):本义为淡黑色或微青黑色。
████ 黝黑(#665757):(皮肤暴露在太阳光下而晒成的) 青黑色
████ 黯(#41555d):深黑色、泛指黑色
████ 赤金(#f2be45):足金的颜色

████ 金色(#eacd76):平均为深黄色带光泽的颜色
████ 银白(#e9e7ef):带银光的白色
████ 铜绿(#549688) ████ 乌金(#a78e44) ████ 老银(#bacac6):金属氧化后的色彩

附带:

国画用色

████ 银朱(#bf242a):呈暗粉色。
████ 胭脂(#9d2933):色暗红。用红蓝花、茜草、紫梗三种植物制成的颜料,年代久则有褪色的现象。
████ 朱砂(#ff461f):色朱红。用以画花卉、禽鸟羽毛。 (quester注:黄色成分微高于红色成分,色艳丽,需注意与背景色调和,多数情况下不大面积使用。)

████ 朱膘(#f36838):色橘红。明度比朱砂高,彩度比朱砂低。用以画花卉。
████ 赭石(#845a33):色红褐。用以画山石、树干、老枝叶。
████ 石青(#1685a9):色青,依深浅分为-头青、二青、三青。用以画叶或山石。
████ 石绿(#16a951):依深浅分为-头绿、二绿、三绿。用以画山石、树干、叶、点苔等。
████ 白粉(#fff2df):亦称胡粉,色白,有蛤粉和铅粉两种。用以画白花、鸟,或调配其他颜料使用。

████ 花青(#003472):色藏青。用以画枝叶、山石、水波等。用蓼蓝或大蓝的叶子制成蓝靛,再提炼出来的青色颜料,蓝绿色或藏蓝色。用途相当广,可调藤黄成草绿或嫩绿色。广花,颜料。即广东产的花青。 (quester注:微含红色成分,故与黄色调和后生成的绿色较为沉着)
████ 藤黄(#ffb61e):色明黄。用以画花卉、枝叶。藤黄:明黄色。南方热带林中的海藤树,常绿乔木,茎高达二十米,从其树皮凿孔,流出黄色树脂,以竹筒承接,干透可作国画颜料。 (quester注:亦含微量红色成分,有毒。和黑色配合时甚为醒目,多为危险警示色彩)
████ 赭石色(#845a33):暗棕色矿物,用做颜料
████ 雌黄(#ffc64b):矿物名。成分是三硫化二砷(As2S3)橙黄色,半透明,可用来制颜料。古人用雌黄来涂改文字,因此称乱改文字、乱发议论为“妄下雌黄”,称不顾事实、随口乱说为“信口雌黄”。

████ 雄黄(#e9bb1d):中药名。为含硫化砷的矿石。别名石黄、黄石。
████ 石黄(#e9bb1d):国画颜料,即雄黄。
████ 洋红(#ff4777):色橘红。用以画花卉。

古典文学常见词

鎏金:中国传统的一种镀金方法,把溶解在水银里的金子涂刷在银胎或铜胎器物上。

飞金 泥金 洒金:用金粉或金属粉制成的金色涂料,用来装饰笺纸或调和在油漆中涂饰器物。洒金一说是指带斑点的图案。
描金:为使器物美观而在其上用金银粉勾图、描绘作为装饰。

花黄:古代妇女的面饰。用金黄色纸剪成星月花鸟等形贴在额上,或在额上涂点黄色。
撒花:织物上的碎花图案。
云斑:在颜色比较淡的或半透明的材料上的暗黑的或无光泽的条纹或斑点(如在大理石上)。
云母纹:像云母断面及砂子闪烁光泽的纹理。

注: 在原文中,是没有把每个色彩的色彩值写上的,我感觉这样用起来会很不方便,用取色器获取的颜色也可能不准确,就在每个颜色名称后面一一标注了。

56月/100

网页表单密码破解程序技术

发布在 邵珠庆

使用说明

1、Target:填写表单将要的路径,该路径可以通过查看网页的源文件得到,如<FORM NAME="form1" METHOD="post " ACTION="http://www.163.com/CheckUser.jsp>

2、Referer:有些网页的验证表单处要 ...
使用说明

1、Target:填写表单将要的路径,该路径可以通过查看网页的源文件得到,如
<FORM NAME="form1" METHOD="post " ACTION="http://www.163.com/CheckUser.jsp>

2、Referer:有些网页的验证表单处要检测表单由何处提交,这里可以填写该表单的URL,如
www.163.com

3、CorrectFlag:此处填写表单验证后正确的关键字,如何得知该关键字呢?如果你有一个帐号能够通过该表单验证,可以使用GetFlag按钮来获得该关键字。

4、WrongFlag:同上,这里是获得验证失败的关键字,也是通过GetFlag得到的。

5、Keep Session:是保持页面在传递中的Session(目前没有实现)

6、Var1Name:指表单中第一个文本框的名字,一般是用户名:),也可以通过查看源程序得到,如
<input name="username"size=12 class=log>
其中的usrname就是名字

Var1Value:指该处应该填写的内容,如果要猜jack的密码,就填写jack

UseDict:指是否使用字典文件,如果该标记被选中,会让你选择字典文件。

Var2Name、Var2Value、UseDict同上。

注意:如果想检测某个用户名是否已存在(一般网站都会提供该功能),可以将Var1使用字典,Var2留白。如果只是猜某一指定用户的密码,则将Var2使用字典。目前不支持用户名和密码同时使用字典文件。

7、Delay如果某些ISP限制了访问页面的时间间隔,请设定该间隔时间,单位为毫秒。

8、OtherParameters:如果表单中还有其它需要提交的元素,可以自己拼写提交,如
submit="登录"&style="1"

9、此处是反馈的结果

Load/Save:打开/保存配置文件

下面是示例:

我在自己的机器上准备了4个文件:default.html(登录页面),check.jsp(身份验证),error.jsp(用户名或密码错误页面),ok.jsp(登录成功的页面)

default.htm的内容

<form name="form1" method="post" action="check.jsp">
用户名:<input name="username" type="text" size="12"><br>
密 码:<input name="password" type="password" value="" size="12">
<input name="submit" type="submit" value="提交">
</form>
--------------------------------------------------------------------------------

check.jsp

<%
String username = request.getParameter("username");
String password = request.getParameter("password");

if (!username.equals("zhang")) {
response.sendRedirect("error.jsp?msg=用户不存在");
return ;
}

if (!password.equals("test")) {
response.sendRedirect("error.jsp?msg=密码不正确");
return ;
}

response.sendRedirect("ok.jsp");
%>
--------------------------------------------------------------------------------

error.jsp

<%
out.println(request.getParameter("msg"));
%>
--------------------------------------------------------------------------------

ok.jsp

<%
out.println("Login Success");
%>

由default.htm中可以看出,Target应该是check.jsp,Var1Name是username,Var2Name是password,因此,Target处应该填写http://localhost:8080/server/check.jsp,Var1Name处填写username,Var2Name处填写password,上面的程序中我已经知道了用户zhang使用密码test时能够正确登录,因此我将Var1Value填写zhang,Var2Value填写test,然后GetFlag,返回的结果如下:

HTTP/1.1 302 Moved Temporarily
Set-Cookie: JSESSIONID=D774019940B30BC65709C15197A13B0A; Path=/server
Location: http://127.0.0.1:8080/server/ok.jsp
Content-Type: text/html
Content-Length: 0
Date: Sat, 10 Apr 2004 14:57:27 GMT
Server: Apache-Coyote/1.1
Connection: close

在我们再将Var1Value和Var2Value留空,再看看登录失败时的返回数据

HTTP/1.1 302 Moved Temporarily
Set-Cookie: JSESSIONID=21E3ECB8815AC7876A78D1479B30EB7D; Path=/server
Location: http://127.0.0.1:8080/server/error.jsp?msg=ó??§2?′??ú
Content-Type: text/html
Content-Length: 0
Date: Sat, 10 Apr 2004 15:00:22 GMT
Server: Apache-Coyote/1.1
Connection: close

从上面返回的两组数据中可以看到,当登录成功时,返回的数据包含Location: http://127.0.0.1:8080/server/ok.jsp,失败则包含Location:http://127.0.0.1:8080/server/error.jsp?msg=ó??§2?′??ú(这里没有处理中文编码,所以显示乱码),因此,我们在CorrectFlag中填写http://127.0.0.1:8080/server/ok.jsp,WrongFlag中填写Location: http://127.0.0.1:8080/server/error.jsp?msg=ó??§2?′??ú,现在再假设我要猜测用户zhang的密码,这时可以将Var1Value中填写zhang,Var2Value使用字典文件。我准备的字典文件内容如下:

iloveyou
loveyou
love
ILOVEYOU
LOVEYOU
LOVE
loveme
LOVEME
test
778852177885217788521
77885217788521
7788521
521521521
521521
521
520520520
520520
520
zhang
772587725877258
7725877258
77258
258258258
258258
258
sina
sohu
163
263
(最后一行要留空)

此时界面应该如下:

然后Start,结果如下

注意:

1、选择关键字最好是尽量靠前,这样会使网络传输的数据量比较小

2、能务必填写CorrectFlag,也就是说你必须知道登录正确的关键字(这也是提高速度的一个方面,同时,如果仅通过错误的关键字来猜测密码是否正确比较困难,这是由于关键字比较难找,最重要的是,如果不填写CorrectFlag,目前不能正常工作:))

213月/100

PHP抓取网页和分析

发布在 邵珠庆

<?PHP

//$url = "http://news.google.cn/news/section?pz=1&cf=all&ned=ccn&topic=i&ict=ln";
$url = "http://news.google.cn/news/section?pz=1&cf=all&ned=ccn&topic=t&ict=ln";
$lines_array = file($url);
$lines_string = implode('', $lines_array);

eregi('<head>(.*)</head>', $lines_string, $head1);
eregi('<table>(.*)</table>', $lines_string, $head2);
eregi('<div>(.*)</div>', $head2[0], $head3);
echo $head1[0];
echo $head3[0];

?>

 

译者:limodou
抓取和分析一个文件是非常简单的事。这个教程将通过一个例子带领你一步一步地去实现它。让我们开
始吧!

首先,我首必须决定我们将抓取的URL地址。可以通过在脚本中设定或通过$QUERY_STRING传递。为了简
单起见,让我们将变量直接设在脚本中。

<? $url = 'http://www.php.net'; ?>

第二步,我们抓取指定文件,并且通过file()函数将它存在一个数组里。

<? $url = 'http://www.php.net'; $lines_array = file($url); ?>

好了,现在在数组里已经有了文件了。但是,我们想分析的文本可能不全在一行里面。为了解决这个文
件,我们可以简单地将数组$lines_array转化成一个字符串。我们可以使用implode(x,y)函数来实现它。如
果在后面你想用explode(将字符串变量数组),将x设成"|"或"!"或其它类似的分隔符可能会更好。但是出于
我们的目的,最好将x设成空格。y是另一个必要的参数,因为它是你想用implode()处理的数组。

<? $url = 'http://www.php.net'; $lines_array = file($url); $lines_string = implode('', $lines_array); ?>

现在,抓取工作就做完了,下面该进行分析了。出于这个例子的目的,我们想得到在<head>到</head>
之间的所有东西。为了分析出字符串,我们还需要叫做正规表达式的东西。

<? $url = 'http://www.php.net'; $lines_array = file($url); $lines_string = implode('', $lines_array); eregi("<head>(.*)</head>", $lines_string, $head); ?>

让我们看一下代码。正如你所见,eregi()函数按下面的格式执行:

eregi("<head>(.*)</head>", $lines_string, $head);

"(.*)"表示所有东西,可以解释为,"分析在<head>和</head>间的所以东西"。$lines_string是我们正
在分析的字符串,$head是分析后的结果存放的数组。
最后,我们可以输数据。因为仅在<head>和</head>间存在一个实例,我们可以安全的假设数组中仅存
在着一个元素,而且就是我们想要的。让我们把它打印出来吧。

<? $url = 'http://www.php.net'; $lines_array = file($url); $lines_string = implode('', $lines_array); eregi("<head>(.*)</head>", $lines_string, $head); echo $head[0]; ?>

这就是全部的代码了。

<?php

//获取所有内容url保存到文件
function  get_index ( $save_file ,  $prefix = "index_" ){
$count  =  68 ;
$i  =  1 ;
if ( file_exists ( $save_file )) @ unlink ( $save_file );
$fp  =  fopen ( $save_file ,  "a+" ) or die( "Open " .  $save_file  . " failed" );
while( $i < $count ){
$url  =  $prefix  .  $i  . ".htm" ;
echo  "Get " .  $url  . "..." ;
$url_str  =  get_content_url ( get_url ( $url ));
echo  " OK/n" ;
fwrite ( $fp ,  $url_str );
++ $i ;
}
fclose ( $fp );
}

//获取目标多媒体对象
function  get_object ( $url_file ,  $save_file ,  $split = "|--:**:--|" ){
if (! file_exists ( $url_file )) die( $url_file  . " not exist" );
$file_arr  =  file ( $url_file );
if (! is_array ( $file_arr ) || empty( $file_arr )) die( $url_file  . " not content" );
$url_arr  =  array_unique ( $file_arr );
if ( file_exists ( $save_file )) @ unlink ( $save_file );
$fp  =  fopen ( $save_file ,  "a+" ) or die( "Open save file " .  $save_file  . " failed" );
foreach( $url_arr  as  $url ){
if (empty( $url )) continue;
echo  "Get " .  $url  . "..." ;
$html_str  =  get_url ( $url );
echo  $html_str ;
echo  $url ;
exit;
$obj_str  =  get_content_object ( $html_str );
echo  " OK/n" ;
fwrite ( $fp ,  $obj_str );
}
fclose ( $fp );
}

//遍历目录获取文件内容
function  get_dir ( $save_file ,  $dir ){
$dp  =  opendir ( $dir );
if ( file_exists ( $save_file )) @ unlink ( $save_file );
$fp  =  fopen ( $save_file ,  "a+" ) or die( "Open save file " .  $save_file  . " failed" );
while(( $file  =  readdir ( $dp )) !=  false ){
if ( $file != "."  &&  $file != ".." ){
echo  "Read file " .  $file  . "..." ;
$file_content  =  file_get_contents ( $dir  .  $file );
$obj_str  =  get_content_object ( $file_content );
echo  " OK/n" ;
fwrite ( $fp ,  $obj_str );
}
}
fclose ( $fp );
}

//获取指定url内容
function  get_url ( $url ){
$reg  =  '/^http:////[^//].+$/' ;
if (! preg_match ( $reg ,  $url )) die( $url  . " invalid" );
$fp  =  fopen ( $url ,  "r" ) or die( "Open url: " .  $url  . " failed." );
while( $fc  =  fread ( $fp ,  8192 )){
$content  .=  $fc ;
}
fclose ( $fp );
if (empty( $content )){
die( "Get url: " .  $url  . " content failed." );
}
return  $content ;
}

//使用socket获取指定网页
function  get_content_by_socket ( $url ,  $host ){
$fp  =  fsockopen ( $host ,  80 ) or die( "Open " .  $url  . " failed" );
$header  =  "GET /" . $url  . " HTTP/1.1/r/n" ;
$header  .=  "Accept: */*/r/n" ;
$header  .=  "Accept-Language: zh-cn/r/n" ;
$header  .=  "Accept-Encoding: gzip, deflate/r/n" ;
$header  .=  "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1; .NET CLR 2.0.50727)/r/n";
$header  .=  "Host: " .  $host  . "/r/n" ;
$header  .=  "Connection: Keep-Alive/r/n" ;
//$header .= "Cookie: cnzz02=2; rtime=1; ltime=1148456424859; cnzz_eid=56601755-/r/n/r/n";
$header  .=  "Connection: Close/r/n/r/n" ;

fwrite ( $fp ,  $header );
while (! feof ( $fp )) {
$contents  .=  fgets ( $fp ,  8192 );
}
fclose ( $fp );
return  $contents ;
}

//获取指定内容里的url
function  get_content_url ( $host_url ,  $file_contents ){

//$reg = '/^(#|JavaScript.*?|ftp:////.+|http:////.+|.*?href.*?|play.*?|index.*?|.*?asp)+$/i';
//$reg = '/^(down.*?/.html|/d+_/d+/.htm.*?)$/i';
$rex  =  "/([hH][rR][eE][Ff])/s*=/s*['/"]*([^>'/"/s]+)[/"'>]*/s*/i" ;
$reg  =  '/^(down.*?/.html)$/i' ;
preg_match_all  ( $rex ,  $file_contents ,  $r );
$result  =  "" ;  //array();
foreach( $r  as  $c ){
if ( is_array ( $c )){
foreach( $c  as  $d ){
if ( preg_match ( $reg ,  $d )){  $result  .=  $host_url  .  $d . "/n" ; }
}
}
}
return  $result ;
}

//获取指定内容中的多媒体文件
function  get_content_object ( $str ,  $split = "|--:**:--|" ){
$regx  =  "/href/s*=/s*['/"]*([^>'/"/s]+)[/"'>]*/s*(.*?<//b>)/i" ;
preg_match_all ( $regx ,  $str ,  $result );

if ( count ( $result ) ==  3 ){
$result [ 2 ] =  str_replace ( "多媒体: " ,  "" ,  $result [ 2 ]);
$result [ 2 ] =  str_replace ( " " ,  "" ,  $result [ 2 ]);
$result  =  $result [ 1 ][ 0 ] .  $split  . $result [ 2 ][ 0 ] .  "/n" ;
}
return  $result ;
}

?>

2011月/070

Dreamweaver制作网页十几种技巧详解

发布在 邵珠庆

2007-11-20 11:59 作者: 邵珠庆  整理

1、灵活运用样式

熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,也可以在状态栏中的元素列表上单击右键来调用Style。虽然不同的方法达到的效果看似一样,但实际上产生的HTML代码则完全不同。比如用Custon Style来调用Style标准,在网页代码中就生成一个〈span〉标签,这样的标签一多就会使文件十分臃肿而且影响浏览器的解析速度,所以我们应尽量使用状态栏中的元素列表来调用Style。

2、活用Format Table命令

在复杂的网页设计中,表格的应用是最多的,因为利用表格可以自由地控制文本和图象在网页上出现的具体位置,从而使整个网页看上去紧凑统一。Dreamweaver在这方面也不甘落后,我们可以使用其中的“Format Table”(格式化表格)命令来快速地对表格应用预先设计好的样式。要使用预先设计好的样式,先将光标置于表格的任意一个单元格内,再选择“Command”→“Format Table”命令, 在随后出现的对话框中,从左边的列表中选择一个设计方案。按“Apply” 键来查看效果,如果不满意的话,还可以重新设置或者修改部分参数的值,如边界粗细,背景颜色等等。

3、同时链接到两个网页

我们都知道超级链接一次只能连到一个页面。如果我们要想一次在不同的框架页中打开文档,可以使用“Go To URL”JavaScript 行为。打开一个有框架的网页,选择文字或图象,然后从行为面板中选择“Go To URL”。我们会注意到Dreamweaver会在“Go To URL”对话框中显示所有可用的框架。选择其中一个我们想链接的框架并输入相应的URL后再选择另一个框架并输入另一个URL。

4、不给文件起中文名称

大家在制作好了网页后,通常会给网页起一个具有代表性的中文名称,一来能使人一看文件名就能大概了解文件所包含的内容,二来能够方便各个超级链接之间的相互调用。但如果你在Dreamweaver中这样做,就会发现Dreamweaver对中文文件名支持得不是太好,经常会有页面调用不正确的现象发生,所以我们以后在Dreamweaver中保存网页的时候,尽量用英文或者数字作为文件名称,这样就可以避免上面的出错现象。

5、巧妙设置字体分辨率

我们在制作网页的时候,经常有这种体会,那就是制作好的网页在本地计算机上浏览时很正常,但在另外一台计算机上浏览时发现原本漂亮的网页变得歪歪扭扭了,这是为什么呢?原来各个计算机的分辨率要使你的主页在不同的分辨率下都能正常显示,在 Dreamweaver中得到了较好的解决。在文档窗口的右下角,Dreamweaver 显示当前文档被设计成的分辨率大小。单击哪个数字,在弹出式菜单中可以为当前的页面指定显示分辨率,通过修改可以使你的主页更具灵活性。使不同分辨率的显示器都能较好地显示。

6、巧妙隐藏标签

如果在网页中插入了不可见的元素时,Dreamweaver会自动在页面上添加一个与之相应的元素标签,以便于我们选择不可见元素。但这并不全是件好事,比如我们在一个有很多层的页面中的第一行便插入一个表格,就会发现由于首行排列了太多的层元素标签而使得表格自动退到了页面的第二行,虽然在浏览时并不影响效果,但这确确实实会阻碍我们的工作。所以当我们觉得某个元素标签碍手碍脚时,就索性将之屏蔽掉。方法是按Ctrl+U打开Preferences面板,在Category中选中Invisibel Elements,在面板的右边将会出现所有的元素标签。只要将不需要的元素标签前的勾去掉,以后它就保证不会再出现了。

7、善用拖放技巧

我们在使用Dreamweaver编辑网页的时候,经常需要插入一些图象什么的,假设要插入的图象很多,按照常规方法来操作就显得非常麻烦。我们可以利用拖放技巧来很好地解决这个问题。首先我们把Dreamweaver的操作窗口变成活动窗口,以腾出空间来显示Explorer窗口,找到要插入的图象文件后,把它们一一用鼠标拖动到网页的适当部位,Dreamweaver将自动把这些图象的url添加到文件的HTML代码中,当然这里要求被拖动的图象文件必须是gif、jpg等web图象格式的文件。对于已经在网页中的图象也是一样,直接拖过来就可以了。但如果被拖动的图象上有超级链接,就不可以再使用拖动技术了,因为那时拖过来的仅仅是超级链接地址。

8、自动设置更新时间

我们知道一个网页要想获得更多的回头率,一个很重要的一条就是要不断更新。但对于我们这些个人网页来说,要天天及时更新恐怕不是很容易的事情。因此,我们希望网页能自动更新,下面就提供一个能自动更新修改时间的源代码,我们只要把这段源代码添加到…之间就能实现更新时间的目的了:

以下是引用片段:
<Script Language="javascript"> </style>;二是用鼠标依次单击Dreamweaver中的Text/Custom Style/Edit/Style Sheet/New/Redefine HTML Tag,并从中选择a,然后在decoration中选中none,最后单击确定就成功了。

  9、巧妙复制文字

在几个不同的应用程序中间相互复制文字,是我们在实际工作中可能要常做的事情。但是,如果我们从Dreamweaver中复制编辑区中的文字到另外一个应用程序的时候,HTML代码和文字将一起被复制过去了,那么我们该如何才能只把编辑区中的文字复制下来呢?我们知道,通常复制时都用快捷键 Ctrl - C 来操作,如果我们在复制的时候多按一个C键,那么Dreamweaver将只会复制选中的文字了。

10、善用快捷键

为了提高操作的效率,我们可以在Dreamweaver中使用快捷键,例如使用Ctrl-B或Ctrl-I来为文字应用黑体或斜体格式,也可以使用以下一些键盘快捷键来为选中的文本应用HTML格式:

Ctrl-0: 无格式   Ctrl-T: 段落   Ctrl-1: 标题 1  Ctrl-2: 标题 2 Ctrl-3: 标题 3   Ctrl-4: 标题 4   Ctrl-5: 标题 5   Ctrl-6: 标题 6

11、自动关闭网页

如果我们希望自己的网页在指定的时间内能自动关闭,不妨在网页源代码中的标签后面加入如下代码:

以下是引用片段:
<script LANGUAGE="javascript"> </script>

12、巧妙设置对象名称

我们在用Dreamweaver来制作非常复杂的效果时,有可能需要经常重复地使用某一个或者多个对象,例如我们经常需要定位某个特定的表格、图象等,如果我们没有给某一个网页中的多个对象取名的话,那么在重复应用这些对象的时候,可能很麻烦或者容易出错。为了能够方便调用这些对象,我们应该在每创建一个新的对象时,都记得给它取一个有代表性而且比较容易记忆的名称。在给这些对象命名时,我们可以通过对象的“属性”面板来操作就行了。

13、为图象链接增加动态效果

有时我们为了要达到一种逼真的效果,希望鼠标移动到某个链接上时能有动感产生。使用Dreamweaver可以很容易实现这种效果。设计时,我们首先需要准备两幅图象,第一幅是原始图象,第二幅是鼠标移动上去后的图象。接着用鼠标单击第一幅图,在属性面板中的链接栏中填上要链接的文件,然后单击键盘上的F8键,在弹出的Behaviors窗口中单击“+”号,随后选择“swap image”,在接着出现的窗口中选择第二幅图象,最后单击确定就可以了。