poplocal.inc
上传用户:xuanqunsh
上传日期:2007-01-04
资源大小:58k
文件大小:5k
源码类别:

WEB邮件程序

开发平台:

PHP

  1. <?php
  2. # ---------------------------------------------------------------
  3. # phpop
  4. # A WWW based POP3 basic mail user agent (MUA)
  5. # Copyright (C) 1999  Padraic Renaghan
  6. # Licensed under terms of GNU General Public License
  7. # (see http://www.renaghan.com/phpop/source/LICENSE)
  8. # ---------------------------------------------------------------
  9. # $Id: poplocal.inc,v 1.10 2000/04/12 23:23:20 prenagha Exp $
  10. # ---------------------------------------------------------------
  11. # Our local versions of the PHPLIB classes.
  12. class pop_db extends DB_Sql {
  13.   var $Host     = "localhost";
  14.   var $Database = "phpop";
  15.   var $User     = "test";
  16.   var $Password = "test";
  17.   
  18.   var $Auto_Free     = 1;     ## Set to 1 for automatic mysql_free_result()
  19.   var $Debug         = 0;     ## Set to 1 for debugging messages.
  20.   var $Halt_On_Error = "yes"; ## "yes" (halt with message),
  21.                               ## "no" (ignore errors quietly),
  22.                               ## "report" (ignore errror, but spit a warning)
  23. }
  24. class pop_ct_sql extends CT_Sql {
  25.   var $database_class = "pop_db";          ## which database to connect
  26.   var $database_table = "active_sessions"; ## find session data in this tbl
  27. }
  28. /*
  29. # I tried switching out the ct_sql class with ct_dbm so you
  30. # wouldn't be required to have a database with PHPOP. I had
  31. # trouble with file locking when using dbm files. You might
  32. # have better luck. If you want to try the dbm files for 
  33. # session data you need to:
  34. #  change poprepend.inc to include the ct_dbm file and
  35. #    not include the ct_sql and db_mysql files
  36. #  uncomment the pop_ct_dbm section below
  37. #  comment out the pop_ct_sql and pop_db sections above
  38. #  change the $that_class var in pop_sess below to refer
  39. #    to the pop_ct_dbm class
  40. #  update the filename in pop_ct_dbm and make sure the
  41. #    file exists and is writeable by the server.
  42. #
  43. # Let me know if you get it to work.
  44. #
  45. class pop_ct_dbm extends CT_DBM {
  46. var $dbm_file = "/home/httpd/phpop-session.dbm";    ## PREEXISTING DBM File 
  47.                          ## writable by the web server UID
  48. }
  49. */
  50. class pop_sess extends Session {
  51.   var $classname      = "pop_sess";
  52.   var $cookiename     = "";                ## defaults to classname
  53.   var $auto_init      = "";
  54.   var $magic          = "054378354";       ## ID seed
  55.   var $mode           = "cookie";          ## We propagate session IDs with cookies
  56.   var $fallback_mode  = "get";
  57.   var $lifetime       = 0;                 ## 0 = do session cookies, else minutes
  58.   var $gc_time  = 90;                      ## Purge all session data older than x minutes.
  59.   var $gc_probability = 1;                 ## Garbage collect probability in percent
  60.   var $gc_probability = 5;  
  61.   
  62.   var $allowcache     = "no";              ## if you want to allow caching
  63.   var $allowcache_expire = 30;             ## cached pages expire in this many
  64.                                            ## minutes
  65.   var $that_class = "pop_ct_sql";          ## Name of data storage container
  66. }
  67. class pop_auth extends Auth {
  68.   var $classname      = "pop_auth";
  69.   var $lifetime       =  120;
  70.   var $mode           = "log";         ## "log" for login only systems,
  71.                                        ## "reg" for user self registration
  72.   var $nobody         = false;         ## If true, a default auth is created...
  73.   var $magic          = "857348a7f";   ## ID seed
  74.   function auth_loginform() {
  75.     include("poplogin.inc");
  76.   }
  77.   
  78.   function auth_validatelogin() {
  79.     global $username, $password, $popserver, $popport, $phpop, $sess, $pop3;
  80.     if (empty($username)) return false;
  81.     $this->auth["uname"]=$username;   
  82.     # create a bogus uid for this user.
  83.     $uid = md5(uniqid($username));
  84.     # figure out what to use as the mail server
  85.     if (!$phpop->login_servers) {
  86.       $mailserver = $popserver;
  87.     } else {
  88.       if (sizeof($phpop->login_servers) == 1) {
  89.         $mailserver = $phpop->login_servers[0];
  90.       } else {
  91.         $mailserver = "no.hacking.allowed";
  92.         reset($phpop->login_servers);
  93.         while (list($index, $server) = each ($phpop->login_servers)) {
  94.           if ($server == $popserver) {
  95.             $mailserver = $server;
  96.           }
  97.         }
  98.       }
  99.     }
  100.     if ($phpop->login_port && $phpop->login_port > 0) {
  101.       $mailport = $popport;
  102.     } else {
  103.       $mailport = $pop3->PORT;
  104.     }
  105.     # connect to the pop server
  106.     if ( ! $pop3->connect($mailserver, $mailport) ) {
  107.       echo "<p>Failed to connect to POP server $mailserver on port $mailport.<br><small>$pop3->ERROR</small>";
  108.       return false;
  109.     }
  110. # login to the POP server
  111.     $count = $pop3->apop($username, $password);
  112.     if ( $count < 0 ) {
  113.       echo "<p>Failed to login to POP server<br><small>$pop3->ERROR</small>";
  114.       return false;
  115.     }
  116.     $pop3->quit();
  117.     $this->auth["passwd"]=$password;
  118.     $this->auth["server"]=$mailserver;
  119.     $this->auth["port"]=$mailport;
  120.     return $uid;
  121.   }
  122. }
  123. ?>