多数大学生出来选择的工作和专业无关
首页 > 专业知识

php中计算时间差的几种方法

时间:2018-04-23 18:30:29 [来源]:郑州PHP培训学校

   php中计算时间差的几种方法

  在php中计算时间差有时候是件麻烦的事!不过只要你掌握了日期时间函数的用法那这些也就变的简单了:
  一个简单的例子就是计算借书的天数,这需要php根据每天的日期进行计算,下面就来谈谈实现这种日期计算的几种方法:
  (1) 如果有数据库就很容易了!若是MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可!
  若是MYSQL那就用两个日期字段的差值计算的计算结果保存在另一个数值型字段中!用时调用便可!
  (2)如果没有数据库,那就得完全用php的时间日期函数!下面主要说明之:
  例:计算1998年5月3日到1999-6-5的天数:
  $enddate=mktime("0","0","0","6","5","1999");//所得到的值为从1970-1-1到参数时间的总秒数:是整数.那么//下面的代码就好编多了:
  $days=round(($enddate-$startdate)/3600/24) ;echo $days;
  //days为得到的天数;
  若mktime()中的参数缺省,那表示使用当前日期,这样便可计算从借书日期至今的天数.
  用PHP自动把纯文本转换成Web页面
  这就是本篇文章的内容。我将告诉你如何使用PHP来快速将纯ASCII文本完美地转换成为可读的HTML标记。
  本篇文章的内容。我将告诉你如何使用PHP来快速将纯ASCII文本完美地转换成为可读的HTML标记。
  首先让我们来看一个我朋友希望转换的纯文本文件的例子:
  Green for Mars!
  John R. Doe
  The idea of little green men from Mars, long a staple of science fiction, may soon turn out to be less fantasy and more fact.
  Recent samples sent by the latest Mars exploration team indicate a high presence of chlorophyll in the atmosphere. Chlorophyll, you will recall, is what makes plants green. It's quite likely, therefore, that organisms on Mars will have, through continued exposure to the green stuff, developed a greenish tinge on their outer exoskeleton.
  An interview with Dr. Rushel Bunter, the head of ASDA's Mars Colonization Project blah blah...
  What does this mean for you? Well, it means blah blahblah...
  Track follow-ups to this story online at http://www.mars-connect.dom/. To see pictures of the latest samples, log on to http://www.asdamcp.dom/galleries/220/相当标准的文本:它有一个标题、一个署名和很多段的文字。把这篇文档转换成为HTML真正需要做的是使用HTML的分行和分段标记把原文的布局保留在Web页面上。特殊的标点符号需要被转换成为对应的HTML符号,超链接需要变得可以点击。
  下面的PHP代码(列表A)就会完成上面所有的任务:
  列表A
  让我们来看看它是如何工作的:
  以下是引用片段:
  // set source file name and path
  $source = "toi200686.txt";
  // read raw text as array
  $raw = file($source) or die("Cannot read file");// retrieve first and second lines (title and author)$slug = array_shift($raw);
  $byline = array_shift($raw);
  // join remaining data into string
  $data = join('', $raw);
  // replace special characters with HTML entities// replace line breaks with
  $html = nl2br(htmlspecialchars($data));
  // replace multiple spaces with single spaces$html = preg_replace('/ss+/', ' ', $html);// replace URLs with elements
  $html = preg_replace('/s(w+://)(S+)/', ' ', $html);// start building output page
  // add page header
  $output =<<< HEADER
  .slug {font-size: 15pt; font-weight: bold}
  .byline { font-style. italic }
  HEADER;
  // add page content
  $output .= "
  $slug
  ";
  $output .= "
  By $byline
  ";
  $output .= "
  $html
  ";
  // add page footer
  $output .=<<< FOOTER
  用PHP实现Ftp用户的在线管理
  实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到Mysql数据库内,同时以该用户的注册名创建一个FTP上传账号并创建该用户的相应目录。
  领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品。通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。
  实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到Mysql数据库内,同时以该用户的注册名创建一个FTP上传账号并创建该用户的相应目录。
  Ftp服务器是系统默认带的,采用系统用户的用户名和密码,创建系统用户就等于创建FTP用户,FreeBSD是属于UNIX阵营的操作系统,它没有象Linux一样的useradd和groupadd等创建用户和组的命令,其取而代之的是pw命令加上相应参数来实现,在Freebsd上以管理员的身份创建一个用户的命令是以下是引用片段:
  echo | pw useradd [-g][groupname] [-s][shelldir][-h 0]
  参数g指定用户组,参数s指定用户的shell。
  如果是普通用户登陆的话还必须用到su命令,调用的方法是以下是引用片段:
  su root –c ‘echo | pw useradd [-g][groupname] [-s][shelldir][-h 0] ’
  执行之后系统会要求输入管理员密码,输入密码就可以以管理员的身份执行这个命令了。
  实现这步操作的主要难点在于如何通过PHP来调用上面这些系统命令去创建一个用户,本例是使用PHP中的popen()函数来实现的,该函数执行指令打开文件,语法是int popen(string command, string mode),其打开的文件只能是单向的,只能读或只能写,对应的“string mode”为’r’或’w’,“string command” 就是命令字符串,在对文件的操作上可使用 fgets()、fgetss()与fputs()函数,本例用fputs()函数往文件里面输入管理员密码。若是开档发生错误将返回 false 值,最后函数要记得调用pclose()关闭。
  下面我们来规划一下FTP用户的组,事先我们先用pw groupadd ftpuser创建ftpuse组,让在线申请的用户为这个组的成员。为了安全起见,我们不应该给FTP用户Telnet权限,所以我们还要专门给他们创建一个shell,使得他们不能通过Telnet正常登陆系统,方法如下:先创建一个文件/bin/ftponly以下是引用片段:
  #!/bin/csh
  /bin/cat << XX
  You can ony use this username to login ftp server!
  And you can not use it to telnet to this system! XXsleep 10
  该文件中XX之间就是显示给用telnet登陆的用户看的信息。信息显示10秒钟就自动退出了。最后不要忘记用chmod +x /bin/ftponly给这个文件可执行属性。
  然后在/bin/shell文件中添加“/bin/ftponly”,在以后的命令里面我们就可以利用pw中-s参数把这个shell指定给FTP用户了。
  最后还要注意一个问题,su命令仅仅是wheel管理组的用户成员才可以使用,当PHP调用su命令的时候也必须以wheel组成员的身份运行,否则系统拒绝运行,而PHP运行系统命令的身份就是Apache Web服务器运行的身份,初始的用户名和用户组都是nobody,所以先得建立一个wheel组的用户www供apache使用,接着更改Apache的配置文件httpd.conf中的user为www,group为wheel,重新启动Apache,就可以以新用户身份运行了。
  下面可以创建PHP源文件checkin.php了,代码如下:
  以下是引用片段:
  { $rootpasswd="adminpassword"; //定义管理员密码$creatuser ="su --login root -c 'echo ".$userpasswd." | pw useradd ".$username." -s /bin/ftponly -g ftpuser –s /bin/ftponly -h 0' "; //这是利用su和pw命令创建用户的用到的字符串$fp=popen($creatuser,"w"); //调用popen()函数执行字符串中的命令,返回文句柄给$fpfputs($fp,$rootpasswd); //写入管理员密码到文件$fp,相当于输入密码给系统pclose($fp);//关闭文件
  $creatdir="su --login root -c 'mkdir /home/".$username."'";//创建用户目录的命令字符串$fp=popen($creatdir,"w");//执行命令创建用户目录fputs($fp,$rootpasswd); //输入管理员密码
  pclose($fp);
  $creatdir="su --login root -c 'mkdir /home/".$username."/public_html'";$fp=popen($creatdir,"w"); //执行命令创建用户网站根目录fputs($fp,$rootpasswd); //输入管理员密码
  pclose($fp);
  $creatdir="su --login root -c 'chown ".$username." /home/".$username."'"; //改变用户目录的所有者为用

上一篇:详解如何正确配置PHP开发环境

下一篇:有助于面试的10条PHP编程习惯