0%

代码中用到了jQuery,传入的参数是jQuery选择的input对象.原理:先用正则匹配,再提取时分秒,看其是否在正常的范围内。

/**
 * 检测时间是否符合格式
 * @param {Object} timeTextBox
 */
function checkTime(timeTextBox){
    var time = timeTextBox.val();
    var regTime = /^([0-2][0-9]):([0-5][0-9]):([0-5][0-9])$/;
    var result = false;
    if (regTime.test(time)) {
        if ((parseInt(RegExp.$1) < 24) && (parseInt(RegExp.$2) < 60) && (parseInt(RegExp.$3) < 60)) {
            result = true;
        }
    }
    if (result) {
        $("#errmsg").html("");
    }else {
        timeTextBox.attr({
            value: ""
        });
        timeTextBox.focus();
        $("#errmsg").html("时间格式错误");
    }
    return result;
}

接收一组checkbox复选框的值,关键在于checkbox的name属性。同组checkbox的name属性必须相同,且以[]结尾,如下:

<input type="checkbox" name="syncSection[]" value="pubBook" />

php接收:

$syncSection=$_POST['syncSection'];

参数不需要加[] 接收到的是数组。

<?php 
$start  = strtotime ("2012-03-23 23:00:00");
$end    = strtotime ("2012-03-23 22:00:00");
$differ = $end - $start;
echo $differ;
//以秒为单位的间隔时间

$datetime1 = new DateTime("2012-04-16 04:58:52");
$datetime2 = new DateTime("2012-04-16 05:58:50");
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a天%H小时%i分%s秒');
//用DateTime可以很方便格式化
?>

默认情况下,框架内的页面如果重定向,重定向后的页面,还是显示在前一个页面在框架中的位置,而不会刷新两个框架。如果需要跳出框架,可以用下面的方法解决:

parent.location.href='../login.php'

在网上找了好久,貌似除了在数据库里加个随机字符串来验证外,没有任何其他方法了。我的方法是用户每次登录时把Cookie里的PHPSESSID写进数据库,在每个页面读cookie时,和数据库对比一下(当然包括其他的字段),这样可以实现,只能一台机器同时登录,后面登录,前面的cookie就失效,PHPSESSID是PHP自动随机生成的,没有规则。

原则上cookie只能保存字符串,所以要把对象存进cookie,需要先把对象序列化,在读取的时候,再反序列化。 保存:

use mylibs\User;
require_once 'mylibs/User.php';
$user=new User();
$user->setUsername('用户名');
$user->setAddress('地址');
$obj_str = serialize($user);
setcookie('user',$obj_str);

读取:

use mylibs\User;
require_once 'mylibs/User.php';
$user=unserialize($_COOKIE['user']);
echo $user->getUsername();
echo $user->getAddress();

但是奇怪的是,session却可以直接保存对象。 2012年4月22日补充:今天发现上面的代码在IE下有问题,读取后,部分属性会丢失,找不到解决方法,目前只好分别存储每一个属性。

php自带了microtime函数可以获取系统时间的微秒值,但是格式有点特别,分成两段,如0.73517400 1333632591,前一段就是微秒,我们需要提取,转换一下。

function currentMicroTime()
{
    $time = explode ( " ", microtime () );
    $time = $time [1] . ($time [0] * 100000000);
    return $time;
}

参数不定函数指的是参数的数量是不确定的,下面是例子是用来判断传过来的变量是否都不为空(empty函数,0也会返回true).

<?php
function isAllNotEmpty()
{
    //检查所有参数是否都不为空
    $num=func_num_args();
    //参数数量
    $list=func_get_args();
    //得到参数数组
    for($i=0;$i<$num;$i++)
    {
        if(empty($list[$i]))
            return false;
    }
    return true;
}
$a=1;
$b=0;
var_dump(isAllNotEmpty($a,$b));

?>

当php文件与smarty库不在同一级目录时,如在一个项目根目录中,存放smarty目录和admin目录,admin目录里的php文件就与smarty目录不同级,这时,在PHP中,必须指定templates和templates_c的路径,否则报错,提示: Fatal error: Uncaught exception ‘SmartyException’ with message ‘Unable to load template file ‘admin/XXXXXX’’ 正确的代码:

$smarty=new Smarty();
$smarty->template_dir="../templates";
$smarty->compile_dir="../templates_c";
$smarty->display("admin/login.html")