PHP计算两个时间相差的年数、月数和天数程序

 更新时间:2016年11月25日 17:26  点击:1586
计算时间差我们原理是根据定义1、一年为360天,一个月为30天;2、代码中86400=24*60*60,代表一天中共有多少秒,这样就可以计算出来了

效果如下

代码如下,需要说明的是:1、定义一年为360天,一个月为30天;2、代码中86400=24*60*60,代表一天中共有多少秒;3、这两个时间都要规范的写成类似2013-07-28的形式;4、推广到所有的PHP程序,可以把Get_option('swt_builddate')这个wordpress获取后台数据的参数改成需要比较的时间参数。

   

 代码如下 复制代码
<?php
    //Get detail gap of year,month and days between two different time by vfhky 20130728
    $common = (time()-strtotime(get_option('swt_builddate')));
    $a = floor($common/86400/360); //整数年
    $b = floor($common/86400/30) - $a*12; //整数月
    $c = floor($common/86400) - $a*360 - $b*30; //整数日
    $d = floor($common/86400); //总的天数
    echo $a."年".$b."月".$c."日(共计".$d."天)";
    ?>

其它的一些方法

 代码如下 复制代码

<?php
function count_days($a,$b){
 $a_dt=getdate($a);
 $b_dt=getdate($b);
 $a_new=mktime(12,0,0,$a_dt['mon'],$a_dt['mday'],$a_dt['year']);
 $b_new=mktime(12,0,0,$b_dt['mon'],$b_dt['mday'],$b_dt['year']);
 return round(abs($a_new-$b_new)/86400);
}
//今天与2008年10月11日相差多少天
$date1=strtotime(time());
$date1=strtotime('10/11/2008');
$result=count_days($date1,$date2);
echo $result;
?>

例2

 代码如下 复制代码

<?php
//今天与2008年9月9日相差多少天
$Date_1=date("Y-m-d");
$Date_2="2008-10-11";
$d1=strtotime($Date_1);
$d2=strtotime($Date_2);
$Days=round(($d2-$d1)/3600/24);
echo "今天与2008年10月11日相差".$Days."天";
?>

总结

从上面实例我们可以看得出来其实就是使用mktime与strtotime了,然后再通过计算出来的时间进行加减就得出来我们要的时间日期了。

购物车实现方法最常用的几种方法有,cookie,session与把记录保存到数据库,下面我来介绍最简单的方法就利用cookie作为购物车的商品记录存储库。

PHP购物车,在互联网中有好多网店,他们是怎样实现购物车?大多的网站都用cookie来实现。偶也自己写了一个简单的实例让大家参考一下

用cookie简单的实现购物车

数据库:

 代码如下 复制代码

– phpMyAdmin SQL Dump
– version 2.11.9.2

– 主机: 127.0.0.1:3306
– 生成日期: 2009 年 12 月 06 日 02:05
– 服务器版本: 5.1.28
– PHP 版本: 5.2.6

SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;


– 数据库: `shopper`

– ——————————————————–


– 表的结构 `shop`

CREATE TABLE IF NOT EXISTS `shop` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `price` int(11) NOT NULL,
  `title` varchar(110) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;


– 导出表中的数据 `shop`

INSERT INTO `shop` (`id`, `price`, `title`) VALUES
(1, 100, ‘玉米’),
(2, 200, ‘大豆’),
(3, 500, ‘西瓜’),
(4, 900, ‘冬瓜’),
(5, 800, ‘大米’);

PHP代码文件:

 代码如下 复制代码

<?php
/*
作者:简单小屋
QQ群1:32311900(满)
QQ群2:50900416
QQ2:39407******(满)简单小屋
QQ2:8726****  海角
*/
$conn=mysql_connect(“localhost”,”root”,”");
mysql_select_db(“shopper”,$conn);
mysql_query(“SET NAMES utf8″);
$sql=”SELECT * FROM `shop`  WHERE 1 “;
$sql2=mysql_query($sql);

if($_POST[ok]){
  $_POST[number]=(int)$_POST[number];
  if($_POST[number]>0){
  $idid=$_POST[id];
  setcookie(“cookie_arr[$idid]“,$_POST[title].”|”.$_POST[number].”|”.$_POST[price].”|”.$_POST[number]*$_POST[price],time()+36000);
  header(“location:shop.php”);
 }else{
 echo “输入的数量不正确.<br>”;
 }
}
if(isset($_COOKIE['cookie_arr'])){ 
     foreach($_COOKIE['cookie_arr']   as   $name   =>   $value)   {
                   $value2=explode(“|”,$value); 
                  echo   “ID({$name}) — $value2[0] — 数量:$value2[1]   –  单价:$value2[2]  –  总价格:$value2[3]  <hr   />n”; 
        } 

}
?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “<html xmlns=”<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>无标题文档</title>
</head>
<body>
<?php
while($row=mysql_fetch_array($sql2)){
?>
<form action=”" method=”post”>
  <input name=”id” type=”hidden” value=”<?php echo $row[id]; ?>” />
  <input name=”price” type=”hidden” value=”<?php echo $row[price]; ?>” />
  <input name=”title” type=”hidden” value=”<?php echo $row[title]; ?>” />
  id:<?php echo $row[id]; ?><br />
  商品名:<?php echo $row[title]; ?><br />
  价格:<?php echo $row[price]; ?><br />
  数量:
  <input name=”number” type=”text” value=”1″ size=”5″ />
  <input name=”ok” type=”submit”  value=”购买”/>
</form>
<hr />
<?php
}
?>
</body>
</html>


缺点分析

cookie作为购物车很容易丢失了,如果用户清除浏览器缓存就有可能丢失cookie值哦,所以一般正常情况都是利用cookie+数据库来实例。

在php中mkdir函数是创建目录它自身是不可以递归创建目录了,我们需要遍历进行目录然后调用mkdir即可,下面来看一下操作方法。

 代码如下 复制代码

<?php
/**
 * Makes directory and returns BOOL(TRUE) if exists OR made.
 *
 * @param  $path Path name
 * @return bool
 */
function rmkdir($path, $mode = 0755) {
    $path = rtrim(preg_replace(array("/\\/", "//{2,}/"), "/", $path), "/");
    $e = explode("/", ltrim($path, "/"));
    if(substr($path, 0, 1) == "/") {
        $e[0] = "/".$e[0];
    }
    $c = count($e);
    $cp = $e[0];
    for($i = 1; $i < $c; $i++) {
        if(!is_dir($cp) && !@mkdir($cp, $mode)) {
            return false;
        }
        $cp .= "/".$e[$i];
    }
    return @mkdir($path, $mode);
}

?>

例2

Somehow the recursive version of mkdir didn't work for me on Mac and the workaraounds listed

below alsow didn't work for me, so heres my solution:

 代码如下 复制代码

<?php
function mkdir_r($dirName, $rights=0777){
    $dirs = explode('/', $dirName);
    $dir='';
    foreach ($dirs as $part) {
        $dir.=$part.'/';
        if (!is_dir($dir) && strlen($dir)>0)
            mkdir($dir, $rights);
    }
}
?>

Tested and works ;)


例3

 代码如下 复制代码

function mkdirs($dir)

    {

        if(!is_dir($dir))

        {

            if(!mkdirs(dirname($dir))){

                return false;

            }

            if(!mkdir($dir,0777)){

                return false;

            }

        }

        return true;

    }

    function rmdirs($dir)

    {

        $d = dir($dir);

        while (false !== ($child = $d->read())){

            if($child != '.' && $child != '..'){

                if(is_dir($dir.'/'.$child))

                rmdirs($dir.'/'.$child);

                else unlink($dir.'/'.$child);

            }

        }

        $d->close();

        rmdir($dir);

    }


三个创建目录的函数都有自己的优点,这里我也没有一个个测试了,只使用了第二个感觉非常的不错。

在网上找了很多种用Curl伪造客户端源IP的一些方法,几乎都是使用curl函数,后来查证了此函数的使用果 然是强大,不但可以伪造客户端源IP还可以伪造代理IP哦,下面我们来看看代码。

一般服务器获取客户IP有三种情况
1.在没用代理的情况下:


#http://www.111cn.net
REMOTE_ADDR =客户IP
HTTP_VIA = 空
HTTP_X_FORWARDED_FOR = 空

2.在使用代理且代理服务器有设置转发客户端IP的情况:

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 客户IP

HTTP_VIA和HTTP_X_FORWARDED_FOR值可通过添加Header头自定义,进而可通过此隐藏客户端IP,前提是服务

器端有启用X_FORWARDED_FOR。

测试效果,服务器端新建PHP程序:

1.php 请求 index.php 。
1.php代码:

 代码如下 复制代码

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/index.php");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8')); 

//构造IP
curl_setopt($ch, CURLOPT_REFERER, "http://www.111cn.net/ ");   //构造来路
curl_setopt($ch, CURLOPT_HEADER, 1);
$out = curl_exec($ch);
curl_close($ch);


2.php代码如下:

 代码如下 复制代码

<?php
function getClientIp() {
    if (!empty($_SERVER["HTTP_CLIENT_IP"]))
        $ip = $_SERVER["HTTP_CLIENT_IP"];
    else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    else if (!empty($_SERVER["REMOTE_ADDR"]))
        $ip = $_SERVER["REMOTE_ADDR"];
    else
        $ip = "err";
    return $ip;
}

echo "IP: " . getClientIp() . "";
echo "referer: " . $_SERVER["HTTP_REFERER"];

echo "IP: " . getClientIp() . "";
echo "referer: " . $_SERVER["HTTP_REFERER"];

伪造成功,这是不是给“刷票”的朋友提供了很好的换IP的方案!!
哈哈。

结果:
HTTP/1.1 200 OK Date: Wed, 03 Apr 2013 06:20:42 GMT Server: Apache/2.2.22 (Win32) PHP/5.3.13

X-Powered-By: PHP/5.3.13 Content-Length: 44 Content-Type: text/html
IP: 8.8.8.8
referer: http://www.111cn.net/

下面看关于curl函数

curl相关函数列表:
curl_init — 初始化一个CURL会话
curl_setopt — 为CURL调用设置一个选项
curl_exec — 执行一个CURL会话
curl_close — 关闭一个CURL会话
curl_version — 返回当前CURL版本
1>curl_init — 初始化一个CURL会话

多进程可以说php在这方面比起java差得太多了,下面出现好玩找到一个关于PHP多进程实例,给大家看一下。
 代码如下 复制代码

<?php
$cmds=array(a,b,c,d);
foreach($cmds as $cmd){
 $pid = pcntl_fork();
 if($pid == -1) {
  exit("pid fork error");
 }  
 if($pid) { //主进程段,控制子进程数量
  static $max = 0;
  $max++;
  if($max >= 5) {
   pcntl_wait($status); //阻塞父进程,直到子进程结束
   $max--;
  }  
 } else { //子进程执行命令
  $pid = posix_getpid();
  echo "$pid----$cmdnn";
  exit(0);
 }  
}  
?>
[!--infotagslink--]

相关文章

  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • python 计算方位角实例(根据两点的坐标计算)

    今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25
  • 微信小程序 网络请求(GET请求)详解

    这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • 微信小程序自定义tabbar组件

    这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • Python爬取微信小程序通用方法代码实例详解

    这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29
  • 微信小程序(应用号)开发新闻客户端实例

    这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25
  • JS实现购物车中商品总价计算

    这篇文章主要为大家详细介绍了JS实现购物车中商品总价的计算 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-07
  • 微信小程序手势操作之单触摸点与多触摸点

    这篇文章主要介绍了微信小程序手势操作之单触摸点与多触摸点的相关资料,需要的朋友可以参考下...2017-03-13
  • 手把手教你uniapp和小程序分包(图文)

    本文主要介绍了手把手教你uniapp和小程序分包,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-02
  • 微信小程序 页面跳转传递值几种方法详解

    这篇文章主要介绍了微信小程序 页面跳转传递值几种方法详解的相关资料,需要的朋友可以参考下...2017-01-16
  • 微信小程序实现canvas分享朋友圈海报

    这篇文章主要为大家详细介绍了微信小程序实现canvas分享朋友圈海报,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21