分类: 网页设计

  • wordpress访客来向和欢迎词

    1、把以下代码复制到 WordPress 主题的 functions.php 中:

    function show_refer_in(){
    $refer_info=$_SERVER[‘HTTP_REFERER’];
    $ban_list=array($_SERVER[“HTTP_HOST”]);
    for($ii=0;$ii<count($ban_list);$ii++){
    if(strpos($refer_info,$ban_list[$ii])){
    return;
    }
    }
    if($refer_info){
    preg_match(“/^(http:\/\/)?([^\/]+)/i”,
    $refer_info, $matches);
    $host = $matches[2];
    echo “<div id=\”hellobaby\”>欢迎来自 “.$host.” 的朋友!<br />推荐您 <b><a href=\”http://pzg.me\” target=\”_blank\”>点击这里</a></b> 订阅我的博客 o(∩_∩)o<div class=\”closebox\”><a href=\”javascript:void(0)\” onclick=\”$(‘#hellobaby’).slideUp(‘slow’);$(‘.closebox’).css(‘display’,’none’);\” title=\”关闭\”>×</a></div></div>”;
    }
    }
    2、在主题文件的任何部位调用以下函数,我建议是放在 footer.php 中:

    <?php show_refer_in();?>
    3、接下来样式部分仅供参考:

    #hellobaby {
    background:#000000;
    border:1px solid #B3B3B3;
    color:#FFFFFF;
    font-size:14px;
    opacity:0.7;
    filter:alpha(opacity=70);
    padding:10px;
    position:absolute;
    right:0;
    top:250px;
    }

  • 部分wordpress函数

    set_transient(), get_transient(), delete_transient()
    这个函数类似于用于存储检索选项数据库表单的get_options()以及update_options()函数。 他们的主要区别在于,你可以给这个临时API函数传递一个时间参数,作为数据库输入的过期日。当参数显示的时间到达之后,输入会被移除。如果你需要缓存数据或查询某个短期时间内的结果,这会是个相当有用的函数。

    set_transient的参数:

    set_transient($transient, $value, $expiration);
    将某个值保留在数据库中一小时:

    set_transient(‘the_name’, $special_query_results, 60*60);
    结果值:

    $value = get_transient(‘the_name’);
    WordPress “定时任务”函数

    wp_schedule_event(time(), ‘hourly’, ‘my_schedule_hook’);
    如果你需要定时执行某段代码,像是检查RSS订阅、数据库备份或是重设数据库值等,就可以用到这个函数。

    WordPress HTTP API

    wp_remote_get( $url, $args = array() );
    这是个用于检索网页内容的简单函数。函数把检索结果存储在一个数组里。你不仅可以得到网页的结果内容,还可以获取网页的页头信息和相应代码。

    轻松获取RSS 订阅

    $feed = fetch_feed( $uri );
    fetch_feed是一个用来获取订阅内容的简单WordPress函数。这个函数可以检索、分析并自动缓存订阅内容。

    WordPress邮件函数

    wp_mail()  wp_mail( $to, $subject, $message, $headers, $attachments );
    示例:

    Example:   
    $to = ‘Example@Example.com’; 
    $subject = ‘Hello!’; 
    $message = ‘This message was sent by wordpress’   
    $mail = wp_mail($to, $subject, $message);   
    if($mail) echo ‘Mail delivered’;
    相当简单实用的函数,利用这个函数你可以发送页头信息和附件、普通文本、HTML信息以及其他各种选项。

    计时函数

    human_time_diff( $from, $to )
    这个函数显示出的时间效果不是普通的时间格式,而是“XXX发布于XXX小时前”这样。

    WordPress get_comments函数

    get_comments()
    在评论循环外检索评论内容。

    字符串验证

    wp_kses($string, $allowed_html, $allowed_protocols);
    如果你需要过滤不受信任的用户输入内容,wp_kses会是个很实用的函数。这个函数确保$string中只出现经许可的HTML元素名称、属性和属性值以及正常的HTML实体。

    WordPress文本转换

    wptexturize()
    这个函数把常用的字符串转换成印刷时采用的正确符号,比如破折号、省略号等,有时也会为某些段落加上排版引号。

    wpautop()
    给字符串添加<p>标签

    WordPress短码API

    add_shortcode(), do_shortcode()
    add_shortcode()可以快速为你的日志内容创建宏。假设你希望把日志里的某些内容包围在一个div块里,并且加上若干类和id,让你可以创建多个内容栏。你可以用HTML编辑器进行编辑,然后输入下面的内容:

    <div class=’one_third’>内容</div>
    用PHP函数生成WordPress日志wp_insert_post() 这个函数在数据库中插入文章页面和自定义文章类型。它会过滤变量并执行检查,补充日期/时间等缺失变量。如果用户可以通过你的网站前台提交内容,这个函数会相当有帮助。

    用PHP函数生成WordPress评论

    wp_insert_comment()
    和wp_insert_posts类似,不过wp_insert_comment插入的是评论。

    WordPress对象缓存

    wp_cache_add(),  wp_cache_set(),  wp_cache_get(),  wp_cache_delete, wp_cache_replace(), wp_cache_flush
    WP_Object_Cache是WordPress中用以缓存数据的类。

    禁止执行WordPress任务

    wp_die()
    wp_die终止WordPress运行,显示HTML错误信息。

    这个函数与PHP函数die()互为补充。HTML信息显示给用户。推荐仅在进程不能再继续时才使用该函数。

  • WEB前端开发规范文档

    规范目的

    为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发. 本文档如有不对或者不合适的地方请及时提出, 经讨论决定后方可更改.

    基本准则

    符合web标准, 语义化html, 结构表现行为分离, 兼容性优良. 页面性能方面, 代码要求简洁明了有序, 尽可能的减小服务器负载, 保证最快的解析速度.

    文件规范

    1. html, css, js, images文件均归档至<系统开发规范>约定的目录中;

    2. html文件命名: 英文命名, 后缀.htm. 同时将对应界面稿放于同目录中, 若界面稿命名为中文, 请重命名与html文件同名, 以方便后端添加功能时查找对应页面;

    3. css文件命名: 英文命名, 后缀.css. 共用base.css, 首页index.css, 其他页面依实际模块需求命名.;

    4. Js文件命名: 英文命名, 后缀.js. 共用common.js, 其他依实际模块需求命名.

    html书写规范

    1. 文档类型声明及编码: 统一为html5声明类型<!DOCTYPE html>; 编码统一为<meta charset=”utf-8″ />, 书写时利用IDE实现层次分明的缩进;

    2. 非特殊情况下样式文件必须外链至<head>…</head>之间;非特殊情况下JavaScript文件必须外链至页面底部;

    3. 引入样式文件或JavaScript文件时, 须略去默认类型声明, 写法如下:

    <link rel=”stylesheet” href=”…” />

    <style>…</style>

    <script src=”…”></script>

    4. 引入JS库文件, 文件名须包含库名称及版本号及是否为压缩版, 比如jquery-1.4.1.min.js; 引入插件, 文件名格式为库名称+插件名称, 比如jQuery.cookie.js;

    5. 所有编码均遵循xhtml标准, 标签 & 属性 & 属性命名 必须由小写字母及下划线数字组成, 且所有标签必须闭合, 包括br (<br />), hr(<hr />)等; 属性值必须用双引号包括;

    6. 充分利用无兼容性问题的html自身标签, 比如span, em, strong, optgroup, label,等等; 需要为html元素添加自定义属性的时候, 首先要考虑下有没有默认的已有的合适标签去设置, 如果没有, 可以使用须以”data-”为前缀来添加自定义属性,避免使用”data:”等其他命名方式;

    7. 语义化html, 如 标题根据重要性用h*(同一页面只能有一个h1), 段落标记用p, 列表用ul, 内联元素中不可嵌套块级元素;

    8. 尽可能减少div嵌套, 如<div class=”box”><div class=”welcome”>欢迎访问XXX, 您的用户名是<div class=”name”>用户名</div></div></div>完全可以用以下代码替代: <div class=”box”><p>欢迎访问XXX, 您的用户名是<span>用户名</span></p></div>;

    9. 书写链接地址时, 必须避免重定向,例如:href=”http://itaolun.com/”, 即须在URL地址后面加上“/”;

    10. 在页面中尽量避免使用style属性,即style=”…”;

    11. 必须为含有描述性表单元素(input, textarea)添加label, 如<p>姓名: <input type=”text” id=”name” name=”name” /></p>须写成:<p><label for=”name”>姓名: </label><input type=”text” id=”name” /></p>

    12. 能以背景形式呈现的图片, 尽量写入css样式中;

    13. 重要图片必须加上alt属性; 给重要的元素和截断的元素加上title;

    14. 给区块代码及重要功能(比如循环)加上注释, 方便后台添加功能;

    15. 特殊符号使用: 尽可能使用代码替代: 比如 <(<) & >(&gt;) & 空格( ) & ?(?) 等等;

    16. 书写页面过程中, 请考虑向后扩展性;

    17. class & id 参见 css书写规范.

    css书写规范

    1. 编码统一为utf-8;

    2. 协作开发及分工: i会根据各个模块, 同时根据页面相似程序, 事先写好大体框架文件, 分配给前端人员实现内部结构&表现&行为; 共用css文件base.css由i书写, 协作开发过程中, 每个页面请务必都要引入, 此文件包含reset及头部底部样式, 此文件不可随意修改;

    3. class与id的使用: id是唯一的并是父级的, class是可以重复的并是子级的, 所以id仅使用在大的模块上, class可用在重复使用率高及子级中; id原则上都是由我分发框架文件时命名的, 为JavaScript预留钩子的除外;

    4. 为JavaScript预留钩子的命名, 请以 js_ 起始, 比如: js_hide, js_show;

    5. class与id命名: 大的框架命名比如header/footer/wrapper/left/right之类的在2中由i统一命名.其他样式名称由 小写英文 & 数字 & _ 来组合命名, 如i_comment, fontred, width200; 避免使用中文拼音, 尽量使用简易的单词组合; 总之, 命名要语义化, 简明化.

    6. 规避class与id命名(此条重要, 若有不明白请及时与i沟通):

    a, 通过从属写法规避, 示例见d;

    b, 取父级元素id/class命名部分命名, 示例见d;

    c, 重复使用率高的命名, 请以自己代号加下划线起始, 比如i_clear;

    d, a,b两条, 适用于在2中已建好框架的页面, 如, 要在2中已建好框架的页面代码<div id=”mainnav”></div>中加入新的div元素,

    按a命名法则: <div id=”mainnav”><div class=”firstnav”>…</div></div>,

    样式写法:  #mainnav  .firstnav{…….}

    按b命名法则: <div id=”mainnav”><div class=”main_firstnav”>…</div></div>,

    样式写法:  .main_firstnav{…….}

    7. css属性书写顺序, 建议遵循 布局定位属性–>自身属性–>文本属性–>其他属性. 此条可根据自身习惯书写, 但尽量保证同类属性写在一起. 属性列举: 布局定位属性主要包括: margin & padding & float(包括clear) & position(相应的 top,right,bottom,left) & display & visibility & overflow等; 自身属性主要包括: width  &  height  &  background  &  border; 文本属性主要包括: font & color & text-align & text-decoration & text-indent等;其他属性包括: list-style(列表样式) & vertical-vlign & cursor & z-index(层叠顺序)  & zoom等. 我所列出的这些属性只是最常用到的, 并不代表全部;

    8. 书写代码前, 考虑并提高样式重复使用率;

    9. 充分利用html自身属性及样式继承原理减少代码量, 比如:

    <ul class=”list”><li>这儿是标题列表<span>2010-09-15</span></ul>

    定义

    ul.list li{position:relative}  ul.list li span{position:absolute; right:0}

    即可实现日期居右显示

    10. 样式表中中文字体名, 请务必转码成unicode码, 以避免编码错误时乱码;

    11. 背景图片请尽可能使用sprite技术, 减小http请求, 考虑到多人协作开发, sprite按模块制作;

    12. 使用table标签时(尽量避免使用table标签), 请不要用width/ height/cellspacing/cellpadding等table属性直接定义表现, 应尽可能的利用table自身私有属性分离结构与表现, 如thead,tr,th,td,tbody,tfoot,colgroup,scope; (cellspaing及cellpadding的css控制方法: table{border:0;margin:0;border-collapse:collapse;} table th, table td{padding:0;} , base.css文件中我会初始化表格样式)

    13. 杜绝使用<meta http-equiv=”X-UA-Compatible” content=”IE=7″ /> 兼容ie8;

    14. 用png图片做图片时, 要求图片格式为png-8格式,若png-8实在影响图片质量或其中有半透明效果, 请为ie6单独定义背景:

    _background:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop, src=’img/bg.png’);

    15. 避免兼容性属性的使用, 比如text-shadow || css3的相关属性;

    16. 减少使用影响性能的属性, 比如position:absolute || float ;

    17. 必须为大区块样式添加注释, 小区块适量注释;

    18. 代码缩进与格式: 建议单行书写, 可根据自身习惯, 后期优化i会统一处理;

    JavaScript书写规范

    1. 文件编码统一为utf-8, 书写过程过, 每行代码结束必须有分号; 原则上所有功能均根据XXX项目需求原生开发, 以避免网上down下来的代码造成的代码污染(沉冗代码 || 与现有代码冲突 || …);

    2. 库引入: 原则上仅引入jQuery库, 若需引入第三方库, 须与团队其他人员讨论决定;

    3. 变量命名: 驼峰式命名. 原生JavaScript变量要求是纯英文字母, 首字母须小写, 如iTaoLun;

    jQuery变量要求首字符为’_’, 其他与原生JavaScript 规则相同, 如: _iTaoLun;

    另, 要求变量集中声明, 避免全局变量.

    4. 类命名: 首字母大写, 驼峰式命名. 如 ITaoLun;

    5. 函数命名: 首字母小写驼峰式命名. 如iTaoLun();

    6. 命名语义化, 尽可能利用英文单词或其缩写;

    7. 尽量避免使用存在兼容性及消耗资源的方法或属性, 比如eval() & innerText;

    8. 后期优化中, JavaScript非注释类中文字符须转换成unicode编码使用, 以避免编码错误时乱码显示;

    9. 代码结构明了, 加适量注释. 提高函数重用率;

    10. 注重与html分离, 减小reflow, 注重性能.

    图片规范

    1. 所有页面元素类图片均放入img文件夹, 测试用图片放于img/demoimg文件夹;

    2. 图片格式仅限于gif || png || jpg;

    3. 命名全部用小写英文字母 || 数字 || _ 的组合,其中不得包含汉字 || 空格 || 特殊字符;尽量用易懂的词汇, 便于团队其他成员理解; 另, 命名分头尾两部分, 用下划线隔开, 比如ad_left01.gif || btn_submit.gif;

    4. 在保证视觉效果的情况下选择最小的图片格式与图片质量, 以减少加载时间;

    5. 尽量避免使用半透明的png图片(若使用, 请参考css规范相关说明);

    6. 运用css sprite技术集中小的背景图或图标, 减小页面http请求, 但注意, 请务必在对应的sprite psd源图中划参考线, 并保存至img目录下.

    注释规范

    1. html注释: 注释格式 <!–这儿是注释–>, ’–’只能在注释的始末位置,不可置入注释文字区域;

    2. css注释: 注释格式 /*这儿是注释*/;

    3. JavaScript注释, 单行注释使用’//这儿是单行注释’ ,多行注释使用 /* 这儿有多行注释 */;

    开发及测试工具约定

    建议使用Aptana || Dw || Vim , 亦可根据自己喜好选择, 但须遵循如下原则:

    1. 不可利用IDE的视图模式’画’代码;

    2. 不可利用IDE生成相关功能代码, 比如Dw内置的一些功能js;

    3. 编码必须格式化, 比如缩进;

    测试工具: 前期开发仅测试FireFox & IE6 & IE7 & IE8 , 后期优化时加入Opera & Chrome & Safari;

    建议测试顺序: FireFox–>IE7–>IE8–>IE6–>Opera–>Chrome–>Safari, 建议安装firebug及IE Tab Plus插件.

    其他规范

    1. 开发过程中严格按分工完成页面, 以提高css复用率, 避免重复开发;

    2. 减小沉冗代码, 书写所有人都可以看的懂的代码. 简洁易懂是一种美德. 为用户着想, 为服务器着想.

  • 网站更换模板须注意事项

    最近看到了一篇文章是在说网站更换模板要注意那些地方是不能改动的,否则这些是会导致搜索引擎对其进行惩罚的。我大概看了下文章内容,这个内容我稍后在后面会贴出主要内容部分,注意的地方在 标题 关键词 摘要 H标签 这几个因素上面,那么我相信这文章写出来一定是经过作者的反复试验得出的结论,这样就是说搜索引擎对网站的检索是标记性的记住几个关键标签,会把网页自动翻译成所谓的“百度地图”格式。那么接下来贴出文章参考一下。

    一:注意Title的变化。

    Title是最重要的部分,搜索引擎的蜘蛛首先会抓取这里,所以在更换模板时首先看此部分是否和原模板相同,如果别人制作的模板Title与你模板Title不同,由于模板<title></title>代码的结构不同,输出的Title也不同,那么应该把新模板的Title改成和老模板一致,因为搜索引擎收录的是老模板的Title。

    还有一点,通常在使用CMS时,如DEDEcms,每篇文章的Title都会有“Power by DedeCMS”,如果去掉了,新模板则也应去掉。

    二:注意keywords 和description的变化。

    最近看了下百度和google的SEO指南,发现keywords已经被搜索引擎抛弃了,我重点说下description,也就是网页描述。卢松松就拿Z-blog来说明,有的博客模板没有description,有的就有,或者有的模板description采用文章的简介标签部分,而有的则采用description+标题+关键字,所以更换模板时也要考虑到description描述部分。
    三:注意H1、H2、H3、H4的变化。

    这些都是HTML常用语法,按照SEO优化方法, 在更换模板时切忌注意新模板的H1-H6标签是否和老模板一致,如果不一致,就改回老模板的样式。这里还有一点是要提醒大家的,在标签中出现关键词是有利于优化的,如你在做“网络推广”这个关键词,那么<h1></h1>或<h2></h2>中尽量加上“网络推广”这几个字。

    H1 — 大标题,放置于导航以上的部分,全站通用,用来诠释整个网站的内容,应包含网站主关键字,但切忌不要进行关键字堆砌。通常H1在一个页面只能出现一次,多数模板把<h1></h1>作为网站名称使用。

    H2 — 副标题,在博客通常用作文章标题来使用。H3 —小标题,通常用于栏目介绍,如内容页右侧“最新文章”“最新评论及回复”等栏目。H4、H5、H6是同样道理,如H4可以用在文章的摘要部分,这三个没有前面几个常用,大家只要记得这几个标签是降序即可,即H1最重要,H2其次,以此推类。

    总结,最近我也在把百度和google优化指南对比着看,我尽量满足这两份指南对模板的要求,也写下此文。以上几个是卢松松总结出更换模板的注意事项,希望对大家有用。更换模板就一句话,尽量不要变这些部分,实在要变也先从部分开始,一点点变。如果你不会懂HTML,那么请直接把老模板的Title、description和h1、h2标签部分复制替换到新模板上即可,如本文插图所示。

  • JavaScript 编码规范建议

    JavaScript 编码规范建议

    本文就 JavaScript 编码过程中涉及的排版、命名、声明、作用域、及一些特殊符号的使用等方面,根据个人在学习工作中的总结,给出自己的一些建议,并分析其中缘由,以供参考。

    JavaScript 文件引用

    JavaScript 程序应该尽量放在 .js 的文件中,需要调用的时候在 HTML 中以 <script src=”filename.js”> 的形式包含进来。JavaScript 代码若不是该 HTML 文件所专用的,则应尽量避免在 HTML 文件中直接编写 JavaScript 代码。因为这样会大大增加 HTML 文件的大小,无益于代码的压缩和缓存的使用。

    另外,<script src=”filename.js”> 标签应尽量放在文件的后面。这样会降低因加载 JavaScript 代码而影响页面中其它组件的加载时间。 (更多…)

  • WordPress实现投稿功能

    很多网站都想开放读者的投稿功能,接受读者的投稿,不仅可以丰富博客的内容,还可以增加与读者之间的沟通,可以说是一举多得的事情,何乐不为呢?WordPress本身并不提供投稿功能,但是WordPress拥有强大的扩展能力,我们可以自己来添加这个功能。

    实现用户投稿,有两种方法,一种是开放后台的注册功能,普通用户注册进去默认为投稿者,登陆进去即可添加文章(默认为草稿);另一种方法是在前台提供投稿表单,用户填写相应的表格即可。前一种方法实现起来比较简单,基本不需要博主配置太多东西,只是有些博主可能会觉得别扭,不愿让他人看到自己的博客后台;而后一种方法对投稿者来说方便了很多,博主也不用担心自己博客的后台隐私,只是该方法实现起来比较麻烦,需要配置的东西很多。本文也只将介绍后一种方法,希望对你有所帮助。

    一、添加投稿表单

    1、首先在当前主题的目录下新建一个php文件,命名为tougao-page.php,然后将page.php中的所有代码复制到tougao-page.php中;

    2、删除tougao-page.php开头的所有注释,即 /* 与 */ ,以及它们之间的所有内容;

    3、将 <?php the_content(); ?> 改成以下代码:

    <?php the_content(); ?>

    <form method=”post” action=”<?php echo $_SERVER[“REQUEST_URI”]; ?>”>
        <div style=”text-align: left; padding-top: 10px;”>
            <label>昵称:*</label>
        </div>
        <div>
            <input type=”text” size=”40″ value=”” name=”tougao_authorname” />
        </div>

        <div style=”text-align: left; padding-top: 10px;”>
            <label>E-Mail:*</label>
        </div>
        <div>
            <input type=”text” size=”40″ value=”” name=”tougao_authoremail” />
        </div>
                       
        <div style=”text-align: left; padding-top: 10px;”>
            <label>您的博客:</label>
        </div>
        <div>
            <input type=”text” size=”40″ value=”” name=”tougao_authorblog” />
        </div>
                       
        <div style=”text-align: left; padding-top: 10px;”>
            <label>文章标题:*</label>
        </div>
        <div>
            <input type=”text” size=”40″ value=”” name=”tougao_title” />
        </div>

        <div style=”text-align: left; padding-top: 10px;”>
            <label>分类:*</label>
        </div>
        <div style=”text-align: left;”>
            <?php wp_dropdown_categories(‘show_count=1&hierarchical=1’); ?>
        </div>
                       
        <div style=”text-align: left; padding-top: 10px;”>
            <label>文章内容:*</label>
        </div>
        <div>
            <textarea rows=”15″ cols=”55″ name=”tougao_content”></textarea>
        </div>
                       
        <br clear=”all”>
        <div style=”text-align: center; padding-top: 10px;”>
            <input type=”hidden” value=”send” name=”tougao_form” />
            <input type=”submit” value=”提交” />
            <input type=”reset” value=”重填” />
        </div>
    </form>

    二、添加表单处理代码

    在tougao-page.php中,将第一个 <?php 改成:

    <?php
       
    if( isset($_POST[‘tougao_form’]) && $_POST[‘tougao_form’] == ‘send’)
    {
        if ( isset($_COOKIE[“tougao”]) && ( time() – $_COOKIE[“tougao”] ) < 120 )
        {
            wp_die(‘您投稿也太勤快了吧,先歇会儿!’);
        }
           
        // 表单变量初始化
        $name = isset( $_POST[‘tougao_authorname’] ) ? trim(htmlspecialchars($_POST[‘tougao_authorname’], ENT_QUOTES)) : ”;
        $email =  isset( $_POST[‘tougao_authoremail’] ) ? trim(htmlspecialchars($_POST[‘tougao_authoremail’], ENT_QUOTES)) : ”;
        $blog =  isset( $_POST[‘tougao_authorblog’] ) ? trim(htmlspecialchars($_POST[‘tougao_authorblog’], ENT_QUOTES)) : ”;
        $title =  isset( $_POST[‘tougao_title’] ) ? trim(htmlspecialchars($_POST[‘tougao_title’], ENT_QUOTES)) : ”;
        $category =  isset( $_POST[‘cat’] ) ? (int)$_POST[‘cat’] : 0;
        $content =  isset( $_POST[‘tougao_content’] ) ? trim(htmlspecialchars($_POST[‘tougao_content’], ENT_QUOTES)) : ”;
       
        // 表单项数据验证
        if ( empty($name) || strlen($name) > 20 )
        {
            wp_die(‘昵称必须填写,且长度不得超过20字’);
        }
       
        if ( empty($email) || strlen($email) > 60 || !preg_match(“/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix”, $email))
        {
            wp_die(‘Email必须填写,且长度不得超过60字,必须符合Email格式’);
        }
       
        if ( empty($title) || strlen($title) > 100 )
        {
            wp_die(‘标题必须填写,且长度不得超过100字’);
        }
       
        if ( empty($content) || strlen($content) > 3000 || strlen($content) < 100)
        {
            wp_die(‘内容必须填写,且长度不得超过3000字,不得少于100字’);
        }
       
        $post_content = ‘昵称: ‘.$name.'<br />Email: ‘.$email.'<br />blog: ‘.$blog.'<br />内容:’.$content;
     
        $tougao = array(
            ‘post_title’ => $title,
            ‘post_content’ => $post_content,
            ‘post_category’ => array($category)
        );
        // 将文章插入数据库
        $status = wp_insert_post( $tougao );
     
        if ($status != 0)
        {
            setcookie(“tougao”, time(), time()+180);
            wp_die(‘投稿成功!感谢投稿!’);
        }
        else
        {
            wp_die(‘投稿失败!’);
        }
    }
    代码补充说明,如果你想让让投稿的文章立即发布,而不需要审核再编辑,那么请将以上代码45行改成:

    ‘post_content’ => $post_content, ‘post_status’ => ‘publish’,
    最后进入WordPress管理后台 – 页面 – 创建页面,标题为投稿(可以自己起名),内容填上投稿说明等,右侧可以选择模板,选择 tougao 即可好了,基本的投稿功能已经添加完毕,至于表单样式不好看,表单缺少你想要的项目等问题,你就自己添加css、表单项吧。

  • MYSQL数据表能存多少条数据

    两个方面来说,理论值和实际应用值。

    如果说只是为了存储的话 那么这个理论值是可以参考的
    在mysql中,每个数据库最多可创建20亿个表,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度)。当表中定义有varchar、nvarchar或varbinary类型列时,如果向表中插入的数据行超过8092字节时将导致Transact-SQL语句失败,并产生错误信息。SQL Server对每个表中行的数量没有直接限制,但它受数据库存储空间的限制。每个数据库的最大空间1048516TB,所以一个表可用的最大空间为1048516TB减去数据库类系统表和其它数据库对象所占用的空间。

    如果说要考虑到信息的读取和查询的话,个人建议20-30W 就已经需要做特殊处理了。

  • WordPress社区外挂BuddyPress

    很多架站软件都可以让你的网站变成完整的社群网站,其中最常见的就是Discuz论坛系统,透过他并搭配UCHome就可以让网站变成一个小型的社群网站,就跟Facebook一样可以有相簿、个人信息、博客、加好友等等,很方便。但你知道吗?世界上最多人使用的博客系统WordPress也可以摇身一变成为社群网站!

    BuddyPress是WordPress MU的一个外挂,后来被WordPress买下来了,感觉就是要强大WordPress的社群功能,由官方接手开发吧!不过别担心,这个外挂和WordPress一样都使是免费的,只要你安装了WordPress并启动MU功能就可以安装这个社群网站外挂,让你的网站也可以成为热闹的社群系统。

    越来越多网站走向社群平台,就连WordPress也迈向这一块市场,虽说WordPress本身会员机制很阳春,不过搭配上BuddyPress倒是可以增强一下下,实际上还是有别于论坛或是CMS系统的会员机制,只能透过外挂来加强或是期待未来官方可以着手于会员系统的开发、强化。

    这个BuddyPress是一款WordPress的外挂系统,必须搭配WordPress MU才可以使用。安装完外挂后会提供您一个互动的社群平台,可以建立群组(小圈圈)、发表个人即时讯息状态、私人短讯、个人名片、发表讨论主题(附有讨论区功能),若有启动博客功能,每个用户还可以拥有个人博客,只要有新文章发表都会显示在讨论区上面或是个人状态。如果弄成功的话,就会像WordPress.com这个网站一样喔!

    插件名称:BuddyPress

    官方网站:http://buddypress.org/

    备注事项:需先安装WordPress并启动WordPress MU功能。

  • WordPress代码实现相关文章的几种方法

         WordPress有很多实现相关文章功能的插件,插件的优点是配置简单,但是可能会对网站的速度造成一些小的影响,所以很多人还是比较喜欢用代码实现需要的功能,但是话又说回来了,代码实现也有缺点,就是配置复杂,不懂代码的人完全摸不着头脑或者只能照搬别人的代码,还不如用插件。

         这里我整理编写了几种用代码实现相关文章的方法,这其中会详细标明各部分代码的作用,以及如何自定义你想要的功能,希望对大家有所帮助,有什么问题可以给本文发表评论,我会及时给你回复。开始之前,说明一点,以下所有方法输出的HTML代码格式都是以下形式,你可以根据需要进行修改:

     <ul id=”xxx”>
        <li>* <a title=”文章标题1″ rel=”bookmark” href=”文章链接1″>文章标题1</a></li>
        <li>* <a title=”文章标题2″ rel=”bookmark” href=”文章链接2″>文章标题2</a></li>
        ……
    </ul> (更多…)

  • 禁用WordPress 3.0自动草稿存档

    解决WorPress 3.0.1自动草稿的方法是:依旧启用原先的disable revisions and autosave插件,然后编辑wp-admin/includes/post.php文件,在if ( $create_in_db ) {语句之前加入一行$create_in_db = false; 语句,经过实际测试,增加了这一行之后,新建日志,数据库就不会出现一篇自动存档的草稿了。

      但是这种修改WordPress源代码的方法是很不好的,这会导致以后每次WordPress升级,都需要维护修改一次,工作量会越来越大,不如用插件的方式解决,可惜目前实在找不到如何使用插件来解决这个问题,要是WordPress下一个版本能官方解决就好了。

  • php生成随机密码的几种方法

    使用PHP开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码。随机密码也就是一串固定长度的字符串,这里我收集整理了几种生成随机字符串的方法,以供大家参考。

    方法一:

    1、在 33 – 126 中生成一个随机整数,如 35,

    2、将 35 转换成对应的ASCII码字符,如 35 对应 #

    3、重复以上 1、2 步骤 n 次,连接成 n 位的密码

    该算法主要用到了两个函数,mt_rand ( int $min , int $max )函数用于生成随机整数,其中 $min – $max 为 ASCII 码的范围,这里取 33 -126 ,可以根据需要调整范围,如ASCII码表中 97 – 122 位对应 a – z 的英文字母,具体可参考 ASCII码表; chr ( int $ascii )函数用于将对应整数 $ascii 转换成对应的字符。

    function create_password($pw_length = 8  )
    {
        $randpwd = ”;
        for ($i = 0; $i < $pw_length; $i++)
        {
            $randpwd .= chr(mt_rand(33, 126));
        }
        return $randpwd;
    }

    // 调用该函数,传递长度参数$pw_length = 6
    echo create_password(6);
      (更多…)

  • 百度博客RPC服务地址

    记得刚开始使用wordpress的时候经常看到刚发表完的文章google就马上收录,后来了解到,wordpress有一个更新服务,官方则给了一个RPC的列表,把这个列表写在后台即可,这样就可以做到实时更新博客内容了,我从网上也找到了大量的RPC地址,并且做过几次的修改,把有用的留下,失效的剔除,但是百度我一直没有找到这个RPC地址的,今天抽空把百度的搜索引擎优化指南给看了,发现这里写出了百度的PRC地址,我很高兴的加进了我的博客,并且和大家分享下。

    百度PRC地址:http://ping.baidu.com/ping/RPC2

    另外经常我长时间的整理,我也拥有一份很强的RPC列表,共收录52个地址,可以算是最强的wordpress PRC地址列表了。这里我也共享出来。 (更多…)

  • XHTML DIV+CSS的基础知识学习(2)

    web标准(div+css) 的一列布局,包含以下几种形式:
    一列固定宽度
    一列固定宽度居中
    一列自适应宽度
    一列自适应宽度居中
    一列二至多块布局
    前一节我们回顾了xhtml基础和css基础部分,今天我们正式开始使用网页制作软件——adobe公司出品的dreamweaver来开始网页设计之旅。相信之前您已经用过这个软件了,具体怎么使用我就不讲了。为了照顾部分朋友,今天课程的css部分我们是以可视化生成方式,不过建议大家能手写的尽量还是手写,这样有助于提高效率。
    一、一列固定宽度
    我们先看一下一列固定宽度,首先要新建一个页面:
    注意:这里的文档类型是过渡型,目前我们采用这种宽松验证方式。

    接下来在页面中插入一个div标签,我们可以点击工具栏的“插入DIV标签”按钮,在打开的对话框中ID项给这个div命一下名,我们给它起个名叫pzg(名称根据自己需要命名)。

    插入div后,在右侧的css样式面板中,定义id为pzg的样式,确定后在打开的css编辑对话框的方框选项中设计宽度500,高度300。为了看清楚起见,我们把这个div设置个背景色,这样就能预览出大小和位置了。

    这里选择高级,然后在选择器中填写:#pzg,如果是选中div后,再点击添加,它会自动添加上。因为是定义ID,所以前面需要加#,后面会有id和class的详细讲解
    我们预览一下,看看在IE中的显示效果,一列固定宽度就这样做成了,简单吧!CSS代码及在IE中显示如下:
    <style type=”text/css”>
    #pzg { height: 300px; width: 400px; background: #99FFcc; }
    </style>
    二、一列固定宽度居中
    一列固定宽度居中和一列固定宽度相比,我们要解决的问题就是居中。这里我们用到css的外边距属性:margin。在IE6及以上版本和标准的浏览器当中,当设置一个盒模型的的margin:auto;时,可以让这个盒模型居中。我们下边在css样式表中加上这个属性看看效果:
    #pzg { height: 300px; width: 400px; background: #99FFcc; margin: auto; }
    在dreamweaver的设计视图中我们选中看看,是不是已经居中了,我们再在IE下预览一下,同样居中。
    三、一列自适应宽度
    自适应宽度是相对于浏览器而言,盒模型的宽度随着浏览器宽度的改变而改变。这时要用到宽度的百分比。当一个盒模型不设置宽度时,它默认是相对于浏览器显示的。我们把刚才的固定宽度例子中的宽度去掉看看:
    #pzg { height: 300px; background: #99FFcc;}

    有些朋友可能要问了,那为什么还有那么宽的白边呢?这个是由body默认的外边距造成的。当我们不用任何样式表进行定义时,body,h1-h6,ul等元素默认有外边距或其它样式的。这里我们在css样式中增加一项:body {margin:0;},就可以把body默认的外边距去掉,这时再预览一下,白边就没了。

    (更多…)

  • XHTML DIV+CSS的基础知识学习(1)

    今天发一些XHTML   DIV+CSS的基础知识,也就是我们常说的DIV+CSS。不过这里的DIV+CSS是一种错误的叫法,建议大家还是称之为web标准。

    学习本系列教程需有一定html和css基础,也就是指您之前做过网页,会用表格布局。如果您刚开始学习网页制作,不知道什么是表格布局及html和css,建议您先去充电,否则学习本教程会非常吃力或者根本就听不懂。
    由于时间关系,本教程只讲解一些基础知识,让您从原来的表格布局跨入到web标准(div+css)布局,会使用web标准制作出常见的页面,这也达到了本教程的目的。
    本教程多以实例形式循序渐进讲解,实例涉及到哪些关键点或难点就讲解什么,较少讲解概念。因为概念这些东西很难说明白,或者说明白你也不一定能听懂,听懂了也不一定能理解。所以把概念留给大家以后再深入研究。
    由于章节关系,没有把css和css hack单独分出,只是在用到的时候穿插入讲解了。html基础和css基础只在第一节中介绍了几点重要的。
    下面我们开始第一天的学习
    一、xhtml css基础知识
    首先说一下我们这节课的知识点
    文档类型
    语言编码
    html标签
    css样式
    css优先级
    css盒模型组成
    1)文档类型
    当我们用dreamweaver新建一下html格式文档时,查看源代码,会发现代码最上部有如下这句话:
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

    这句话标明本文档是过渡类型,另外还有框架和严格类型,目前一般都采用过渡类型,因为浏览器对XHTML的解析比较宽松,允许使用HTML4.01中的标签,但必须符合XHTML的语法。许多朋友在制作页面时,往往喜欢把这句删除掉,在这里建议大家一定要保留这句话,删除它后可能引起某些样式表失效或其它意想不到的问题。
    严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如。完整代码如下:
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
    框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下:
    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“>

    理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。
    2)语言编码
    接下来我们还会发现这样一句话:
    <meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />

    它标示文档的语言编码。就像我们平时所说的汉语、英语一样。这里的gb2312告诉浏览器,本文档采用简体中文编码;还有一种常用的编码是UTF-8编码,它是国际通用的编码。不管我们采用哪种编码,有一点就是包含的css样式表和其它文件也必须和本文档的编码一样,要不就会出现乱码。
    标准的XML文档语言定义:
    <?xml version=”1.0″ encoding=” utf-8″?>

    针对老版本的浏览器的语言定义:
    <meta http-equiv=”Content-Language” content=” utf-8″ />

    3)html标签
    html标签在页面中都必须结束。成对的标签以“/标签名”结束,有些单一的标签在本身的结尾打上/来结束,这是xhtml代码编写的规范。
    成对的标签:
    <head>{…}</head>
    <body>{…}</body>
    <div>{…}</div>
    <span>{…}</span>
    <p>{…}</p>
    ……
     
    单一的标签:
    <img src=”” />
    <br />
    …….

    还需说明一点的是按xhtml规范,标签必须用小写。
    4)css样式
    加载css样式有以下四种
    外部样式
    内部样式
    行内样式
    导入样式
    <link href=”layout.css” rel=”stylesheet” type=”text/css” />
     
    这种形式是把css单独写到一个css文件内,然后在源代码中以link方式链接。它的好处是不但本页可以调用,其它页面也可以调用,是最常用的一种形式。
    <style>
    h2 { color:#f00;}
    </style>
    这种形式是内部样式表,它是以<style>和</style>结尾,写在源代码的head标签内。这样的样式表只能针对本页有效。不能作用于其它页面。
    <p style=”font-size:18px;”>内部样式</p>
    这种在标签内以style标记的为内部样式,内部样式只针对标签内的元素有效,因其没有和内容相分离,所以不建议使用。
    @import url(“/css/global.css”);
    链接样式是以@import url标记所链接的外部样式表,它一般常用在另一个样式表内部。如layout.css为主页所用样式,那么我们可以把全局都需要用的公共样式放到一个global.css的文件中,然后在layout.css中以@import url(“/css/global.css”)的形式链接全局样式,这样就使代码达到很好的重用性。
    5)css优先级
    id优先级高于class
    后面的样式覆盖前面的
    指定的高于继承
    行内样式高于内部或外部样式
    总结:单一的(id)高于共用的(class),有指定的用指定的,无指定则继承离它最近

  • 主题添加导航菜单

    wordpress3.0以后就默认支持了menus功能,刚开始看到一些主题是提前支持菜单功能的,这次自己也给主题添加上了菜单功能,加上这个功能后主题就是适用于3.0以后的版本了。

    给主题添加menu功能主要是两部分,一个是在functions.php文件里面添加注册menu,另一个是在header.php文件里添加menu列表。

    functions.php

    里面添加

    <?php register_nav_menus(array(‘primary’ => ‘Primary Navigation’)); ?>

    header.php

    里面添加

    <?php wp_nav_menu(); ?>

    这样一个就可以支持新的menu功能了。

    更详细的方法可以参考neoease的WordPress 3.0 导航菜单 使用篇和开发篇。

  • wordpress3.01简体中文版

    WordPress 是一个注重美学、易用性和网络标准的个人信息发布平台。WordPress 虽为免费的开源软件,但其价值无法用金钱来衡量。使用 WordPress 可以搭建功能强大的网络信息发布平台,但更多的是应用于个性化的博客。针对博客的应用,WordPress 能让您省却对后台技术的担心,集中精力做好网站的内容。老是说, 3.0.1 英文版本已经出来好久了,汉化版也早就有人提供,经过久久的等待,官方正式的中文版本终于发布

  • CPanel中public_html和www目录关系

    受到传统思维的影响,国内绝大多数的朋友都认为,www 目录是程序安放目录。但是在国外,在linux下,在CPanel中,程序默认的安放目录是 public_html ,而不是 www 目录。

    目前Cpanel的程序已经升级到11.25。在这个版本之前,public_html和www的关系是不一样的。

    但从此以后,这两个目录已经没任何区别了。在哪个目录里操作,都会同步到另外一个目录。

    所以今后各位可以放心的使用了。

    但请注意,如果你使用的CPanel版本是11.24或更早之前的,请只在public_html目录中完成操作。

  • 导航菜单使用教程wp_nav_menu()

    添加导航菜单和菜单项

    你可以创建多个导航菜单,每个菜单里,可以添加自定义链接项、页面项和分类项进去。

    添加进去以后,你可以又再编辑每个项目的链接,输出文本和Title属性。

    你可以拖拽每个项目来排序菜单项。

    3、通过Widget输出导航菜单

    添加好菜单后,进入Appearance-》Widgets(外观-》小工具), 把Navigation Menu这个Widget拖到你的Sidebar模块里,选择一个菜单输出即要。

    4、通过手动代码输出导航菜单

    如果你的主题不支持Widget或你不想使用Widget,你可以使用函数wp_nav_menu()直接输出导航菜单:

    以下为引用的内容:

    <?php wp_nav_menu($args); ?>
     

    (更多…)

  • ASP中时间函数的使用(三)

    MonthName 函数
    描述:返回表明指定月份的字符串。
    语法:MonthName(month[, abbreviate])
    month: 必选。月份的数值定义。例如,一月是 1,二月是 2,以此类推。
    abbreviate: 可选。Boolean 值,表明月份名称是否简写。如果省略,默认值为 False,即不简写月份名称。

    Now 函数
    描述:根据计算机系统设定的日期和时间返回当前的日期和时间值。
    语法:Now

    Second 函数
    描述:返回 0 到 59 之间的一个整数(包括 1 和 59),代表一分钟内的某一秒。
    语法:Second(time)
    time 参数是任意可以代表时间的表达式。如果 time 参数中包含 Null,则返回 Null。

    Time 函数
    描述:返回 Date 子类型 Variant,指示当前系统时间。
    语法:Time

    TimeSerial 函数
    描述:返回一个 Date 子类型的 Variant,含有指定时、分、秒的时间。
    语法:TimeSerial(hour, minute, second)
    hour: 其值为从 0 (12:00 A.M.) 到 23 (11:00 P.M.) 的数值或数值表达式。
    minute: 任意数值表达式。
    second: 任意数值表达式。
    说明:要指定一时刻,如 11:59:59,TimeSerial 的参数取值应在可接受的范围内;也就是说,小时应介于 0-23 之间,分和秒应介于 0-59 之间。但是,可以使用数值表达式为每个参数指定相对时间,这一表达式代表某时刻之前或之后的时、分或秒数。以下样例中使用了表达式代替绝对时间数。TimeSerial 函数返回中午之前六小时 (12 – 6) 十五分钟的时间 (-15),即 5:45:00 A.M.。
    TimeSerial(12 – 6, -15, 0)
    当任何一个参数的取值超出可接受的范围时,它会正确地进位到下一个较大的时间单位中。例如,如果指定了 75 分钟,则这个时间被解释成一小时十五分钟。但是,如果任何一个参数值超出 -32768 到 32767 的范围,就会导致错误。如果使用三个参数直接指定的时间或通过表达式计算出的时间超出可接受的日期范围,也会导致错误。

    TimeValue 函数
    描述:返回包含时间的 Date 子类型的 Variant。
    语法:TimeValue(time)
    time 参数通常是代表从 0:00:00 (12:00:00 A.M.) 到 23:59:59 (11:59:59 P.M.) 的字符串表达式(包括 0:00:00 和 23:59:59)。不过,time 也可以是代表该范围内任何时间的表达式。如果 time 参数包含 Null,则返回 Null。
    说明:可以采用 12 或 24 小时时钟格式输入时间。例如 “2:24PM” 和 “14:24” 都是有效的 time 参数。
    如果 time 参数包含日期信息, TimeValue 函数并不返回日期信息。然而,如果 time 参数包含无效的日期信息,则会出现错误。

    Weekday 函数
    描述:返回代表一星期中某天的整数。
    语法:Weekday(date, [firstdayofweek])
    date: 可以代表日期的任意表达式。如果 date 参数中包含 Null,则返回 Null。
    firstdayofweek: 指定星期中第一天的常数。如果省略,默认使用 vbSunday。
    firstdayofweek 参数有如下设置:
    (以下分别为:常数 值 描述)
    vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
    vbSunday 1 星期日
    vbMonday 2 星期一
    vbTuesday 3 星期二
    vbWednesday 4 星期三
    vbThursday 5 星期四
    vbFriday 6 星期五
    vbSaturday 7 星期六
    Weekday 函数返回如下值:
    (以下分别为:常数 值 描述)
    vbSunday 1 星期日
    vbMonday 2 星期一
    vbTuesday 3 星期二
    vbWednesday 4 星期三
    vbThursday 5 星期四
    vbFriday 6 星期五
    vbSaturday 7 星期六

    WeekdayName 函数
    描述:返回一个字符串,表示星期中指定的某一天。
    语法:WeekDayName(weekday, abbreviate, firstdayofweek)
    weekday: 必选。星期中某天的数值定义。各天的数值定义取决于 firstdayofweek 参数设置。
    abbreviate: 可选。Boolean 值,指明是否缩写表示星期各天的名称。如果省略, 默认值为 False,即不缩写星期各天的名称。
    firstdayofweek: 可选。指明星期第一天的数值。关于数值,请参阅“设置”部分。
    firstdayofweek 参数有以下值:
    (以下分别为:常数 值 描述)
    vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
    vbSunday 1 星期日(默认)
    vbMonday 2 星期一
    vbTuesday 3 星期二
    vbWednesday 4 星期三
    vbThursday 5 星期四
    vbFriday 6 星期五
    vbSaturday 7 星期六

    Year 函数
    描述:返回一个代表某年的整数。
    语法:Year(date)
    date 参数是任意可以代表日期的参数。如果 date 参数中包含 Null,则返回 Null。

  • ASP中时间函数的使用(二)

    DateSerial 函数
    描述:对于指定的年、月、日,返回 Date 子类型的 Variant。
    语法:DateSerial(year, month, day)
    year: 从 100 到 9999 之间的数字或数值表达式。
    month: 任意数值表达式。
    day: 任意数值表达式。
    说明:要指定日期,如 1991 年 12 月 31 日,DateSerial 函数中每个参数的取值范围都应该是可接受的;即日的取值应在 1 和 31 之间,月的取值应在 1 和 12 之间。但是,也可以使用表示某日之前或之后的年、月、日数目的数值表达式为每个参数指定相对日期。
    以下样例中使用了数值表达式代替绝对日期。在这里,DateSerial 函数返回 1990 年 8 月 1 日之前十年 (1990 – 10) 零两个月 (8 – 2) 又一天 (1 – 1) 的日期:即 1980 年 5 月 31 日。
    DateSerial(1990 – 10, 8 – 2, 1 – 1)
    对于 year 参数,若取值范围是从 0 到 99,则被解释为 1900 到 1999 年。对于此范围之外的 year 参数,则使用四位数字表示年份(例如 1800 年)。
    当任何一个参数的取值超出可接受的范围时,则会适当地进位到下一个较大的时间单位。例如,如果指定了 35 天,则这个天数被解释成一个月加上多出来的日数,多出来的日数取决于其年份和月份。但是如果参数值超出 -32,768 到 32,767 的范围,或者由三个参数指定(无论是直接还是通过表达式指定)的日期超出了可以接受的日期范围,就会发生错误。

    DateValue 函数
    描述:返回 Date 子类型的 Variant。
    语法:DateValue(date)
    date 参数应是字符串表达式,表示从 100 年 1 月 1 日到 9999 年 12 月 31 日中的一个日期。但是,date 也可以是表示上述范围内的日期、时间或日期时间混合的任意表达式。
    说明:如果 date 参数包含时间信息,则 DateValue 不会返回时间信息。但是如果 date 包含无效的时间信息(如 “89:98″),就会出现错误。
    如果 date 是某一字符串,其中仅包含由有效的日期分隔符分隔开的数字,则 DateValue 将会根据为系统指定的短日期格式识别月、日和年的顺序。DateValue 还会识别包含月份名称(无论是全名还是缩写)的明确日期。例如,除了能够识别 12/30/1991 和 12/30/91 之外,DateValue 还能识别 December 30, 1991 和 Dec 30, 1991。
    如果省略了 date 的年份部分,DateValue 将使用计算机系统日期中的当前年份。

    Day 函数
    描述:返回 1 到 31 之间的一个整数(包括 1 和31),代表某月中的一天。
    语法:Day(date)
    date 参数是任意可以代表日期的表达式。如果 date 参数中包含 Null,则返回 Null。

    FormatDateTime 函数
    描述:返回表达式,此表达式已被格式化为日期或时间。
    语法:FormatDateTime(Date[,NamedFormat])
    Date: 必选。要被格式化的日期表达式。
    NamedFormat: 可选。指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate。
    NamedFormat 参数可以有以下值:
    (以下分别为:常数 值 描述)
    vbGeneralDate 0 显示日期和/或时间。如果有日期部分,则将该部分显示为短日期格式。如果有时间部分,则将该部分显示为长时间格式。如果都存在,则显示所有部分。 
    vbLongDate 1 使用计算机区域设置中指定的长日期格式显示日期。
    vbShortDate 2 使用计算机区域设置中指定的短日期格式显示日期。
    vbLongTime 3 使用计算机区域设置中指定的时间格式显示时间。
    vbShortTime 4 使用 24 小时格式 (hh:mm) 显示时间。

    Hour 函数
    描述:返回 0 到 23 之间的一个整数(包括 0 和 23),代表一天中的某一小时。
    语法:Hour(time)
    time 参数是任意可以代表时间的表达式。如果 time 参数中包含 Null,则返回 Null。

    Minute 函数
    描述:返回 0 到 59 之间的一个整数(包括 0 和59),代表一小时内的某一分钟。
    语法:Minute(time)
    time 参数是任意可以代表时间的表达式。如果 time 参数包含 Null,则返回 Null。

    Month 函数
    描述:返回 1 到 12 之间的一个整数(包括 1 和 12),代表一年中的某月。
    语法:Month(date)
    date 参数是任意可以代表日期的表达式。如果 date 参数中包含 Null,则返回 Null。