Hot For Coding
Nginx禁止IP直接访问

现在IP资源短缺,许多站长都是在一台服务器或VPS上跑多个Web站点,最大程度上缓解了IP地址的泛滥使用。通过配置基于域名的虚拟主机配置几乎都是通过域名访问Web服务器,直接通过IP访问站点可能性很小。除非是一些特殊的系统,内部人自己用的以外。

目前Nginx成为WebServer得首选,因为它非常稳定高效,当你配置好基于域名的虚拟主机以后也许你会发现通过IP直接可以访问你的Web服务器,这一点非常不好,通过在nginx.conf中添加以下代码即可防止通过IP直接访问

server {
  listen 80 default_server;
  server_name _;
  return 403;
}

...

READ ALL

SWFUpload在PHP中使用实例

前几天,介绍了PHP上传文件,应该说是普通模式上传文件。在网速畅通,上传的文件不大的情况下普通模式看起来还是很使用的。但如果要上传很大的一个文件,假如说几百兆,一部电影等等。那普通模式就有点欠缺了,因为上传大文件通常时间长,如果页面长时间处于处理状态用户会误以为死机了,然后直接把网页关掉,结果上传到一半的文件被终止了。

如果使用Flash来实现上传,这样不仅可以计算上传所需时间,上传进度,状态等等,还可以在浏览器端就能判断文件的大小。所以今天介绍如何使用SWFUpload组件上传文件,大家可以到官网下载SWFUpload程序。这里就不在赘述的介绍SWFUpload的特性了

...

READ ALL

JavaScript解析JSON或者生成JSON字符串

解析与JSON化

在JavaScript中解析JSON字符串可以使用浏览器自带得JSON.parse()方法,这个方法使用非常简单,只需要把要解析的字符串传入即可

// Nicholas Lee www.qttc.net

var json = '{"name": "zhangsan"}'
var obj = JSON.parse(json)
console.log(obj) // Output: {name: "zhangsan"}

你也可以把对象JSON化,使用JSON.stringify()方法

// Nicholas Lee www.qttc.net

var obj = { name: 'zhangsan' };
var json = JSON.stringify(obj);
console.log(json); // Output: {"name":"zhangsan"}

...

READ ALL

PHP上传文件

HTML页面

form表单要注意几点

  • enctype属性必须multipart/form-data
  • method属性必须post

如以下这个表单

upload.html

<!DOCTYPE html>
<html>
<head>
</head>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
  <label for="file">Filename:</label>
  <input type="file" name="file" id="file" /> 
  <br />
  <input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>

...

READ ALL

PHP时间大小比较

什么是PHP时间比较呢?

最简单的例子就是可以把两个时间用大于小于号进行两个时间的对比。有时候我们设计程序,需要控制用户操作某个功能时只能在某个时间段内可以操作,其余时间段不允许。

比如,有一个发布消息的网站,然后我在通过这个消息群发给上千用户。按照普通做法,应该就是一旦发布消息,就立即把消息群发给上千用户。这样一来,只要一有最新消息,用户就第一时间收到手机短信。可是,问题来了。比如我要是在深夜凌晨发布信息,那可就遭到所有用户投诉了。

所以,这里可以用到时间比较,要是在白天时间就可以发布,晚上则阻止。我们假设白天时间段从早上七点(七点估计好多人都没睡醒)到下午六点,那么我们可以这么干

...

READ ALL

PHP实现斐波那契数列

先看百科的解释

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列: 1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域, 斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果

...

READ ALL

PHP文件管理系统代码共享

这是最早用PHP写过的一个文件管理系统,管理的是Web服务器端的文件

功能主要有

  • 创建文件
  • 删除文件
  • 编辑文件
  • 地址栏
  • 文件列表
  • 文件夹进入
  • 文件夹创建
  • 文件夹删除
  • 图片显示

此系统仅运行在WIN平台上

PHP code

<?php
/*
 * 简单文件管理操作网页版
 * Nicholas Lee www.qttc.net
 * 
 * 功能:
 *    文件删除
 *    文件添加
 *    文本编辑
 *    文件夹添加
 *    文件夹删除
 *    可以在地址栏输入路径访问
 *    项目总数提示
 *    文件总数提示
 *    文件夹总数提示
 *    剩余磁盘空间提示
 *    磁盘总空间提示
 *    当前目录大小显示
 *
 * 日期:2011-05-20
 */
 
// 参考视频 编写一个简单的文件管理系统
 
define("BANQUAN","__ V2.3 | MSN:mail@lizhong.me | Power by qttc.net");

if(!(isset($tijiao)) && !(isset($dirr))){
  $dirr="d:/";
}

// 判断提交值进行调取函数动作*******************************
 
if($tijiao){
 
  if($_GET["add"]=="Please improt filename"){ // 判断添加文件
    $error="Warning:Please in the improt right's filename";
    $dirr=str_replace("\\","/",$_GET["url"]);
  }elseif($_GET["add"]){
    $error=action($subb);
    $dirr=str_replace("\\","/",$_GET["url"]);
  }elseif($_GET["del"]){        // 判断删除文件
    $yest=action($subb);
    $dirr=$_GET["url"];
  }elseif($_GET["adddir"]){  // 判断添加文件夹
    $dirr=$_GET["url"];
    if($_GET["adddir"]=="Please improt directroyname"){
      $error="Warning: Please in the improt right's Directroyname";
      $dirr=str_replace("\\","/",$_GET["url"]);
    }else{
      $error=action($subb);    
    }
  }elseif($_GET["info"]){     // 进入文件夹
    $dirr=str_replace("//","/",$_GET["info"]);
  }elseif($_GET["dirr"]){ // 判断路径
    if(file_exists($_GET["dirr"]) && is_dir($_GET["dirr"])){
      $dirr=str_replace("\\","",$_GET["dirr"]);
    }else{
      $dirr=str_replace("\\","",$_GET["dirr"]);
      $adderres="Sorry: No find the directroy of \"".$_GET["dirr"]."\"";
    }
  }elseif($_GET["edit"]){        // 判断编辑文本
    $dirr=str_replace("\\","/",dirname($_GET["url"]));
    $edit=$_GET["edit"];
    $urllee=$_GET["url"];
    $editfile=$urllee."/".$edit;
  }elseif($_POST["editsave"]){    // 写入文本
    $dirr=str_replace("\\","/",dirname($_POST["editsave"]));
    $newconten=$_POST["newconten"];
    $wenjianmingming=basename($_POST["editsave"]);
    $xierulala=fopen($_POST["editsave"],"r+");
    fwrite($xierulala,$newconten);
    fclose($xierulala);
    $yest="\"$wenjianmingming is saved!";
  }elseif($_GET["viw"]){         // 打开照片
    $dirr=str_replace("\\","/",$_GET["url"]);
    $viw=$_GET["viw"];
    $chatoububu=dirname($dirr);
    $phototo=$chatoububu."/".$viw;
  }elseif($_GET["tijiao"]=="photo"){
    $dirr=str_replace("\\","/",$_GET["url"]);    
  }
}

// 编辑文本处理函数**************************************

// 递归处理删除文件夹函数***********************************
 
function deldir($deldir){
 
  $dell=opendir($deldir); // 打开文件夹
  while($fdell=readdir($dell)){
    if($fdell!="." && $fdell!=".."){
      $deldirr=$deldir."/".$fdell;
      if(is_dir($deldirr)){
        deldir($deldirr);    
      }elseif(is_file($deldirr)){
        unlink($deldirr);    
      }    
    }
  }

  closedir($dell);
  rmdir($deldir);
}

// 递归统计文件夹大小函数***********************************
 
function dirsize($muludir){
  $b=opendir($muludir);
  while($a=readdir($b)){
    if($a!="." && $a!=".."){
      $aa=$muludir."/".$a;
      if(is_dir($aa)){
        $sum+=dirsize($aa);
      }elseif(is_file($aa)){
        $sum+=filesize($aa);
      }
    }
  }

  closedir($b);
  return $sum;
}

// 处理函数****************************************************
 
function action($sub){
  $url=$_get["url"];
  switch($sub){
    
    // 执行添加文件命令条
    case 1:
      $add=$_GET["add"];
      $dirr=$_GET["url"];
      $newfile=$dirr."/".$add;

      if(!file_exists($newfile)){
        fopen("$newfile","w");
        $dirr=dirname($newfile);
        $error="\"".$add."\" file set up already";
        return $error;
        break;
      }else{
        $error="Sorry : The \"$add\" is existed!";
        return $error;
        break;
      }
    
    // 执行删除文件命令条
    case 2:
      $url=$_GET["url"];
      $del=$_GET["del"];
      $delfile=$url."/".$del;
      if(file_exists($delfile)){
        unlink($delfile);
        $yest="The \"$del\" File deleted";
        return $yest;
        break;
      }else{
        $yest="Sorry : The File \"$del\" no exist!";
        return $yest;
        break;
      }

    // 执行添加文件夹命令条
    case 3:
      $dirr=$_GET["url"];
      $adddir=$_GET["adddir"];
      $adddor=$dirr."/".$adddir;
      if(!file_exists($adddor)){
        mkdir($adddor);
        $dirr=dirname($adddor);
        $error="\"".$adddir."\" Directroy set up already";
        return $error;
        break;
      }else{
        $error="Sorry : The directroy \"".$adddir."\" is existed!";
        return $error;
        break;    
      }

    // 执行删除文件夹命令条
    case 4:
      $url=$_GET["url"];
      $del=$_GET["del"];
      $delfile=$url."/".$del;

      if(file_exists($delfile)){
        deldir($delfile);
        $yest="\"".$del."\" Directory deleted";
        return $yest;
        break;
      }else{
        $yest=" Sorry: The directro \"y$del\" is no exist! ";
        return $yest;
        break;
      }
  }
}
?>
 
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++网页 区+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++页头 区+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Briefness manage file system <?php echo BANQUAN; ?></title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <style type="text/css">
      body {
        background:#9d94ca;
      }

      a {
        text-decoration:none;
        color:red;
      }
      .jiacu {
        font-weight:bold;
        font-size:13px;
        color:#fff;
      }
    </style>
  </head>
  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++页头区 END+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 
  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++内容 区+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
  <body>
    <!-- ++++++++++++++++++++++++文件列表表格++++++++++++++++++++++++++ -->
    <center><h2>Briefness manage file system</h2></center>
    <hr width="60%">
    <!-- ++++++++++++++++++++++++显示当前操作目录++++++++++++++++++++++++++ -->
 
    <!-- ++++++++++++++++++++++++导航栏++++++++++++++++++++++++++ -->
    <div style="width:798px; height:30px; margin:20px auto 0px; border:1px solid #4c89ca;">
      <div style="width:650px; float:left; margin-left:20px; font-size:15px; font-weight:bold; line-height:30px; color:#fff;">
      <!-- ++++++++++++++++++++++++GOTO表单++++++++++++++++++++++++++ -->
 
        <form action="a.php" method="get">
        Operate Current Directroy :
        <input type="text" name="dirr" size="60" value="<?php echo $dirr; ?>" />&nbsp;&nbsp;
        <input type="submit" name="tijiao" value="goto" />
        </form>
 
      <!-- ++++++++++++++++++++++++GOTO表单END++++++++++++++++++++++++++ -->
      </div>
 
      <div style="float:right;
            line-height:22px;
            margin:5px 10px auto auto;
            text-align:center;
            width:70px; height:20px;
            font-weight:bold;
            background:#0f0;
            color:#fff;
            border-bottom:1px solid #666;
            border-right:1px solid #666;">
        <a style="color:#4a4c4a;" href="a.php?tijiao=ok&dirr=<?php echo dirname($dirr); ?>">&lt;&lt;Back</a>
      </div>
 
      <div style="clear:blod;"></div>
    </div>

    <!-- ++++++++++++++++++++++++GOTO错误提示++++++++++++++++++++++++++ --> 
    <?php
    if($adderres){
    echo "<div style=\"width:798px; height:25px; border:1px solid #9d94ca; margin:0px auto; line-height:0px; text-align:center;\">
            <p style=\"line-height:0px; color:#760E18; font-size:13px; font-weight:bold;\">$adderres</p>
        </div>";
    }
    ?>
    <!-- ++++++++++++++++++++++++GOTO错误提示END++++++++++++++++++++++++++ -->
    <!-- ++++++++++++++++++++++++导航栏END++++++++++++++++++++++++++ -->
    <!-- ++++++++++++++++++++++++显示当前操作目录END++++++++++++++++++++++++++ -->
 
    <table align="center" width="800" border="1">
      <tr>
        <th width="300">File & Directroy Name</th>
        <th>Type</th>
        <th>Size</th>
        <th>Mod-time</th>
        <th>Option</th>
      </tr>
    <?php
    // 循环遍历输出文件或文件夹目录    
    $summm=0;
    $dirmmm=0;
    $filemmm=0;
    $zongsize=0;
    if(file_exists($dirr) && is_dir($dirr)){
      if($bb=opendir($dirr)){
        while($hh=readdir($bb)){
          if($hh!="." && $hh!=".."){
            $filehaha=$dirr."/".$hh;
            $summm++;  // 统计所有对象
            if(is_dir($filehaha)){        // 文件夹则加粗显示
              echo "<tr><td style=\"font-weight:bold;\">$hh</td>";
              $dirmmm++;
            }elseif(is_file($filehaha)){
              echo "<tr><td>$hh</td>";  // 文件则正常显示
              $filemmm++;
            }

            echo "<td>".ucfirst(filetype($filehaha))."</td>";     // 文件类型

            if(is_dir($filehaha)){                // 文件夹大小
              $dani=dirsize($filehaha);
              if($dani==""){
                echo "<td>0 bytes</td>";    
              }else{
                if($dani<1024)
                  echo "<td>$dani Bytes</td>";
                elseif($dani<1024*1024)
                  echo "<td>".sprintf("%0.2f",$dani/1024)." KB</td>";
                elseif($dani<1024*1024*1024)
                  echo "<td>".sprintf("%0.2f",$dani/1024/1024)." MB</td>";
                else
                  echo "<td>".sprintf("%0.2f",$dani/1024/1024/1024)." GB</td>";

                $zongsize+=$dani;      // 累加大小
              } 

            }elseif(is_file($filehaha)){
              $danini=filesize($filehaha);        // 文件大小
              if($danini<1024)
                echo "<td>$danini Bytes</td>";
              elseif($danini<1024*1024)
                echo "<td>".sprintf("%0.2f",$danini/1024)." KB</td>";
              elseif($danini<1024*1024*1024)
                echo "<td>".sprintf("%0.2f",$danini/1024/1024)." MB</td>";
              else
                echo "<td>".sprintf("%0.2f",$danini/1024/1024/1024)." GB</td>";
              $zongsize+=$danini;

            }

            echo "<td>".date("Y-m-d H:i",filemtime($filehaha))."</td>";  // 打印日期

            // 操作选项---------------------------------------------------------------
            if(is_dir($filehaha)){   // 文件夹操作
              echo "<td><a href='a.php?tijiao=ok&subb=4&del={$hh}&url={$dirr}'>&nbsp;DEL</a>";
              echo "<a href='a.php?tijiao=ok&info={$filehaha}'>&nbsp;<font color='#00FFFF'>INTO</font></a></td></tr>";
            }elseif(is_file($filehaha)){   // 文件操作
              echo "<td><a href='a.php?tijiao=ok&subb=2&del={$hh}&url={$dirr}'>&nbsp;DEL</a>";
              // 将判断文件类型进行显示操作按钮--------------------------------------
              if(preg_match("/\.(txt|php|asp|log|ini|css|js|htm|html)$/i",$filehaha)){
                echo "<a href='a.php?tijiao=ok&edit={$hh}&url={$dirr}'>&nbsp;<font color='#0000FF'>EDIT</font></a></td></tr>";
              }elseif(preg_match("/\.(jpeg|gif|ico|png|jpg|bmp)$/i",$filehaha)){
                echo "<a href='a.php?tijiao=ok&viw={$hh}&url={$dirr}'>&nbsp;<font color='#FFFF00'>LOOK</font></a></td></tr>";
              }else{
                echo "&nbsp;<font color='#cccccc'>UNOP</font></td></tr>";
              }
            }
          }
        }
      }
    }
    ?>
    </table>
    <!-- +++++++++++++++++++++++++++++++++++文件列表表格END++++++++++++++++++++++++++++++ -->
 
    <!-- +++++++++++++++++++++++++++++++++++状态栏++++++++++++++++++++++++++++++ -->
 
    <div style="width:798px; margin:20px auto 20px; height:40px; border:1px dashed #00f; line-height:50px;">
      <span style="
        position:relative;
        display:block;
        color:#fff;
        font-size:13px;
        text-align:center;
        line-height:25px;
        font-weight:bold;
        width:250px;
        height:20px;
        background:#9d94ca;
        top:-15px; left:20px;">State and File-Directroy Tole sum:</span>
 
      <div style="
        position:relative;
        top:-40px;
        width:790px;
        text-align:left;
        margin:20px auto 0px;
        height:40px;
        font-weight:bold;
        font-size:13px;
        color:#0f0;">
        &nbsp;&nbsp;
 
        <?php // 状态栏判断显示
        if($summm==0){   // 判断如果对象总数为零
          echo " The directroy is empty! ";  // 显示文件夹为空
        }else{  
          echo " Object $summm <font color='white'> | </font> ";     // 显示对象总数
          if($dirmmm==0)                                              // 显示文件夹总数
            echo " Dir No <font color='white'> | </font>";
          else
            echo " Dir $dirmmm <font color='white'> | </font>";
          if($filemmm==0)                                               // 显示文件总数
            echo " Dir No <font color='white'> | </font> ";
          else
            echo " File $filemmm  <font color='white'> | </font> ";

          if($zongsize<1024){                                        // 显示总大小
            echo " Allsize $zongsize bytes";
          }elseif($zongsize<1024*1024){
            echo " Allsize ".sprintf("%0.2f",$zongsize/1024)." KB";
          }elseif($zongsize<1024*1024*1024){
            echo " Allsize ".sprintf("%0.2f",$zongsize/1024/1024)." MB";
          }else{
            echo " Allsize ".sprintf("%0.2f",$zongsize/1024/1024/1024)." GB";
          }
          
          // 显示磁盘剩余空间 以及总容量
          echo "<div style=\"float:right; width:280px; height:40px;\">";
          echo " Diskfree ".sprintf("%0.2f",disk_free_space($dirr)/1024/1024/1024)." G <font color='white'> | </font>";
          echo " Diskspace ".sprintf("%0.2f",disk_total_space($dirr)/1024/1024/1024)." G";
          echo "</div>";
        } 
        ?>
      </div>
      <div style="clear:both;"></div>
      <!-- +++++++++++++++++++++++++++++++++++状态栏END++++++++++++++++++++++++++++++ -->
      
      <!-- +++++++++++++++++++消息提示++++++++++++++++++++++++++ -->
      <center><font color="blue"><?php echo $yest; ?></font></center>
      <!-- ++++++++++++++++++++消息提示END++++++++++++++++++++++ -->
      <br />
      <!-- +++++++++++++++++++++++++++++++++++添加文件或文件夹表格+++++++++++++++++++++++++ -->
      <table align="center" border="0" width="500">
      <!-- +++++++++++++++添加文件表单域+++++++++++++ -->
        <form action="a.php" method="get">
          <input type="hidden" name="subb" value="1" />
          <input type="hidden" name="url" value="<?php echo $dirr; ?>" />
          <tr>
            <td width="450" align="right">AddFile:&nbsp;<input type="text" name="add" size="50" value="Please improt filename" /></td>
            <td><input type="submit" name="tijiao" value="OK" /></td>
          </tr>
        </form>
        <!-- ++++++++++++++++添加文件表单域END++++++++++++++++++++++++++++++++++++ -->

        <!-- +++++++++++++++++++添加文件夹表单域++++++++++++++++++++++++++++++ -->
        <form action="a.php" method="get">
          <input type="hidden" name="subb" value="3" />
          <input type="hidden" name="url" value="<?php echo $dirr; ?>" />
          <tr>
            <td width="450" align="right">AddDirectory:&nbsp;
            <input type="text" name="adddir" size="50" value="Please improt directroyname" /></td>
            <td><input type="submit" name="tijiao" value="OK" /></td>
          </tr>
        </form>
        <!-- ++++++++++++++++++++++添加文件夹表单域END+++++++++++++++++++++ -->
      </table>
      <!-- +++++++++++++++++++++++++++++++++++添加文件或文件夹表格END++++++++++++++++++++++++++++++++++++ -->
 
      <!-- +++++++++++++++++++消息提示++++++++++++++++++++++++++ -->    
 
      <center><font color="red"><?php echo $error; ?></font></center>
      <br />
      <!-- ++++++++++++++++++++消息提示END++++++++++++++++++++++ -->
      <!-- ++++++++++++++++++++++++++++++++编辑页面区+++++++++++++++++++++++++++++++++++++ -->
      <?php
        if($editfile){
          $duquwenben=file_get_contents($editfile);
          echo "<table width=500 align=center border=1><form action=a.php method=post>";
          echo "<tr><td>Editing: $edit </td></tr>";
          echo "<tr><td height=300><textarea name=newconten rows=20 cols=100>".htmlspecialchars($duquwenben)."</textarea></td></tr>";
          echo "<input type=hidden name=editsave value=$editfile />";
          echo "<tr><td align=center><input type=submit name=tijiao value=Save /><input type=reset value=reset /></td></tr>";
          echo "</form></table>";
        }
        /******************查看照片区*******************************/
        if($phototo){
          echo "<div style=\"weight:798px; min-height:200px; border:1px solid #ccc; text-align:center;\">";
          echo "<a style='margin:auto;' href='a.php?tijiao=photo&url=$dirr' title='Click Off'><img src=\"file:///{$phototo}\" /></a>";
          echo "<div style=\"weight:798px; min-height:20px; text-align:center; vertical-align:middle;\">$viw</div>";
        }
      ?>
      <!-- ++++++++++++++++++++++++++++++++编辑页面区END+++++++++++++++++++++++++++++++++++++ -->
 
      <!-- ++++++++++++++++++++++++++++++++++++++页脚区++++++++++++++++++++++++++++++++++-->
      <div style="width:900px;
        margin:60px auto;
        text-align:center;
        line-height:40px;
        color:#666;
        border-top:2px solid #666;
        font-size:15px;
        height:40px;
        font-weight:bold;">
            Power by qttc.net &copy; 2011
      </div>
  </body>
</html>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++内容 区+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

...

READ ALL

JavaScript按钮倒计时示例

最早的倒计时效果应该是普遍应用在注册协议那一关,可能是网站为了防止恶意注册而出此下策。现在发送手机信息已是众多网站中常见的一种交互方式了,其中最普遍的就是发送手机验证码。

为了防止用户恶意点击发送验证码造成损失,几乎所有网页中要发送验证码的地方都做了JavaScript倒计时控制,当然最安全的还是要在服务器端做控制。即当用户点击了按钮获取验证码后,需要等待三十秒或六十秒才能再次点击,以下是示例代码

JavaScript code

/** 
 * Nicholas Lee www.qttc.net
 * 倒计时函数
 * 需要在按钮上绑定单击事件
 * 如: <input value="发送短信" data-cke-editable="1" data-cke-pa-onclick="setInterval('countDown(this,30)',1000);" contenteditable="false" type="button">
 * 30代表秒数,需要倒计时多少秒可以自行更改
 */
function countDown(obj,second) {
  // 如果秒数还是大于0,则表示倒计时还没结束
  if(second>=0){
    // 获取默认按钮上的文字
    if(typeof buttonDefaultValue === 'undefined' ){
      buttonDefaultValue =  obj.defaultValue;
    }
    // 按钮置为不可点击状态
    obj.disabled = true;            
    // 按钮里的内容呈现倒计时状态
    obj.value = buttonDefaultValue+'('+second+')';
    // 时间减一
    second--;
    // 一秒后重复执行
    setTimeout(function(){countDown(obj,second);},1000);
  // 否则,按钮重置为初始状态
  }else{
    // 按钮置未可点击状态
    obj.disabled = false;   
    // 按钮里的内容恢复初始状态
    obj.value = buttonDefaultValue;
  }   
}

...

READ ALL

jQuery实现全选反选效果

有时候,我们对一些列表操作经常需要全选,反选功能。例如博客里文章列表,我们可以全选或反选后可以对选中的文章进行删除,下线,移动,复制等操作。下面直接贴出例子代码

jQuery code

// Nicholas Lee www.qttc.net

// 当文档加载完后      
$(document).ready(function(){
  // 给全选框加上动作    
  $(":checkbox[value='全选']").click(function(){
    // 获取全部标签
    $ul = $('ul li :checkbox');
    // 判断勾选还是取消
    if($(this).is(':checked')){
      // 如果勾选则全部选项选上            
      $ul.each(function(){
        $(this).attr('checked',true);
      });    
    }else{
      // 如果取消则全部选项取消            
      $ul.each(function(){
        $(this).attr('checked',false);
      });        
    }            
  });

  // 给反选框加上动作
  $(":checkbox[value='反选']").click(function(){
    // 获取全部标签
    $ul = $('ul li :checkbox');

    $ul.each(function(){
      // 判断是否已经勾选
      if($(this).is(':checked')){
        // 如果已经勾选则取消
        $(this).attr('checked',false);
      }else{
        // 如果未勾选则选上    
        $(this).attr('checked',true);    
      }
    });                
  });

  // 给每个多选框加入动作
  $('ul li :checkbox').click(function(){
    // 获取未选标签
    $ul = $('ul li :checkbox:not(:checked)');
    // 判断是否有元素
    if($ul.length){
      // 如果有未选则取消全选框勾选状态    
      $(":checkbox[value='全选']").attr('checked',false);
    }else{
      // 如果没有则自动勾选上全选框状态    
      $(":checkbox[value='全选']").attr('checked',true);
    }
  });
});

...

READ ALL

PHP升到5.4版后PDO无法使用解决方法

昨天闲着无事,一贯追求最新版本的我也想试试最PHP最新版5.4的一些新功能。由于只是升级安装,所以升级过程非常简单

  • 下载PHP5.4版
  • 解压,配置,安装。安装目录直接指定原来安装的PHP目录覆盖安装
  • 安装后,杀掉php-fpm,重启Nginx,启动php-fpm

打开phpinfo()发现PHP已从原来的5.3.6变成了5.4.0,一阵狂喜。于是赶紧打开服务器上的项目挨个看看,其它项目都还正常,只是其中有一个项目报错提示找不到驱动模块。

郁闷,来不及多想谷歌一下发现大多数网友都说把php.ini配置文件里的相应模块打开

...

READ ALL