Supper Morio

css属性之–moz-border-radius 圆角属性-不过很遗憾不兼容ie

一月6

大家也知道,CSS3将可能在明年就正式的加入到了我们的设计中,而这篇教程也是来自国外。这里只是稍微的翻译下,希望大家能够从中领悟。

圆角效果,首先我们应该来创建一个DIV和简单的CSS吧。 css3 圆角

  1. <body>
  2. <div id=”box”></div>
  3. </body>

在CSS中,我们应该给他定义一个宽度和高度,当然还有背景。

  1. #box {
  2.         width:590px;
  3.         height:100px;
  4.         background-color:#6B86A6;
  5.         

好了,准备工作都已经就绪了,那么我们就开始做圆角吧,其实很简单。 css3 圆角

1.对4个角都设置。 css3 圆角

  1. #box { -moz-border-radius: 20px; }

 

  • #box { -moz-border-radius:20px 40px; }
  • 3.这种情况也比较特殊,是左上角为20px的圆角,右上和左下是40px的圆角,而右下则是5px的圆角。css3 圆角

    1. #box { -moz-border-radius:20px 40px 5px; }

    4.这种情况则比较规则,则是右上、右上、右下、左下依次是10px/20px/30px/40px的圆角。css3 圆角

    1. #box { -moz-border-radius:10px 20px 30px 40px; }

    5.分别控制4个位置的圆角。

    -moz-border-radius-topleft for the top-left corner;
    -moz-border-radius-topright for the top-right corner;
    -moz-border-radius-bottomright for the bottom-right corner;
    -moz-border-radius-bottomleft for the bottom-left corner;

    1. #box { -moz-border-radius-topright: 30px; }

    1. #box { -moz-border-radius-topleft: 30px; }

    1. #box { -moz-border-radius-topleft: 30px 15px; } 这种情况很特别,也就是会自动计算。一般不是会用到。

    6.分别控制上边的2个位置和下面的2个位置。

    1. #box { -moz-border-radius: 30px / 15px; }

    1. #box { -moz-border-radius: 10px 20px 30px 40px / 5px 10px 15px 20px; }

    7.Safari和Chrome的hack。

    1. #box { -webkit-border-radius: 10px 20px 30px 40px; } 大家应该看的懂吧。有规律的那种

    1. #box {
    2.    -webkit-border-top-left-radius: 10px;
    3.    -webkit-border-top-right-radius: 20px;
    4.    -webkit-border-bottom-right-radius: 30px;
    5.    -webkit-border-bottom-left-radius: 40px; } 控制各个位置

    1. #box { -webkit-border-top-left-radius: 30px 15px; }

    1. #box { -webkit-border-radius: 30px 15px; } 这种需要注意,没有了“/”

    好了,其实也真的很简单,比原来用图片来代替的过程不知道容易了多少。简单翻译结束。css3 圆角

     

    css3 圆角:css 3圆角实现方法(-moz-border-radius属性)

    利用PHP实现在线下载大文件

    十二月27

    在实现开发过程中, 我们会遇到下载问题。 在我们考虑的前提是安全,所以大家都设置了用php来实现下载, 就是header的应用, 而header的普通应用在应付小文件时,比如20MB,40MB的还行。 但如果项目中增加了许可下载1GB 4GB呢?比如游戏文件, iso文件, 那就普通的header就有点力不从心。 根据测试, 文件下载过程还是会实现, 不过下载下来的文件是0字节,即空文件。
    这就是大家一直讲的echo 大文件时速度慢,导致线程被中断等等问题怕造成的, 而我们这些应该要记住php还有一个缓存区,即ob_flush

      也许用如下的函数可以解决大文件下载。
    [code language=php]<?php
    $file_path = './download/download_cn.rar';

    //使用方法
    downFile($file_path);

    // 服务器文件路径,下载文件名字(默认为服务器文件名),是否许可用户下载方式(默认可选),速度限制(默认自动),文件类型(默认所有)
    function downFile($fileName, $fancyName = '', $forceDownload = true, $speedLimit = 0, $contentType = '') {
        if (!is_readable($fileName))
        {
            header("HTTP/1.1 404 Not Found");
            return false;
        }
      
        $fileStat = stat($fileName);
        $lastModified = $fileStat['mtime'];
      
        $md5 = md5($fileStat['mtime'] .'='. $fileStat['ino'] .'='. $fileStat['size']);
        $etag = '"' . $md5 . '-' . crc32($md5) . '"';
      
        header('Last-Modified: ' . gmdate("D, d M Y H:i:s", $lastModified) . ' GMT');
        header("ETag: $etag");
      
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lastModified)
        {
            header("HTTP/1.1 304 Not Modified");
            return true;
        }
      
        if (isset($_SERVER['HTTP_IF_UNMODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_UNMODIFIED_SINCE']) < $lastModified)
        {
            header("HTTP/1.1 304 Not Modified");
            return true;
        }
      
        if (isset($_SERVER['HTTP_IF_NONE_MATCH']) &&  $_SERVER['HTTP_IF_NONE_MATCH'] == $etag)
        {
            header("HTTP/1.1 304 Not Modified");
            return true;
        }
      
        if ($fancyName == '')
        {
            $fancyName = basename($fileName);
        }
      
        if ($contentType == '')
        {
            $contentType = 'application/octet-stream';
        }
      
        $fileSize = $fileStat['size'];
      
        $contentLength = $fileSize;
        $isPartial = false;
      
        if (isset($_SERVER['HTTP_RANGE']))
        {
            if (preg_match('/^bytes=(\d*)-(\d*)$/', $_SERVER['HTTP_RANGE'], $matches))
            {
                $startPos = $matches[1];
                $endPos = $matches[2];
      
                if ($startPos == '' && $endPos == '')
                {
                    return false;
                }
      
                if ($startPos == '')
                {
                    $startPos = $fileSize - $endPos;
                    $endPos = $fileSize - 1;
                }
                else if ($endPos == '')
                {
                    $endPos = $fileSize - 1;
                }
      
                $startPos = $startPos < 0 ? 0 : $startPos;
                $endPos = $endPos > $fileSize - 1 ? $fileSize - 1 : $endPos;
      
                $length = $endPos - $startPos + 1;
      
                if ($length < 0)
                {
                    return false;
                }
      
                $contentLength = $length;
                $isPartial = true;
            }
        }
      
        // send headers
        if ($isPartial)
        {
            header('HTTP/1.1 206 Partial Content');
            header("Content-Range: bytes $startPos-$endPos/$fileSize");
      
        }
        else
        {
            header("HTTP/1.1 200 OK");
            $startPos = 0;
            $endPos = $contentLength - 1;
        }
      
        header('Pragma: cache');
        header('Cache-Control: public, must-revalidate, max-age=0');
        header('Accept-Ranges: bytes');
        header('Content-type: ' . $contentType);
        header('Content-Length: ' . $contentLength);
      
        if ($forceDownload)
        {
            header('Content-Disposition: attachment; filename="' . rawurlencode($fancyName). '"');
        }
      
        header("Content-Transfer-Encoding: binary");
      
        $bufferSize = 2048;
      
        if ($speedLimit != 0)
        {
            $packetTime = floor($bufferSize * 1000000 / $speedLimit);
        }
      
        $bytesSent = 0;
        $fp = fopen($fileName, "rb");
        fseek($fp, $startPos);
        while ($bytesSent < $contentLength && !feof($fp) && connection_status() == 0 )
        {
            if ($speedLimit != 0)
            {
                list($usec, $sec) = explode(" ", microtime());
                $outputTimeStart = ((float)$usec + (float)$sec);
            }
      
            $readBufferSize = $contentLength - $bytesSent < $bufferSize ? $contentLength - $bytesSent : $bufferSize;
            $buffer = fread($fp, $readBufferSize);
      
            echo $buffer;
      
            ob_flush();
            flush();
      
            $bytesSent += $readBufferSize;
      
            if ($speedLimit != 0)
            {
                list($usec, $sec) = explode(" ", microtime());
                $outputTimeEnd = ((float)$usec + (float)$sec);
      
                $useTime = ((float) $outputTimeEnd - (float) $outputTimeStart) * 1000000;
                $sleepTime = round($packetTime - $useTime);
                if ($sleepTime > 0)
                {
                    usleep($sleepTime);
                }
            }
        }
        return true;
    }
    ?>[/code]

    PHP禁止重复post, 禁止快速刷新

    十二月27
    1. function function_check(){
    2.         $post_time = fun_getcookie(‘runtime’);  // 取得cookie ,有一个通用函数, 请自行设置一下.
    3.         define(‘GET_TIME’, time());
    4.         if(empty($_POST) === false){ // 确定动作是否是POST;
    5.                 if(empty($post_time) === false && GET_TIME – $post_time <=10){  // 如果post_time的时间与当前时间距离少于10 就报错,
    6.                         exit(‘系统无法识别你的操作’);
    7.                 }else {
    8.                         fun_setcookie(‘runtime’,GET_TIME);  // 第一次设置. 不停地设置更新初始时间
    9.                 }
    10.         } // 禁止post两次提交基本上完成.
    11.        
    12.         // 禁止快速刷新,
    13.         define(‘URL_SITE’,'http://’.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].(empty($_SERVER['QUERY_STRING']) === false? ‘?’.$_SERVER['QUERY_STRING']:”));
    14.         $md5 = md5(URL_SITE); // 将本页面url保存在md5中.
    15.         $referer_time = fun_getcookie($md5);  // 取cookie记录时间
    16.        
    17.         // 记录时间是加了秒钟, 如果当前时间-去记录时间,仍然为负数, 那就表示,它在9秒内刷新了两次.
    18.         if(empty($referer_time) === false  && GET_TIME – $referer_time < 0){
    19.                 exit(‘系统禁止快速刷新’);
    20.                 fun_setcookie($md5,0,-5); // 注销它
    21.         }else {
    22.                 fun_setcookie($md5,GET_TIME+9,10); // +9秒, 第三个参数请大于所加的秒数.
    23.         }
    24. }
    25. 用于禁止重复post 刷新post, 等非法操作. 快速刷新是个头痛的问题, 假如用户CTRL+F5不停刷新, 就ddos攻击了, 为此, 我们其实也可以用php来控制它.

    discuzx 表结构说明

    十二月24

    pre_common_admincp_cmenu后台菜单收藏表
    pre_common_admingroup管理组表
    pre_common_adminnote后台留言表
    pre_common_advertisement广告数据表
    pre_common_advertisement_custom自定义广告数据表
    pre_common_banned禁止访问表
    pre_common_cache通用缓存表
    pre_common_card充值卡密表
    pre_common_card_log充值卡密表
    pre_common_card_type卡片分类表
    pre_common_credit_log积分日志表
    pre_common_credit_rule_log积分规则日志表
    pre_common_credit_rule_log_field
    pre_common_credit_rule积分规则表
    pre_common_cron计划任务表
    pre_common_domain二级域名表
    pre_common_failedlogin失败登录表
    pre_common_friendlink友情链接表
    pre_common_relatedlink关联链接表
    pre_common_invite邀请表
    pre_common_mailcron邮件计划任务表
    pre_common_mailqueue邮件队列表
    pre_common_member用户主表
    pre_common_member_count用户统计表
    pre_common_member_field_forum用户论坛字段表
    pre_common_member_field_home用户家园字段表
    pre_common_member_action_log用户操作日志表
    pre_common_member_connectQQConnect用户表
    pre_common_member_log漫游用户日志表
    pre_common_member_profile用户栏目表
    pre_common_member_verify用户认证表
    pre_common_member_verify_info个人信息修改审核
    pre_common_member_profile_setting个人信息扩展表
    pre_common_member_security个人信息修改审核
    pre_common_member_status用户状态表
    pre_common_member_stat_field用户资料统计项
    pre_common_member_stat_fieldcache搜索统计项用户ID缓存表
    pre_common_member_stat_search用户资料由搜索保存的统计项
    pre_common_member_stat_searchcache搜索统计项用户ID缓存表
    pre_common_member_validate用户审核表
    pre_common_member_grouppm群发短消息用户记录表
    pre_connect_memberbindlogConnect 用户绑定/解绑记录表
    pre_connect_feedlogConnect feed日志表
    pre_connect_tlog微博日志表
    pre_common_uin_blackUIN 黑名单
    pre_common_grouppm群发短消息表
    pre_common_myapp漫游应用表
    pre_common_myinvite用户邀请表
    pre_common_nav自定义导航栏表
    pre_common_onlinetime在线时间表
    pre_common_regip注册IP限制表
    pre_common_secquestion验证问题数据表
    pre_common_session会员认证表
    pre_common_setting设置表
    pre_common_smiley表情表
    pre_common_stat趋势统计
    pre_common_statuser统计用户表
    pre_common_style风格表
    pre_common_stylevar风格变量表
    pre_common_syscache缓存数据表
    pre_common_template模板表
    pre_common_usergroup用户组表
    pre_common_usergroup_field会员用户组权限表
    pre_common_word词语过滤表
    pre_common_word_type词语过滤分类
    pre_common_tag标签表
    pre_common_tagitem标签内容表
    pre_forum_access访问权限表
    pre_forum_activity活动表
    pre_forum_activityapply活动申请表
    pre_common_addon扩展中心资源提供商
    pre_forum_announcement公告表
    pre_forum_threadimage主题图片表
    pre_forum_attachment附件索引表
    pre_forum_attachment_unused未使用附件表
    pre_forum_attachment_附件表
    pre_forum_attachment_1附件表
    pre_forum_attachment_2附件表
    pre_forum_attachment_3附件表
    pre_forum_attachment_4附件表
    pre_forum_attachment_5附件表
    pre_forum_attachment_6附件表
    pre_forum_attachment_7附件表
    pre_forum_attachment_8附件表
    pre_forum_attachment_9附件表
    pre_forum_attachtype附件类型表
    pre_forum_bbcodeDiscuz! 代码表
    pre_forum_creditslog转帐记录表
    pre_forum_debate辩论主题表
    pre_forum_debatepost辩论帖子表
    pre_forum_faq论坛帮助表
    pre_home_favorite收藏表
    pre_forum_forum版块表
    pre_forum_forumfield版块扩展表
    pre_forum_forum_threadtable版块存档信息
    pre_forum_forumrecommend版主推荐表
    pre_forum_imagetype图片 表情 头像等 分类
    pre_forum_medal勋章表
    pre_forum_medallog勋章日志表
    pre_common_member_magic用户道具数据表
    pre_forum_memberrecommend用户推荐表
    pre_forum_moderator版主表
    pre_forum_modwork论坛管理统计表
    pre_common_mytask我的任务表
    pre_forum_onlinelist在线列表定制
    pre_forum_order订单信息表
    pre_forum_groupfield群组扩展信息缓存
    pre_forum_groupinvite群组邀请
    pre_forum_groupranking群组排行
    pre_forum_groupuser群组成员
    pre_common_plugin插件表
    pre_common_pluginvar插件变量表
    pre_common_moderate审核数据表
    pre_forum_postlog漫游帖子日志
    pre_forum_threadlog漫游主题日志
    pre_forum_poll投票表
    pre_forum_pollvoter投票用户表
    pre_forum_polloption投票选项表
    pre_forum_post帖子表
    pre_forum_postcomment点评帖子表
    pre_forum_post_tableidpost分表协调表
    pre_forum_postposition抢楼帖楼层记录表
    pre_forum_poststick回帖置顶表
    pre_forum_promotion论坛推广
    pre_forum_ratelog帖子评分记录表
    pre_forum_relatedthread相关主题表
    pre_forum_rsscacherss缓存表
    pre_forum_replycredit主题回帖获得积分规则表
    pre_common_searchindex搜索缓存表
    pre_common_sphinxcounterSphinx 增量索引记录表
    pre_forum_spacecacheminispace缓存表
    pre_forum_statlog版块统计日志表
    pre_common_task论坛任务表
    pre_common_taskvar论坛任务设置表
    pre_forum_thread主题表
    pre_forum_threadmod主题管理记录表
    pre_forum_threadpartake主题参与者记录表
    pre_forum_threadrush抢楼设置表
    pre_forum_threadtype主题分类表
    pre_forum_trade商品数据表
    pre_forum_threadclass主题分类表
    pre_forum_tradecomment信用评价
    pre_forum_tradelog交易记录表
    pre_forum_typeoption分类信息设置项目表
    pre_forum_typeoptionvar分类信息项目数据表
    pre_forum_typevar分类信息对应项目表
    pre_forum_warning警告记录表
    pre_home_album相册表
    pre_home_appcreditlog
    pre_home_blacklist屏蔽黑名单表
    pre_common_block模块表
    pre_common_block_style模块模板表
    pre_common_block_item模块数据表
    pre_common_block_pic模块使用图片表
    pre_common_block_item_data模块推荐信息表
    pre_common_block_xml模块 XML 扩展类数据表
    pre_common_block_favorite模块收藏表
    pre_home_blog日志表
    pre_home_blogfield日志字段表
    pre_home_class
    pre_home_click表态动作
    pre_home_clickuser用户表态表
    pre_home_comment用户评论表
    pre_home_docomment用户记录回复表
    pre_home_doing用户记录表
    pre_home_feed站点feed表
    pre_home_feed_app应该feed表
    pre_home_friend用户好友表
    pre_home_friend_request申请好友表
    pre_home_friendlog用户好友动作日志表
    pre_common_magiclog道具日志表
    pre_common_magic道具数据表
    pre_home_notification通知表
    pre_home_pic家园图片表
    pre_home_picfield家园图片拓展表
    pre_home_poke用户招呼表
    pre_home_pokearchive用户招呼存档表
    pre_home_share用户分享表
    pre_home_show用户上榜表
    pre_home_userapp用户使用应用表
    pre_home_userappfield用户使用应用扩展表
    pre_home_visitor空间访问日志表
    pre_portal_article_title门户文章标题表
    pre_portal_article_content门户文章内容表
    pre_portal_article_count门户文章统计数据表
    pre_portal_article_trash门户文章回收站表
    pre_portal_comment门户评论表
    pre_portal_rsscache文章rss缓存表
    pre_portal_topic门户专题表
    pre_portal_topic_pic门户专题图片表
    pre_common_diy_dataDIY模板页面数据的存档表
    pre_common_template_block模板页面和模块的关联表
    pre_common_template_permissionDIY模板页面权限表
    pre_common_block_permission模块权限表
    pre_portal_category_permission文章分类权限表
    pre_portal_category门户 文章栏目表
    pre_common_process进程锁管理
    pre_common_admincp_group后台管理组
    pre_common_admincp_member后台管理成员
    pre_common_admincp_perm后台权限表
    pre_common_admincp_session后台session表
    pre_portal_attachment门户文章附件表
    pre_portal_article_related门户相关文章
    pre_home_specialuser特殊用户表
    pre_common_district地区表
    pre_forum_grouplevel群组等级表
    pre_forum_groupcreditslog群组积分日志表
    pre_home_blog_category日志系统栏目
    pre_home_album_category相册系统栏目
    pre_common_report用户举报表

    discuzX模版制作逐行分析详解(一: 头部分解)

    十二月23
    1. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
    2. <html xmlns=”http://www.w3.org/1999/xhtml”>
    3.         <head>
    4.          <!–下面这一行是获取编码的–>
    5.                 <meta http-equiv=”Content-Type” content=”text/html; charset={CHARSET}” />
    6.          <!–下面这几行是网页的标题,不建议删除Powered by Discuz!–>
    7.                 <title>{if !empty($topic['title'])}$topic['title'] {/if}{if !empty($_G['home_tpl_titles'])}{loop $_G['home_tpl_titles'] $value}$value – {/loop}{/if}{if !empty($space[username])} $space[username]- {/if}{if !empty($navtitle)}$navtitle{/if} $_G['setting']['bbname'] $_G['setting']['seotitle'] – Powered by Discuz!</title>
    8.          <!–下面这一行是 “后台-优化设置-搜索引擎优化-其它头部信息的内容” –>
    9.                 $_G['setting']['seohead']
    10.          <!–下面这几行应该不用说了吧,不知道?你可以用“DW-插入-HTML-文件头标签”这里看看–>
    11.                 <meta name=”keywords” content=”{if !empty($metakeywords)}$metakeywords,{/if}$_G['setting']['seokeywords']” />
    12.                 <meta name=”description” content=”{if !empty($metadescription)}$metadescription{/if} $_G['setting']['bbname'] $_G['setting']['seodescription'] – Discuz! Board” />
    13.                 <meta name=”generator” content=”Discuz! $_G['setting']['version']” />
    14.                 <meta name=”author” content=”Discuz! Team and Comsenz UI Team” />
    15.                 <meta name=”copyright” content=”2001-2010 Comsenz Inc.” />
    16.                 <meta name=”MSSmartTagsPreventParsing” content=”True” />
    17.                 <meta http-equiv=”MSThemeCompatible” content=”Yes” />
    18.         <!–下面这几行我的理解是判断登录人的身份然后加载头部和底部的模板,这里是加载头部。–>
    19.                 <!–{if defined(‘CURMODULE’) && ($_G['basescript'] == ‘forum’ || $_G['basescript'] == ‘group’) && (CURMODULE == ‘index’ || CURMODULE == ‘forumdisplay’ || CURMODULE == ‘group’)}–>$rsshead<!–{/if}–>
    20.          
    21.         <!–下面这一行是 加载整页css的,具体哪个css,不太清楚,–>
    22.                 {csstemplate}
    23.         <!–下面这一大段脚本是右上角那个DIY的,只是调用,内容是下面的div里显示的,不建议修改–>
    24.                 <script type=”text/javascript”>var STYLEID = ‘{STYLEID}’, STATICURL = ‘{STATICURL}’, IMGDIR = ‘{IMGDIR}’, VERHASH = ‘{VERHASH}’, charset = ‘{CHARSET}’, discuz_uid = ‘$_G[uid]‘, cookiepre = ‘{$_G[config][cookie][cookiepre]}’, cookiedomain = ‘{$_G[config][cookie][cookiedomain]}’, cookiepath = ‘{$_G[config][cookie][cookiepath]}’, attackevasive = ‘{$_G[config][security][attackevasive]}’, disallowfloat = ‘{$_G[setting][disallowfloat]}’, creditnotice = ‘{if $_G['setting']['creditnotice']}$_G['setting']['creditnames']{/if}’</script>
    25.                 <script type=”text/javascript” src=”{$_G[setting][jspath]}common.js?{VERHASH}”></script>
    26.                 <script type=”text/javascript” src=”{$_G[setting][jspath]}home_friendselector.js?{VERHASH}”></script>
    27.                 <!–{if $_G['basescript'] == ‘forum’ || $_G['basescript'] == ‘group’}–>
    28.                         <script type=”text/javascript” src=”{$_G[setting][jspath]}forum.js?{VERHASH}”></script>
    29.                 <!–{elseif $_G['basescript'] == ‘home’}–>
    30.                         <script type=”text/javascript” src=”{$_G[setting][jspath]}home_cookie.js?{VERHASH}”></script>
    31.                         <script type=”text/javascript” src=”{$_G[setting][jspath]}home_common.js?{VERHASH}”></script>
    32.                         <script type=”text/javascript” src=”{$_G[setting][jspath]}home_face.js?{VERHASH}”></script>
    33.                         <script type=”text/javascript” src=”{$_G[setting][jspath]}home_manage.js?{VERHASH}”></script>
    34.                 <!–{elseif $_G['basescript'] == ‘userapp’}–>
    35.                         <script type=”text/javascript” src=”{$_G[setting][jspath]}home_common.js?{VERHASH}”></script>
    36.                 <!–{elseif $_G['basescript'] == ‘portal’}–>
    37.                         <script type=”text/javascript” src=”{$_G[setting][jspath]}portal.js?{VERHASH}”></script>
    38.                 <!–{/if}–>
    39.                 <!–{if $_G['basescript'] != ‘portal’ && $_GET['diy'] == ‘yes’ && ($_G[mod] == ‘topic’ || $_G[group][allowdiy]) && !empty($_G['style']['tplfile'])}–>
    40.                         <script type=”text/javascript” src=”{$_G[setting][jspath]}portal.js?{VERHASH}”></script>
    41.                 <!–{/if}–>
    42.                 <!–{if $_GET[diy] == ‘yes’ && ($_G[mod] == ‘topic’ || $_G[group][allowdiy]) && !empty($_G['style']['tplfile'])}–>{subtemplate common/css_diy}<!–{/if}–>
    43.          
    44.         <!–到此为止,head部分就没有了,可以修改,但是需要对dz标签很熟悉,否则勿动!!–>
    45.          
    46.         </head>
    47.      
    48.         <!–body属性定义了一大堆属性,都是判断,我的理解是判断登陆人的身份,是否显示diy,正在求证–>
    49.         <body id=”nv_<!–{if $_G['basescript'] == ‘forum’ && !empty($_G['forum']) && $_G['forum']['status'] == 3}–>group<!–{else}–>$_G[basescript]<!–{/if}–>”>
    50.                 <!–{if ($_G[mod]!=’topic’ && $_G[group][allowdiy] && !empty($_G['style']['tplfile'])) || (!empty($_G['style']['tplfile']) && $_G[mod]==’topic’ && (($_G['group']['allowaddtopic'] && $topic[uid]==$_G[uid]) || $_G[group][allowmanagetopic]))}–>
    51.          
    52.         <!–下面就是diy按钮,好几行都是,无需修改–>
    53.                 <a id=”diy-tg” href=”javascript:openDiy();” title=”{lang open_diy}”><img src=”{STATICURL}image/diy/panel-toggle.png” alt=”DIY” /></a>
    54.                 <!–{/if}–>
    55.                 <div id=”append_parent”></div><div id=”ajaxwaitid”></div>
    56.                 <!–{if $_GET['diy'] == ‘yes’ && ($_G[mod] == ‘topic’ || $_G[group][allowdiy]) && !empty($_G['style']['tplfile'])}–>
    57.                         {template common/header_diy}
    58.                 <!–{/if}–>
    59.         <!–diy完事了–>
    60.          
    61.         <!– 下面这是判断专题的,如过没有专题或者使用了专题头部。 –>
    62.                 <!–{if empty($topic) || ($topic[useheader])}–>
    63.         <!–下面的是广告–>
    64.                 {ad/headerbanner/wp a_h}
    65.          
    66.                 <div id=”hd”>
    67.                         <div>
    68.                                 <div>
    69.                                          
    70.                     <h2><a href=”index.php” title=”$_G['setting']['bbname']“>{BOARDLOGO}</a></h2><!–这里是logo–>
    71.                                         <!–下面是搜索框 –>
    72.                     <!–{if $_G['setting']['search']}–>
    73.                                                 {eval $slist = array();}
    74.                                                 <!–{if $_G['setting']['search']['portal']['status'] && ($_G['group']['allowsearch'] & 1 || $_G['adminid'] == 1)}–>{block slist[portal]}<li><a href=”javascript:;”><label for=”mod_article”><input type=”radio” id=”mod_article” name=”mod” value=”portal”{if CURSCRIPT == ‘portal’} checked=”checked”{/if} />{lang article}</label></a></li>{/block}<!–{/if}–>
    75.                                                 <!–{if $_G['setting']['search']['forum']['status'] && ($_G['group']['allowsearch'] & 2 || $_G['adminid'] == 1)}–>{block slist[forum]}<li><a href=”javascript:;”><label for=”mod_thread”><input type=”radio” id=”mod_thread” name=”mod” value=”forum”{if CURSCRIPT == ‘forum’} checked=”checked”{/if} />$_G['setting']['navs'][2]['navname']</label></a></li>{/block}<!–{/if}–>
    76.                                                 <!–{if $_G['setting']['search']['blog']['status'] && ($_G['group']['allowsearch'] & 4 || $_G['adminid'] == 1)}–>{block slist[blog]}<li><a href=”javascript:;”><label for=”mod_blog”><input type=”radio” id=”mod_blog” name=”mod” value=”blog”{if CURSCRIPT == ‘home’ && $do != ‘album’} checked=”checked”{/if} />{lang blog}</label></a></li>{/block}<!–{/if}–>
    77.                                                 <!–{if $_G['setting']['search']['album']['status'] && ($_G['group']['allowsearch'] & 8 || $_G['adminid'] == 1)}–>{block slist[album]}<li><a href=”javascript:;”><label for=”mod_album”><input type=”radio” id=”mod_album” name=”mod” value=”album”{if CURSCRIPT == ‘home’ && $do == ‘album’} checked=”checked”{/if} /> {lang album}</label></a></li>{/block}<!–{/if}–>
    78.                                                 <!–{if $_G['setting']['groupstatus'] && $_G['setting']['search']['group']['status'] && ($_G['group']['allowsearch'] & 16 || $_G['adminid'] == 1)}–>{block slist[group]}<li><a href=”javascript:;”><label for=”mod_group”><input type=”radio” id=”mod_group” name=”mod” value=”group”{if CURSCRIPT == ‘group’} checked=”checked”{/if} />$_G['setting']['navs'][3]['navname']</label></a></li>{/block}<!–{/if}–>
    79.                                                 <!–{if $slist}–>
    80.                                                         <form id=”sc” method=”post” autocomplete=”off” action=”search.php?searchsubmit=yes” target=”_blank”>
    81.                                                                 <input name=”mod” value=”search” type=”hidden” />
    82.                                                                 <input type=”hidden” name=”formhash” value=”{FORMHASH}” />
    83.                                                                 <input name=”srchtype” value=”title” type=”hidden” />
    84.                                                                 <label id=”sctype”>{lang search}</label>
    85.                                                                 <input type=”text” name=”srchtxt” id=”srchtxt” value=”{lang enter_content}” prompt=”search_kw” autocomplete=”off” />
    86.                                                                 <button id=”searchsubmit” name=”searchsubmit” prompt=”search_submit” type=”submit” value=”true”>{lang search}</button>
    87.                                                                 <div id=”sctype_menu” style=”display: none”>
    88.                                                                         <ul>{echo implode(”, $slist);}</ul>
    89.                                                                 </div>
    90.                                                         </form>
    91.                                                         <script type=”text/javascript”>initscmenu();</script>
    92.                                                 <!–{/if}–>
    93.                                         <!–{/if}–>    <!–搜索结束–>
    94.                      
    95.                     <!–下面是让人上火的 头部大导航  –>
    96.                                         <div id=”nv”>
    97.                                                 <ul><!–导航从这里开始–>
    98.                                                         <!–{loop $_G['setting']['navs'] $navsid $nav}–>
    99.                                                                 <!–{if $nav['available']}–>
    100.                                                                         <!–{if $navsid == 6 && !empty($_G['setting']['plugins']['jsmenu'])}–>
    101.                                                                                 $nav[nav]
    102.                                                                         <!–{else}–>
    103.                                                                                 <!–{if !$nav['level'] || ($nav['level'] == 1 && $_G['uid']) || ($nav['level'] == 2 && $_G['adminid'] > 0) || ($nav['level'] == 3 && $_G['adminid'] == 1)}–>$nav[nav]<!–{/if}–>
    104.                                                                         <!–{/if}–>
    105.                                                                 <!–{/if}–>
    106.                                                         <!–{/loop}–>
    107.                                                 </ul><!–导航完毕–>
    108.                                         </div>
    109.                      
    110.                     <!–下面这一坨我弄了半天才明白,原来是子导航,就是把鼠标放在主导航上显示下拉菜单的那个。–>
    111.                                         <!–{if !empty($_G['setting']['plugins']['jsmenu'])}–>
    112.                                                 <ul id=”plugin_menu” style=”display: none”>
    113.                                                 <!–{loop $_G['setting']['plugins']['jsmenu'] $module}–>
    114.                                                      <!–{if !$module['adminid'] || ($module['adminid'] && $_G['adminid'] > 0 && $module['adminid'] >= $_G['adminid'])}–>
    115.                                                      <li>$module[url]</li>
    116.                                                      <!–{/if}–>
    117.                                                 <!–{/loop}–>
    118.                                                 </ul>
    119.                                         <!–{/if}–>
    120.                                         <!–{loop $_G['setting']['subnavs'] $subnav}–>
    121.                                                 $subnav
    122.                                         <!–{/loop}–><!–子导航结束–>
    123.                                 </div>
    124.   
    125.                                 <div id=”mu”><!–二级导航–>
    126.                                         <!–{if $_G[setting][snavs][$_G[basescript]]}–>
    127.                                                 <ul>
    128.                                                 <!–{loop $_G[setting][snavs][$_G[basescript]] $item}–>
    129.                                                         <li>$item</li>
    130.                                                 <!–{/loop}–>
    131.                                                 </ul>
    132.                                         <!–{/if}–>
    133.                                 </div>
    134.                                 {ad/subnavbanner/a_mu}
    135.   
    136.                         </div>
    137.                 </div>
    138.   
    139.                 <div id=”um”>
    140.                         <p>
    141.             
    142.             <!– 下面一大段 ,到[/if]为止,都是登录和注册和登录后显示的信息 –>
    143.             
    144.                         <!–{if $_G['uid']}–>
    145.                                 <strong><a href=”home.php?mod=space” target=”_blank”>{$_G[member][username]}</a></strong>
    146.                                 <!–{if $_G['group']['allowinvisible']}–><span id=”loginstatus”><a href=”member.php?mod=switchstatus” title=”{lang login_switch_invisible_mode}”><!–{if $_G['session']['invisible']}–>{lang login_invisible_mode}<!–{else}–>{lang login_normal_mode}<!–{/if}–></a></span><!–{/if}–>
    147.                                 <span>|</span><a href=”home.php?mod=space&do=home”>{lang my_space}</a>
    148.                                 <span><a href=”home.php?mod=spacecp”>{lang setup}</a></span>
    149.   
    150.                                 <span>|</span><a href=”home.php?mod=space&do=notice” id=”myprompt” <!–{if $_G[member][newprompt]}–>class=”new”<!–{/if}–>>{lang remind}<!–{if $_G[member][newprompt]}–>($_G[member][newprompt])<!–{/if}–></a><span id=”myprompt_check”></span>
    151.                                 <span>|</span><a href=”home.php?mod=space&do=pm” id=”pm_ntc”<!–{if $_G[member][newpm]}–>class=”new”<!–{/if}–>>{lang pm_center}<!–{if $_G[member][newpm]}–>($_G[member][newpm])<!–{/if}–></a>
    152.   
    153.                                 <!–{if $_G['group']['allowmanagearticle'] || $_G['group']['allowdiy'] || in_array($_G['uid'], $_G['setting']['ext_portalmanager'])}–><span>|</span><a href=”portal.php?mod=portalcp”>{lang portal_manage}</a><!–{/if}–>
    154.                                 <!–{if $_G['uid'] && $_G['group']['radminid'] > 1}–><span>|</span><a href=”forum.php?mod=modcp&fid=$_G[fid]” target=”_blank”>{lang forum_manager}</a><!–{/if}–>
    155.                                 <!–{if $_G['uid'] && ($_G['group']['radminid'] == 1 || $_G['member']['allowadmincp'])}–><span>|</span><a href=”admin.php” target=”_blank”>{lang admincp}</a><!–{/if}–>
    156.                                 <span>|</span><a href=”member.php?mod=logging&action=logout&formhash={FORMHASH}”>{lang logout}</a>
    157.                         <!–{elseif !empty($_G['cookie']['loginuser'])}–>
    158.                                 <strong><a id=”loginuser”>$_G['cookie']['loginuser']</a></strong>
    159.                                 <span>|</span><a href=”member.php?mod=logging&action=login”>{lang activation}</a>
    160.                                 <span>|</span><a href=”member.php?mod=logging&action=logout&formhash={FORMHASH}”>{lang logout}</a>
    161.                         <!–{else}–>
    162.                                 <a href=”member.php?mod=register”>$_G['setting']['reglinkname']</a>
    163.                                 <span>|</span><a href=”member.php?mod=logging&action=login”>{lang login}</a>
    164.                         <!–{/if}–>
    165.             <!–这里登录注册按钮完毕–>
    166.                         </p>
    167.                 </div>
    168.   
    169.                 {hook/global_header}
    170.                 <!–{/if}–>
    171.                  
    172.                 <div id=”wp”>

    JS实现网页图片延迟加载

    十二月20

    通过jquery.lazyload.js脚本插件实现图片随滚动条渐显的华丽效果。可加速多图片页面的载入速度,让其尽快显示在浏览者眼前。特适用于存在大量图片的页面.

    实现原理:

    jquery.lazyload.js是一个用 JavaScript. 编写的 jQuery 插件。它可以延迟加载长页面中的图片,通过判断浏览者是否在查看当前图片,若不是则默认加载预设的填充图片“grey.gif”,直到浏览者滑动鼠标滚轮或浏览到图片位置时,真正的图片才会得以加载。

    在包含很多大图片长页面中延迟加载图片可以加快页面加载速度。浏览器将会在加载可见图片之后即进入就绪状态。在某些情况下还可以帮助降低服务器负担。

    实现方法:

    只需在网站页面头部加入js代码即可实现。

    1、下载并上传相关文件

    下载 jquery-1.4.2.min.js

    下载 jquery.lazyload.js

    下载 预填充图片 grey.gif

    下载完毕后,上传上述3个文件到wordpress的相关目录。

    注:若之前已使用相关jquery.js,则不需要下载jquery-1.4.2.min.js,一般情况下都不需要。

    2、在当前主题的“header.php”中适当位置添加下面JS调用代码。

    <script. type=”text/javascript” src=”域名路径/jquery.lazyload.js”></script>
    <script. type=”text/javascript”>
    jQuery(document).ready(
    function($){
    $(“img”).lazyload({
    placeholder : “域名路径/grey.gif”,
    effect      : “fadeIn”
    });
    });
    </script>

    注:“域名路径”自己替换成相关路径。

    $(“img”) 可以用来限定对页面中的哪些img生效,如只针对内容部分可修改为 $(“.content img”) 。

    Apache中通过配置http.conf 绑定多个域名以及二级域名

    十二月13

    Apache是最流行的HTTP服务器软件之一,其以快速、可靠(稳定)而著称,并且可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,完全免费,并且源代码全部开放。如果有自己的服务器或者VPS ,并且不想为了方便而购买昂贵的控制面板的话,那自己动手配置Apache就成了一门必修课了。下面简单的介绍了如何通过设置Apache的 http.conf文件,进行多个域名以及其相关的二级域名的绑定(假设我们要绑定的域名是minidx.com和ntt.cc,二级域名是 blog.minidx.com,独立IP为72.167.11.30).

    apache怎么绑定多个域名
    打开http.conf
    1,ServerName 127.0.0.1 修改成ServerName 72.167.11.30
    2,#NameVirtualHost *   修改成”NameVirtualHost 72.167.11.30″
    3,在文件最后面有虚拟主机格式,
    #<VirtualHost *>
    #   ServerAdmin [email]admin@minidx.com[/email]
    #   DocumentRoot /www/httpd/html/minidx.com
    #   ServerName minidx.com
    #   ErrorLog logs/minidx.com-error_log
    #   CustomLog logs/minidx.com-access_log common
    #</VirtualHost>
    简单的添加:
    <VirtualHost 72.167.11.30>
    DocumentRoot usr/local/www/
    ServerName   72.167.11.30
    </VirtualHost>
    <VirtualHost 72.167.11.30>
    DocumentRoot usr/local/www/minidx.com/
    ServerName   minidx.com
    </VirtualHost>
    <VirtualHost 72.167.11.30>
    DocumentRoot   usr/local/www/ntt.cc/
    ServerName   ntt.cc
    </VirtualHost>

    日志文件的话也可以按照自己的路径添加。

    Apache如何添加二级域名

    httpd.conf 中需要打开mod_rewrite功能(关于URL重定向的具体说明,可以参照.htaccess使用方法总结 ),具体操作就是,在httpd.conf 的最后,添加以下内容:

    RewriteEngine on
    RewriteMap lowercase int:tolower
    RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
    RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
    RewriteCond ${vhost:%1} ^(/.*)$
    RewriteRule ^/(.*)$ %1/$1

    其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改(例如在/etc/httpd/下面)。然后,在这个所在路径的目录下创建一个文件: vhost.map,内容为:

    www.minidx.com /usr/local/www/minidx.com
    www.ntt.cc /usr/local/www/ntt.cc
    blog.minidx.com /usr/local/www/minidx.com/blog

    最后,在网站根目录 /usr/local/www/下,创建对应目录就可以了。如果需要增加,修改或者删除域名,子域名,仅仅需要更改vhost.map文件,而不用重启 apache进程。

     

    注意:1,ServerName 127.0.0.1 修改成ServerName 72.167.11.30
    2,#NameVirtualHost *   修改成”NameVirtualHost 72.167.11.30″

    这2个是必须的,否则只能前面的域名设置生效

    linux下mysql的root密码忘记解决方法

    十二月13

    1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。
    因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的
    状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对
    外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全
    状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
    2.修改MySQL的登录设置:
    # vi /etc/my.cnf
    在[mysqld]的段中加上一句:skip-grant-tables
    例如:
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    skip-grant-tables
    保存并且退出vi。
    3.重新启动mysqld
    # /etc/init.d/mysqld restart
    Stopping MySQL: [ OK ]
    Starting MySQL: [ OK ]
    4.登录并修改MySQL的root密码
    # /usr/bin/mysql
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 3 to server version: 3.23.56
    Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
    mysql> USE mysql ;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    Database changed
    mysql> UPDATE user SET Password = password ( ‘new-password’ ) WHERE User = ‘root’ ;
    Query OK, 0 rows affected (0.00 sec)
    Rows matched: 2 Changed: 0 Warnings: 0
    mysql> flush privileges ;
    Query OK, 0 rows affected (0.01 sec)
    mysql> quit
    Bye
    5.将MySQL的登录设置修改回来
    # vi /etc/my.cnf
    将刚才在[mysqld]的段中加上的skip-grant-tables删除
    保存并且退出vi。
    6.重新启动mysqld
    # /etc/init.d/mysqld restart
    Stopping MySQL: [ OK ]
    Starting MySQL: [ OK ]
    7.恢复服务器的正常工作状态
    将步骤一中的操作逆向操作。恢复服务器的工作状态。
    [color=#ff0000][b]二。 MySQL密码的恢复方法之二[/b][/color]
    如果忘记了MySQL的root密码,可以用以下方法重新设置:
    1. KILL掉系统里的MySQL进程;
    killall -TERM mysqld
    2. 用以下命令启动MySQL,以不检查权限的方式启动;
    safe_mysqld –skip-grant-tables &
    3. 然后用空密码方式使用root用户登录 MySQL;
    mysql -u root
    4. 修改root用户的密码;
    mysql> update mysql.user set password=PASSWORD(‘新密码’) where User=’root’;
    mysql> flush privileges;
    mysql> quit
    重新启动MySQL,就可以使用新密码登录了。
    [color=#ff0000][b]三. MySQL密码的恢复方法三[/b][/color]
    有可能你的系统没有 safe_mysqld 程序(比如我现在用的 ubuntu操作系统, apt-get安装的mysql) , 下面方法可以恢复
    1. 停止mysqld;
    /etc/init.d/mysql stop
    (您可能有其它的方法,总之停止mysqld的运行就可以了)
    2. 用以下命令启动MySQL,以不检查权限的方式启动;
    mysqld –skip-grant-tables &
    3. 然后用空密码方式使用root用户登录 MySQL;
    mysql -u root
    4. 修改root用户的密码;
    mysql> update mysql.user set password=PASSWORD(‘newpassword’) where User=’root’;
    mysql> flush privileges;
    mysql> quit
    重新启动MySQL
    /etc/init.d/mysql restart
    就可以使用新密码 newpassword 登录了。

    php session应用实例

    十二月13
    php session应用实例--登录验证:
    
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    
    <body>
    <form name="form1" method="post" action="login.php">
    <table width="300" border="0" align="center" cellpadding="2" cellspacing="2">
    <tr>
    <td width="150"><div align="right">用户名:</div></td>
    <td width="150"><input type="text" name="username"></td>
    </tr>
    <tr>
    <td><div align="right">密码:</div></td>
    <td><input type="password" name="passcode"></td>
    </tr>
    <tr>
    <td><div align="right">Cookie保存时间:</div></td>
    <td><select name="cookie" id="cookie">
    <option value="0" selected>浏览器进程</option>
    <option value="1">保存1天</option>
    <option value="2">保存30天</option>
    <option value="3">保存365天</option>
    </select></td>
    </tr>
    </table>
    <p align="center">
    <input type="submit" name="Submit" value="Submit">
    <input type="reset" name="Reset" value="Reset">
    </p>
    </form>
    </body>
    </html>
    
    -------------------------------------------------------------------------------------------------------------------------
    
    <?php
    @mysql_connect("localhost", "root","1981427")     //选择数据库之前需要先连接数据库服务器
    or die("数据库服务器连接失败");
    @mysql_select_db("test")      //选择数据库mydb
    or die("数据库不存在或不可用");
    //获取用户输入
    $username = $_POST['username'];
    $passcode = $_POST['passcode'];
    //执行SQL语句获得Session的值
    $query = @mysql_query("select username, userflag from users "
    ."where username = '$username' and passcode = '$passcode'")
    or die("SQL语句执行失败");
    //判断用户是否存在,密码是否正确
    if($row = mysql_fetch_array($query))
    {
    session_start();        //标志Session的开始
    //判断用户的权限信息是否有效,如果为1或0则说明有效
    if($row['userflag'] == 1 or $row['userflag'] == 0)
    {
    $_SESSION['username'] = $row['username'];
    $_SESSION['userflag'] = $row['userflag'];
    echo "<a href="main.php" mce_href="main.php">欢迎登录,点击此处进入欢迎界面</a>";
    }
    else          //如果权限信息无效输出错误信息
    {
    echo "用户权限信息不正确";
    }
    }
    else           //如果用户名和密码不正确,则输出错误
    {
    echo "用户名或密码错误";
    }
    ?>
    
    -------------------------------------------------------------------------------------------------------------------------
    
    <?php
    
    session_start();
    unset($_SESSION['username']);
    unset($_SESSION['passcode']);
    unset($_SESSION['userflag']);
    
    // 最后彻底销毁session.
             session_destroy();
    
    echo "注销成功";
    ?>
    
             <?php
             // 初始化session.
             session_start();
             /*** 删除所有的session变量..也可用unset($_SESSION[xxx])逐个删除。****/
             $_SESSION = array();
             /***删除sessin id.由于session默认是基于cookie的,所以使用setcookie删除包含session id的cookie.***/
             if (isset($_COOKIE[session_name()])) {
                   setcookie(session_name(), '', time()-42000, '/');
              }
             // 最后彻底销毁session.
             session_destroy();
             ?>
    
    由此我们可以得出删除Session的步骤:
    ①session_start()
    ②$_SESSION=array()/unset($_SESSION['xxx'])
    ③session_destroy()
    
    -------------------------------------------------------------------------------------------------------------------------
    
    <?php
    session_start();
    if(isset($_SESSION['username']))
    {
    @mysql_connect("localhost", "root","1981427")     //选择数据库之前需要先连接数据库服务器
    or die("数据库服务器连接失败");
    @mysql_select_db("test")      //选择数据库mydb
    or die("数据库不存在或不可用");
    //获取Session
    $username = $_SESSION['username'];
    //执行SQL语句获得userflag的值
    $query = @mysql_query("select userflag from users "
    ."where username = '$username'")
    or die("SQL语句执行失败");
    $row = mysql_fetch_array($query);
    //判断当前数据库中的权限信息与Session中的信息比较,如果不同则更新Session的信息
    if($row['userflag'] != $_SESSION['userflag'])
    {
    $_SESSION['userflag'] = $row['userflag'];
    }
    //根据Session的值输出不同的欢迎信息
    if($_SESSION['userflag'] == 1)
    echo "欢迎管理员".$_SESSION['username']."登录系统";
    if($_SESSION['userflag'] == 0)
    echo "欢迎用户".$_SESSION['username']."登录系统";
    echo "<a href="logout.php" mce_href="logout.php">注销</a>";
    }
    else
    {
    echo "您没有权限访问本页面";
    }
    ?>
    
    -------------------------------------------------------------------------------------------------------------------------
    
    -------------------------------------------------------------cookie登录验证实例---------------------------------------------
    
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    
    <body>
    <form name="form1" method="post" action="login.php">
    <table width="300" border="0" align="center" cellpadding="2" cellspacing="2">
    <tr>
    <td width="150"><div align="right">用户名:</div></td>
    <td width="150"><input type="text" name="username"></td>
    </tr>
    <tr>
    <td><div align="right">密码:</div></td>
    <td><input type="password" name="passcode"></td>
    </tr>
    <tr>
    <td><div align="right">Cookie保存时间:</div></td>
    <td><select name="cookie" id="cookie">
    <option value="0" selected>浏览器进程</option>
    <option value="1">保存1天</option>
    <option value="2">保存30天</option>
    <option value="3">保存365天</option>
    </select></td>
    </tr>
    </table>
    <p align="center">
    <input type="submit" name="Submit" value="Submit">
    <input type="reset" name="Reset" value="Reset">
    </p>
    </form>
    </body>
    </html>
    
    -------------------------------------------------------------------------------------------------------------------------
    
    <?php
    @mysql_connect("localhost", "root","1981427")     //选择数据库之前需要先连接数据库服务器
    or die("数据库服务器连接失败");
    @mysql_select_db("test")      //选择数据库mydb
    or die("数据库不存在或不可用");
    //获取用户输入
    $username = $_POST['username'];
    $passcode = $_POST['passcode'];
    $cookie   = $_POST['cookie'];
    //执行SQL语句
    $query = @mysql_query("select username, userflag from users "
    ."where username = '$username' and passcode = '$passcode'")
    or die("SQL语句执行失败");
    //判断用户是否存在,密码是否正确
    if($row = mysql_fetch_array($query))
    {
    if($row['userflag'] == 1 or $row['userflag'] == 0)    //判断用户权限信息是否有效
    {
    switch($cookie)         //根据用户的选择设置cookie保存时间
    {
    case 0:         //保存Cookie为浏览器进程
    setcookie("username", $row['username']);
    break;
    case 1:         //保存1天
    setcookie("username", $row['username'], time()+24*60*60);
    break;
    case 2:         //保存30天
    setcookie("username", $row['username'], time()+30*24*60*60);
    break;
    case 3:         //保存365天
    setcookie("username", $row['username'], time()+365*24*60*60);
    break;
    }
    header("location: main.php");      //自动跳转到main.php
    }
    else
    {
    echo "用户权限信息不正确";
    }
    }
    else
    {
    echo "用户名或密码错误";
    }
    ?>
    
    -------------------------------------------------------------------------------------------------------------------------
    
    <?php
    session_start();
    if(isset($_COOKIE['username']))
    {
    @mysql_connect("localhost", "root","1981427")     //选择数据库之前需要先连接数据库服务器
    or die("数据库服务器连接失败");
    @mysql_select_db("test")      //选择数据库mydb
    or die("数据库不存在或不可用");
    //获取Session
    $username = $_COOKIE['username'];
    //执行SQL语句获得userflag的值
    $query = @mysql_query("select userflag from users "
    ."where username = '$username'")
    or die("SQL语句执行失败");
    $row = mysql_fetch_array($query);
    //获得用户权限信息
    $flag = $row['userflag'];
    //根据userflag的值输出不同的欢迎信息
    if($flag == 1)
    echo "欢迎管理员".$_COOKIE['username']."登录系统";
    if($flag == 0)
    echo "欢迎用户".$_COOKIE['username']."登录系统";
    echo "<a href="logout.php" mce_href="logout.php">注销</a>";
    }
    else
    {
    echo "您没有权限访问本页面";
    }
    ?>
    
    -------------------------------------------------------------------------------------------------------------------------
    
    <?php
    setcookie("username");
    echo "注销成功";
    ?>
    posted under PHP开发 | No Comments »

    jQuery获取浏览器中的分辨率

    十二月13

    <script type="text/javascript">
    $(document).ready(function()
    {
    alert($(window).height()); //浏览器当前窗口可视区域高度
    alert($(document).height()); //浏览器当前窗口文档的高度
    alert($(document.body).height());//浏览器当前窗口文档body的高度
    alert($(document.body).outerHeight(true));//浏览器当前窗口文档body的总高度 包括border padding margin
    
    alert($(window).width()); //浏览器当前窗口可视区域宽度
    alert($(document).width());//浏览器当前窗口文档对象宽度
    alert($(document.body).width());//浏览器当前窗口文档body的高度
    alert($(document.body).outerWidth(true));//浏览器当前窗口文档body的总宽度 包括border padding margin
    
    alert(screen.height);//显示器分辨率,只能用JavaScript代码获取
    
    alert(screen.width);
    })
    </script>
    
    网页可见区域宽: document.body.clientWidth
    网页可见区域高: document.body.clientHeight
    网页可见区域宽: document.body.offsetWidth (包括边线的宽)
    网页可见区域高: document.body.offsetHeight (包括边线的高)
    网页正文全文宽: document.body.scrollWidth
    网页正文全文高: document.body.scrollHeight
    网页被卷去的高: document.body.scrollTop
    网页被卷去的左: document.body.scrollLeft
    网页正文部分上: window.screenTop
    网页正文部分左: window.screenLeft
    屏幕分辨率的高: window.screen.height
    屏幕分辨率的宽: window.screen.width
    屏幕可用工作区高度: window.screen.availHeight
    屏幕可用工作区宽度: window.screen.availWidth
    posted under HTML相关 | No Comments »
    « Older Entries