博客

  • 纯静态与伪静态的实现

        一,先看一下伪静态实现方法:
        有两种,第一种也是推荐的一种,就是在服务器端配置URL Rewrite,如果你用的apache请确认你的已经加载了rewrite模块,在http.conf中将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉即可(国内部分空间商已提供支持,国外基本上都支持),之后你只需在站点根目录加入自定义好的.htaccess即可,要想拥有个性化的URL,你还需要掌握正则表达式的运用。还有,提醒一下用张宴学长APMServ的用户,之前在本地调试一直不成功,原因是在http.conf文件中,当前的虚拟主机的AllowOverride默认为none导致的,将其修改为all即可,同时allow from也最好设为all.
    形如:

    <Directory “X:/www/htdocs”>     
     Options FollowSymLinks IncludesNOEXEC Indexes
     DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.shtml
     AllowOverride None
     Order Deny,Allow
     Allow from all
    </Directory>

         第二种实现伪静态的方法就是在PHP文件内部用$_SERVER函数获取处理QUERY_STRING,关于$_SERVER函数的应用,这里有比较详细的介绍。获得QUERY_STRING后,应用PHP自带的串操作函数解析即可,过程比较简单不再赘述,有兴趣的朋友可以查阅一下相关资料

         二,生成纯静态HTML文件:
         纯静态的HTML有效的提高的站点的安全性,同时也大大减轻了服务器的负荷,速度上也有一定的飞跃,唯一的缺陷是就是占用服务器的硬盘空间,就目前来说,时间比空间更宝贵,国内大型站点基本上都采用的这种方法。
       实现原理:提取缓冲区的数据写入指定文件中,当然这是个HTML的文件。主要利用ob函数,过程比较简单。ob_start()函数,打开输出缓冲区,利用ob_get_contents 获取内部缓冲区内容,将内容写入文件,关闭缓冲区。

    以下是一段简单示例(只做示例,不适合实际应用):

    <?php
       /**
         * 生成HTML静态页面
         * @param    $pram:传入id;$type:读取的php页面类型
         * @return     结果
       */
    ob_start();
    include “File.class.php”;   //自定义文件类
    $pram=intval($_GET[‘id’]);
    if(!isset($pram))
    $pram=1;
    include(‘read.php’);//假设读取数据流来自read.php
    $content=ob_get_contents();
    ob_end_clean();
    $filename=”YOURPATH/NAME.htm”;
    if($name=toHtml($filename,$content)){
        echo ‘The HTML file <b>’.$name.'</b> create success!<br />’;
        echo ‘Take a look! <a href=’.$name.’ target=”_blank”> Click Here</a><br />’;
    }
    else {
        echo ‘HTML file create failed!’;
    }
    /**
     * 生成静态HTML的函数
     * @param    $filename:路径+文件名,$content:写入内容
     * @since     2009.08.03
     * @access   public
     */
    function toHtml($filename,$content)
    {
       $f=new fileClass();
       if (!file_exists($filename)) {
            $f->createFile($filename);
         }
     if($f->writeinFile($filename,$content)) { 
         return $filename;
     }
         return false;
    } // end func

    ?>

    基本原理就是这样了,大家可以根据需求自行修改。
    两种方法有个共同点,都是为了讨好搜索引擎,毋庸置疑良好的搜索引擎优化会给你的站点带来意想不到的收获。
    方法介绍到此,希望它们能对你有所帮助。

  • 软文无题

    去年的这个时候,正呆在珠海,经历水深火热,回想飘荡游走的日子第一反应竟叫人忍俊不禁。
    且今,过了整整一年。尤记当时比较难忘的一段对话,某大一位从事WEB开发的博士问我,
    你用PHP? 我说是。
    那你会Ajax吗?我说知道一点。
    那你会用smarty吗?我苦笑,说没用过。
    哦,探索之路,永远漫长……
    一年了,当时已成过去,发篇软文纪念一下,信笔乱涂,贻笑方家又何妨。
    这段日子高效高能谢天谢地,项目已接近尾声,下一波已悄然而至。

  • 双击实现文本元素修改

    此效果多应用于后台栏目名称修改上,双击以创建input元素,onblur事件实现异步调用无刷新提交。

    JS部分:

    <code><script type=”text/javascript”>
    function showInput(element)
    {
    var defaultValue = element.innerHTML;   //取得默认内容
    var inputEle= document.createElement(‘input’);   //创建input元素
    inputEle.type = ‘text’;   //添加类型
    inputEle.value=defaultValue;
    inputEle.className=”tip”;
    element.innerHTML = ”;
    element.appendChild(inputEle);   //添加子元素
    inputEle.focus();   //获得焦点
    inputEle.onfocus = function()
    {
    element.ondblclick=”;//取消元素的双击事件
    }
    inputEle.onblur = function()
    {
    element.innerHTML = this.value ? this.value : defaultValue;   //触发时判断值是否为空
    var any= $(this).attr(‘value’);
    $.ajax({
    type: “POST”,
    url: “insert.php”,
    data: “name=”+ any,
    success: function(){
    $(“#show”).prepend(“<li>提交成功:”+any+”</li>”);
    $(“#show li:first”).fadeIn(“slow”);
    }
    });
    element.ondblclick = function()//还原
    {
    showInput(this);
    }
    }
    }
    </script></code>

    样式:

    <style type=”text/css” media=”all”>
    #show{
    margin-top:100px;
    width:300px;
    height:200px;
    border:1px solid #F5F5F5;
    overflow:hidden;
    }
    #show li{
    background:#FDF5E6;
    list-style:none;
    }
    .tip{
    border:2px solid #FDF5E6;
    }
    </style>

    HTML部分:

    <span>双击下面文字:</span>  <br /><br />
    <span ondblclick=”showInput(this)” >天道酬勤</span> <br />
    <div id=”show”></div>

    注意,该效果的实现用到了jQuery,请在HTML头部包含之。

    点击预览效果.