php

PHP删除文件夹三法

1、递归法

deleteDir($dir)
{
if (rmdir($dir)==false && is_dir($dir)) { (continue reading…)


$_SERVER

$_SERVER[‘PHP_SELF’] #当前正在执行脚本的文 件名,与 document root相关。
$_SERVER[‘argv’] #传递给该脚本的参数。 (continue reading…)


PHP使用GD库实现截屏

PHP使用GD库实现截屏

PHP5.2.2以上版本的GD库实现了两个截屏函数 imagegrabscreenimagegrabwindow
分别用于截取整个屏幕和截取某个窗口(同ALT+PrintScreen)的屏幕。 (continue reading…)


php邮件类

<?php
require(“class.phpmailer.php”);

$mail = new PHPMailer();
/*
$mail->IsSMTP();                   // 设置使用 SMTP
$mail->Host = “smtp.test.com”;          // 指定的 SMTP 服务器地址
$mail->SMTPAuth = true;                // 设置为安全验证方式
$mail->Username = “test”;             // SMTP 发邮件人的用户名
$mail->Password = “test”;             // SMTP 密码 (continue reading…)


PHP MSN Class 最新版,支持MSN

PHPChina讯:PHP MSN Class,支持MSNP9 (MSN 6.2)和最新的MSNP15 (WLM 8.1)协议(MSNP15协议支持离线消息),可以作为MSN机器人使用,或者给MSN、雅虎通发消息。

示例代码

<?php
include_once(‘msn.class.php’); (continue reading…)


Warning: Call-time pass-by-reference has been deprecated in

解决方案有两个:

1.在原函数参数列表上加上&号

function func(&$a){

}

2.在PHP.INI中进行一下设置

allow_call_time_pass_reference = On


史上最全的MYSQL备份方法

1.mysqldump备份

mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。

示例:mysqldump -uroot -p database table > /home/jobs/back.sql

mysqldump也可做增量备份,mysqldump相关参数网上较多,就不在此一一赘述了 (continue reading…)


PHPMailer

public function lostsave(){
$Dao=D(‘User’);
$username=$_POST[‘username’];
$em=$_POST[’em’]; (continue reading…)


PHP图片缩放函数

在PHP网站开发过程中,如果你建立的网站涉及大量的图片处理,必然涉及到图片上传,缩放,而如何保持图片不失真,是很多初级PHP网站开发者比较头疼的一件事,今天David就和大家分享一下如何进行图片缩放。使用之前你需要下载安装GD库,以支持PHP图片处理。下面我们结合代码讲解具体的PHP图片缩放处理的思路。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function resizeImage($im,$maxwidth,$maxheight,$name,$filetype,$folder)
{
    $pic_width = imagesx($im);
    $pic_height = imagesy($im);

    if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))
    {
        if($maxwidth && $pic_width>$maxwidth)
        {
            $widthratio = $maxwidth/$pic_width;
            $resizewidth_tag = true;
        }

        if($maxheight && $pic_height>$maxheight)
        {
            $heightratio = $maxheight/$pic_height;
            $resizeheight_tag = true;
        }

        if($resizewidth_tag && $resizeheight_tag)
        {
            if($widthratio<$heightratio)
                $ratio = $widthratio;
            else
                $ratio = $heightratio;
        }

        if($resizewidth_tag && !$resizeheight_tag)
            $ratio = $widthratio;
        if($resizeheight_tag && !$resizewidth_tag)
            $ratio = $heightratio;

        $newwidth = $pic_width * $ratio;
        $newheight = $pic_height * $ratio;

        if(function_exists("imagecopyresampled"))
        {
            $newim = imagecreatetruecolor($newwidth,$newheight);
           imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
        }
        else
        {
            $newim = imagecreate($newwidth,$newheight);
           imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
        }

        $name = $name.$filetype;

        createTempImage($newim,$folder.$name,$filetype);
        imagedestroy($newim);
    }
    else
    {
        $name = $name.$filetype;
        createTempImage($im,$folder.$name,$filetype);
    }          
}

 

function createTempImage($newim,$name,$type) {
    switch($type)
    {
        case ‘.jpg’:
            imagejpeg($newim,$name);
            break;
        case ‘.gif’:
            imagegif($newim,$name);
            break;
        case ‘.png’:
            imagepng($newim,$name);
            break;
    }
}
 
用法:
$im = imagecreatefromjpeg(‘test.jpg’);

echo "<img src=’temp/". resizeImage($im,200,200,’WLK’,’.png’,’temp/’)."’/>";

参数说明

$im 图片对象,应用函数之前,你需要用imagecreatefromjpeg()读取图片对象,如果PHP环境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng()

$maxwidth 定义生成图片的最大宽度(单位:像素)

$maxheight 生成图片的最大高度(单位:像素)

$name 生成的图片名

$filetype 最终生成的图片类型(.jpg/.png/.gif)

代码注释

第3~4行:读取需要缩放的图片实际宽高

第8~26行:通过计算实际图片宽高与需要生成图片的宽高的压缩比例最终得出进行图片缩放是根据宽度还是高度进行缩放,当前程序是根据宽度进行图片缩放。如果你想根据高度进行图片缩放,你可以将第22行的语句改成$widthratio>$heightratio

第28~31行:如果实际图片的长度或者宽度小于规定生成图片的长度或者宽度,则要么根据长度进行图片缩放,要么根据宽度进行图片缩放。

第33~34行:计算最终缩放生成的图片长宽。

第36~45行:根据计算出的最终生成图片的长宽改变图片大小,有两种改变图片大小的方法:ImageCopyResized()函数在所有GD版本中有效,但其缩放图像的算法比较粗糙。ImageCopyResamples(),其像素插值算法得到的图像边缘比较平滑,但该函数的速度比ImageCopyResized()慢。

第47~49行:最终生成经过处理后的图片,如果你需要生成GIF或PNG,你需要将imagejpeg()函数改成imagegif()或imagepng()

第51~56行:如果实际图片的长宽小于规定生成的图片长宽,则保持图片原样,同理,如果你需要生成GIF或PNG,你需要将imagejpeg()函数改成imagegif()或imagepng()。

特别说明

  GD库1.6.2版以前支持GIF格式,但因GIF格式使用LZW演算法牵涉专利权,因此在GD1.6.2版之后不支持GIF的格式。如果你是 WINDOWS的环境,你只要进入PHP.INI文件找到extension=php_gd2.dll,将#去除,重启APACHE即可,如果你是 Linux环境,又想支持GIF,PNG,JPEG,你需要去下载libpngzlib,以及freetype字体并安装。

  OK,PHP图片压缩函数完成,最后我们概述一下整个处理的思路:

  通过计算实际图片的长宽与规定生成图片的长宽之间的缩放比例,根据实际的需求(按照宽度还是按照高度进行图片缩放)计算出最终生成图片的大小,然后应用PHP图片处理函数对图片进行处理,最后输出图片。

  以上就是关于PHP图片处理中如何对图片进行压缩并保持不失真的函数说明,有疑问或者好的建议欢迎给我留言,下次我将分享在PHP网站开发建设完成后,由于图片目录没有规划好,我们该如何对图片进行迁移的思路。


PclZip简介与使用


PclZip介绍
PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等。由于能够在伺服器端进行压缩与解压缩的动作,所以相当方便使用。
PclZip定义一个PclZip类别,其类别物件可视为一个ZIP档案,亦提供method来进行处理。

如何使用PclZip
1.基础
所有的功能都由pclzip.lib.php这个档案提供,PclZip library可于其首页(www.phpconcept.net/pclzip/index.en.php)下载。所有的PKZIP档案其实就是一个 PclZip的类别物件。当产生一个PclZip档案(ie, PclZip类别物件),就会先产生一个压缩档,且档名已经指定,但此压缩档的内容尚未存在:

< ?PHP
         require_once(‘pclzip.lib.php’);
         $archive = new PclZip("archive.zip");
?>

此物件提供了一些public method可用来处理此档案。

 

2.参数
每一个method有其各自可使用的参数,包括有必须与非必须的参数:

< ?PHP
         require_once(‘pclzip.lib.php’);
         $archive = new PclZip(‘archive.zip’);
 
         $v_list = $archive->add(‘dev/file.txt’,
                                    PCLZIP_OPT_REMOVE_PATH, ‘dev’);
?>

上例中的’dev/file.txt’就是必须参数;’PCLZIP_OPT_REMOVE_PATH’则为非必须参数。当然有些method也可以只包含非必须的参数:

< ?PHP
         $list = $archive->extract(PCLZIP_OPT_PATH, "folder",
                          PCLZIP_OPT_REMOVE_PATH, "data",
                                PCLZIP_CB_PRE_EXTRACT, "callback_pre_extract",);
?>

上例中原本压缩档内档案存放的路径为/data,不过你可以指定解压缩至/folder中。此外,在解压缩之前,会呼叫callback function(’callback_pre_extract()’),此function可让使用者在解压缩的过程中变更档案存放路径与档名,或是选 择某些档案不解压缩。
所有可用的非必要参数可参考网址(www.phpconcept.net/pclzip/man/en/index.php)。

3.回传值
每个method所回传的值可能会不同,将会在每个method中说明。不过大部分的method回传0、error或是阵列。

4.错误处理
从版本1.3之后,错误处理已经整合至PclZip类别中,当一个method回传错误码,可以得知一些额外的讯息以方便错误处理:
* errorName():回传错误名称
* errorCode():回传错误码
* errorInfo():回传错误的描述

接下来会举几个例子来说明如何使用PclZip。

PclZip实例1、产生ZIP压缩档
PclZip($zipname):为PclZip constructor,$zipname为PKZIP压缩档的档名。
主要是产生一个PclZip物件,即一个PKZIP压缩档;但此时,只有压缩档产生出来,并做一些检查(例如是否有开启zlib extension…等),除此之外,并没有做其他动作。
create($filelist, [optional arguments list]):将参数$filelist指定的档案或目录(包含当中所有档案与子目录)加入上述所产生的压缩档中。
而非必要的参数则能够修改压缩档内的档案存放路径。
此method可用的参数可以参考网志(www.phpconcept.net/pclzip/man/en/index.php)。

下面的示例说明如何产生PKZIP压缩档(档名为archive.zip),并将file.txt、data/text.txt以及目录folder(包含当中的档案与子目录)加入刚刚产生的archive.zip中:

< ?PHP
        include_once(‘pclzip.lib.php’);
        $archive = new PclZip(‘archive.zip’);
        $v_list = $archive->create(‘file.txt,data/text.txt,folder’);
        if ($v_list == 0) {
            die("Error : ".$archive->errorInfo(true));
        }
?>

下面的示例说明基本上与上例一样产生archive.zip,但在将file.txt与text.txt压缩于其中时,将路径由data/改为 install/ ;因此,在archive.zip中这两个档案的路径会是install/file.txt与install/text.txt

< ?PHP
        include_once(‘pclzip.lib.php’);
        $archive = new PclZip(‘archive.zip’);
        $v_list = $archive->create(‘data/file.txt,data/text.txt’,
                                         PCLZIP_OPT_REMOVE_PATH, ‘data’,
                                         PCLZIP_OPT_ADD_PATH, ‘install’);
        if ($v_list == 0) {
            die("Error : ".$archive->errorInfo(true));
        }
?>

PclZip实例2、列出压缩档内容
listContent( ) :列出压缩档中的内容,包括档案的属性与目录:

< ?PHP
        include_once(‘pclzip.lib.php’);
        $zip = new PclZip("test.zip");
 
        if (($list = $zip->listContent()) == 0) {
        die("Error : ".$zip->errorInfo(true));
        }
 
        for ($i=0; $i<sizeof ($list); $i++) {
            for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
                echo "File $i / [$key] = ".$list[$i][$key]."<br>";
            }
            echo "<br />";
        }
?></sizeof>

上例将会回传结果:
File 0 / [filename] = data/file1.txt
File 0 / [stored_filename] = data/file1.txt
File 0 / [size] = 53
File 0 / [compressed_size] = 36
File 0 / [mtime] = 1010440428
File 0 / [comment] =
File 0 / [folder] = 0
File 0 / [index] = 0
File 0 / [status] = ok

File 1 / [filename] = data/file2.txt
File 1 / [stored_filename] = data/file2.txt
File 1 / [size] = 54
File 1 / [compressed_size] = 53
File 1 / [mtime] = 1011197724
File 1 / [comment] =
File 1 / [folder] = 0
File 1 / [index] = 1
File 1 / [status] = ok

PclZip实例3、解压缩档案
extract([options list]) :解压缩PKZIP中的档案或目录。
[options list]可用的参数可参考网址(www.phpconcept.net/pclzip/man/en/index.php)。这些参数能让使用者在解压 缩的时候有更多的选项,譬如指定变更解压缩档案的路径、指定只解压缩某些档案或不解压缩某些档案或者是将档案解压缩成字串输出(可用于readme档)。

下例是一个简单的解压缩档案示例,将压缩档archive.zip内的档案解压缩至目前的目录:

< ?PHP
        require_once(‘pclzip.lib.php’);
        $archive = new PclZip(‘archive.zip’);
 
 
        if ($archive->extract() == 0) {
            die("Error : ".$archive->errorInfo(true));
        }
?>

下例是进阶的解压缩档案使用,archive.zip中所有档案都解压缩于data/中,而特别指明在install/release中的所有档案也直接丢于data/中,而非data/install/ release:

< ?PHP
        include(‘pclzip.lib.php’);
        $archive = new PclZip(‘archive.zip’);
        if ($archive->extract(PCLZIP_OPT_PATH, ‘data’,
                  PCLZIP_OPT_REMOVE_PATH, ‘install/release’) == 0) {
                                die("Error : ".$archive->errorInfo(true));
        }
?>

相关文档:
PclZip官方地址:http://www.phpconcept.net/pclzip/index.php
PclZip手册地址:http://www.phpconcept.net/pclzip/man/en/index.php
PEAR类创建ZIP档案文件:http://www.ccvita.com/10.html
PclZip简介与使用:http://www.ccvita.com/59.html
PclZip:强大的PHP压缩与解压缩zip类:http://www.ccvita.com/330.html


Copyright © 1996-2010 Add Lives. All rights reserved.
iDream theme by Templates Next | Powered by WordPress