代码如下 | 复制代码 |
|
再来介绍一个POST表单提交的案例
代码如下 | 复制代码 |
//首先要引用这个类 |
在程序中直接判断
基本的错误处理:使用 die() 函数
第一个例子展示了一个打开文本文件的简单脚本:
代码如下 | 复制代码 |
<?php |
如果文件不存在,您会获得类似这样的错误:
Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in C:webfoldertest.php on line 2
更多详细的
代码如下 | 复制代码 |
<?php //处理:判断文件是否存在 file_exists } echo "OK"; //第一种:使用简单的die语句 /* if(!file_exists("aa.txt")){ } echo "OK";
|
第二种:错误处理器 错误级别 处理错误方式
代码如下 | 复制代码 |
<?php // */ //改写set_error_handler方法 function my_error2($errno,$errmes){ //打开一个文件 未做任何处理 //$fp =fopen("aa.txt","r"); //使用自定义错误 要添加触发器 这个trigger_error()函数来指定调用自定义的错误
|
PHP 异常处理
PHP 5 提供了一种新的面向对象的错误处理方法
如果异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出 "Uncaught Exception" (未捕获异常)的错误消息。
让我们尝试抛出一个异常,同时不去捕获它:
代码如下 | 复制代码 |
<?php //trigger exception |
上面的代码会获得类似这样的一个错误:
Fatal error: Uncaught exception 'Exception'
with message 'Value must be 1 or below' in C:webfoldertest.php:6
Stack trace: #0 C:webfoldertest.php(12):
checkNum(28) #1 {main} thrown in C:webfoldertest.php on line 6Try, throw 和 catch
要避免上面例子出现的错误,我们需要创建适当的代码来处理异常。
处理处理程序应当包括:
1.Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
2.Throw - 这里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"
3.Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象
让我们触发一个异常:
代码如下 | 复制代码 |
<?php //在 "try" 代码块中触发异常 //捕获异常 |
上面代码将获得类似这样一个错误:
Message: Value must be 1 or below
创建一个自定义的 Exception 类
创建自定义的异常处理程序非常简单。我们简单地创建了一个专门的类,当 PHP 中发生异常时,可调用其函数。该类必须是 exception 类的一个扩展。
这个自定义的 exception 类继承了 PHP 的 exception 类的所有属性,您可向其添加自定义的函数。
我们开始创建 exception 类:
代码如下 | 复制代码 |
<?php $email = "someone@example...com"; try catch (customException $e) |
这个新的类是旧的 exception 类的副本,外加 errorMessage() 函数。正因为它是旧类的副本,因此它从旧类继承了属性和方法,我们可以使用 exception 类的方法,比如 getLine() 、 getFile() 以及 getMessage()。
本程序可以快速的实现把我们的文件利用php压缩类压缩成我们想的zip,或者rar 的压缩包,后缀名可以自定义哦, 压缩算法是来自国外一个网站抄的。首先实例化,然后传参。两个参数。第一个关于你文件地址的一个Array。第二个是要你要保存的压缩包文件的绝对地址。
For example:
代码如下 | 复制代码 |
$zipfiles =array("/root/pooy/test1.txt","/root/pooy/test2.txt"); $z = new PHPZip(); //$randomstr = random(8); $zipfile = TEMP."/photocome_".$groupid.".zip"; $z->Zip($zipfiles, $zipfile); |
//添加文件列表PHP的ZIP压缩类如下:
代码如下 | 复制代码 |
<?php class PHPZip if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir); if (count($filelist)>0) if (is_array($dir)) $filename = basename($filename); chdir($curdir); function GetFileList($dir) $dh = opendir($dir); var $datasec = array(); /** if ($timearray['year'] < 1980) { return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | /** $dtime = dechex($this->unix2DosTime($time)); $fr = "x50x4bx03x04"; // "local file header" segment // "file data" segment // "data descriptor" segment (optional but necessary if archive is not // add this entry to array // now add to central directory record $cdrec .= pack('V', $this -> old_offset ); // relative offset of local header $cdrec .= $name; // optional extra field, file comment goes here /** return } // end of the 'PHPZip' class |
导出Excel用法
//设置环境变量(新增PHPExcel)
代码如下 | 复制代码 |
set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR . get_include_path()); |
//把要导出的内容放到表格
代码如下 | 复制代码 |
//新建 $resultPHPExcel = new PHPExcel(); //设值 $resultPHPExcel->getActiveSheet()->setCellValue('A1', '季度'); |
设置导出参数
代码如下 | 复制代码 |
//设置导出文件名 $outputFileName = 'total.xls'; $xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel); //ob_start(); ob_flush(); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="'.$outputFileName.'"'); header("Content-Transfer-Encoding: binary"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); $xlsWriter->save( "php://output" ); |
输出有错。
默认$xlsWriter->save( "php://output" );可能因为缓存不够大,而显示不完整,所以做个中转,方式如下:
代码如下 | 复制代码 |
$finalFileName = (Yii::app()->basePath.'/runtime/'.time().'.xls'; $xlsWriter->save($finalFileName); echo file_get_contents($finalFileName); |
//file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文
件读入一个字符串。
导入Excel用法
代码如下 | 复制代码 |
<? //导入Excel文件 //注意设置时区 //循环读取excel文件,读取一条,插入一条 /* 第二种方法*/ |
HTML网页代码
代码如下 | 复制代码 |
<form action="upload.php" method="post" enctype="multipart/form-data"> |
主要针对的是window上的应用。
1.服务器要支持apc扩展,没有此扩展的话,百度一下php_apc.dll ,下载一个扩展扩展要求php.5.2以上。
2.配置apc相关配置,重启apache
代码如下 | 复制代码 |
extension=php_apc.dll apc.rfc1867 = on apc.max_file_size = 1000M upload_max_filesize = 1000M post_max_size = 1000M |
说明一下:至于参数要配多大,得看项目需要apc.max_file_size, 设置apc所支持上传文件的大小,要求apc.max_file_size <=upload_max_filesize 并且apc.max_file_size <=post_max_size.重新启动apache即可实现apc的支持.
3.在代码里面利用phpinfo();查看apc扩展安装了没有。
4.下面是实现代码:
getprogress.php
代码如下 | 复制代码 |
<?php PHP Code |
target.php
代码如下 | 复制代码 |
<?php set_time_limit(600); if($_SERVER['REQUEST_METHOD']=='POST') { move_uploaded_file($_FILES["test_file"]["tmp_name"], dirname($_SERVER['SCRIPT_FILENAME'])."/UploadTemp/" . $_FILES["test_file"]["name"]);//UploadTemp文件夹位于此脚本相同目录下 echo "<p>上传成功</p>"; } ?> |
index.php
代码如下 | 复制代码 |
<?php |