http://expert.csdn.net/Expert/topic/2171/2171093.xml?temp=.9089624

解决方案 »

  1.   

    <?php /* 
     *   Filename: authimg.php 
     *   Author:   hutuworm 
     *   Date:     2003-04-28 
     *   @Copyleft hutuworm.org 
     */ 
    //生成验证码图片 
    Header("Content-type: image/PNG");  
    session_start();srand((double)microtime()*1000000);
    $_SESSION[authnum]=rand(10000,99999);
    //srand((double)microtime()*1000000); 
    $im = imagecreate(62,20); 
    $black = ImageColorAllocate($im, 0,0,0); 
    $white = ImageColorAllocate($im, 255,255,255); 
    $gray = ImageColorAllocate($im, 200,200,200); 
    imagefill($im,68,30,$gray); 
    //while(($authnum=rand()%100000)<10000);
    //将五位整数验证码绘入图片 
    imagestring($im, 5, 10, 3, $_SESSION[authnum], $black); 
    for($i=0;$i<200;$i++)   //加入干扰象素 

        $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
        imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); 

    ImagePNG($im); 
    ImageDestroy($im); 
    ?>
      

  2.   

    给你一个我个人认为比较实用的:
    1.--------------
    基于数据库
    首先,在MySql中建立一个存放用户信息的数据库 数据库名为XinXiKu ,表名为user;表定义如下: create table user( 
    ID INT(4) NOT NULL AUTO_INCREMENT, 
    name VARCHAR(8) NOT NULL, 
    password CHAR(8) NOT NULL, 
    PRIMARY KEY(ID) 

    说明: 1、ID为一个序列号,不为零而且自动递增,为主键; 2、name为用户名,不能为空; 3、password为用户密码,不能为空; 以下是用户验证文件login.php //判断用户名是否设置 
    if(!isset($PHP_AUTH_USER)) 

    header("WWW-Authenticate:Basic realm="身份验证功能""); 
    header("HTTP/1.0 401 Unauthorized"); 
    echo "身份验证失败,您无权共享网络资源!"; 
    exit(); 

    /*连接数据库*/ 
    $db=mysql_connect("localhost","root",""); 
    //选择数据库 
    mysql_select_db("XinXiKu",$db); 
    //查询用户是否存在 
    $result=mysql_query("SELECT * FROM user where name='$PHP_AUTH_USER' and password='$PHP_AUTH_PW'",$db); 
    if ($myrow = mysql_fetch_row($result)) 

    //以下为身份验证成功后的相关操作 
    ... 

    else 

    //身份验证不成功,提示用户重新输入 
    header("WWW-Authenticate:Basic realm="身份验证功能""); 
    header("HTTP/1.0 401 Unauthorized"); 
    echo "身份验证失败,您无权共享网络资源!"; 
    exit(); 

    ?> 
    程序说明: 在程序中,首先检查变量$PHP_AUTH_USER是否已经设置。如果没有设置,说明需要验证,脚本发出HTTP 401错误号头标,告诉客户端的浏览器需要进行身份验证,由客户端的浏览器弹出一个身份验证窗口,提示用户输入用户名和密码,输入完成后,连接数据库,查询该用用户名及密码是否正确,如果正确,允许登录进行相关操作,如果不正确,继续要求用户输入用户名和密码。 ------------------------------
    下载是不用数据库的
    <? 
       
        /* 检查$PHP_AUTH_USER和$PHP_AUTH_PW中的值*/ 
       
        if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW))) { 
       
          /* 如果没有值,则发送一个能够引发对话框出现的头部*/ 
       
          header('WWW-Authenticate: Basic realm="My Private Stuff"'); 
       
          header('HTTP/1.0 401 Unauthorized'); 
       
          echo 'Authorization Required.'; 
       
          exit; 
       
        } else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW))){ 
       
          /* 变量中有值,检查它们是否正确*/ 
       
          if (($PHP_AUTH_USER != "validname") || ($PHP_AUTH_PW != "goodpassword")) { 
       
           /* 如果输入的用户名和口令中有一个不正确,则发送一个能够引发对话框出现的头部 */ 
       
           header('WWW-Authenticate: Basic realm="My Private Stuff"'); 
       
           header('HTTP/1.0 401 Unauthorized'); 
       
           echo 'Authorization Required.'; 
       
           exit; 
       
          } else if (($PHP_AUTH_USER == "validname") || ($PHP_AUTH_PW == "goodpassword")) { 
       
           /* 如果二个值都正确,显示成功的信息 */ 
       
           echo "<P>You're authorized!</p>"; 
       
          } 
       
        } 
       
        ?> 
       
        需要注意的是,如果你使用的是基于文件的保护机制,它并不能保证目录中所有的文件的安全。它可能保护大部分的文件,如果你认为它能够保护给定目录中的所有文件,你的这种认识就需要变变了。 
       
      八、PHP和COM 
        如果你喜欢冒险,并且在Windows上运行CGI、ISAPI或Apache模块版本的PHP,就可以访问COM的函数。好了,详细解释COM的工作就交给微软和许多大部头的书了,为了能简单地了解一下COM的功能,下面是一小段常见的脚本。 
       
        这一段PHP脚本在后端启动微软的字处理Word,打开一个新的文档,输入一些文字,保存文档,并关闭Word。 
       
        <? 
       
        // 建立一个指向新COM组件的索引 
       
        $word = new COM("word.application") or die("Can't start Word!"); 
       
        // 显示目前正在使用的Word的版本号 
       
        echo "Loading Word, v. {$word->Version}<br>"; 
       
        // 把它的可见性设置为0(假),如果要使它在最前端打开,使用1(真) 
       
        // to open the application in the forefront, use 1 (true) 
       
        $word->Visible = 0; 
       
        // 在Word中创建新的文档 
       
        $word->Documents->Add(); 
       
        // 在新文档中添加文字 
       
        $word->Selection->TypeText("Testing 1-2-3..."); 
       
        //把文档保存在Windows临时目录中 
       
        $word->Documents[1]->SaveAs("/Windows/temp/comtest.doc"); 
       
        // 关闭与COM组件之间的连接 
       
        $word->Quit(); 
       
        // 在屏幕上显示其他信息 
       
        echo "Check for the file..."; 
       
        ?>