OSDN Git Service

Expire risk: unset $_GET, $_POST, $_COOKIE
[pukiwiki/pukiwiki.git] / mail.php
1 <?php
2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
4 //
5 // $Id: mail.php,v 1.1 2003/09/24 00:37:27 arino Exp $
6 //
7
8 // POP Before SMTP
9 function pop_before_smtp()
10 {
11         global $pop_auth_use_apop,$pop_port,$pop_server,$pop_userid,$pop_passwd;
12
13         $fp = @fsockopen($pop_server,$pop_port,$errno,$errstr,30);
14         if (!$fp)
15         {
16                 return "$errstr ($errno)";
17         }
18         
19         $rc = pop_result($fp);
20         if ($rc !== 0)
21         {
22                 return $rc;
23         }
24         
25         // APOP »ØÄê»þ¤ÎÍøÍÑȽÄê
26         if ($pop_auth_use_apop)
27         {
28                 // digest Ãê½Ð
29                 preg_match("(<.*>)", $buf, $regs);
30                 // digest ¤¬Ãê½Ð¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¶¯À©Åª¤Ë POP ¤ËÀÚ¤êÂؤ¨
31                 if (empty($regs[0]))
32                 {
33                         $pop_auth_use_apop = 0;
34                 }
35         }
36         
37         // APOP ¤Þ¤¿¤Ï POP
38         if ($pop_auth_use_apop)
39         {
40                 fputs($fp, "APOP ".$pop_userid." ".md5($regs[0].$pop_passwd)."\r\n");
41                 $rc = pop_result($fp);
42                 if ($rc !== 0)
43                 {
44                         return $rc;
45                 }
46         }
47         else
48         {
49                 fputs($fp, "USER ".$pop_userid."\r\n");
50                 $rc = pop_result($fp);
51                 if ($rc !== 0)
52                 {
53                         return $rc;
54                 }
55                 
56                 fputs($fp, "PASS ".$pop_passwd."\r\n");
57                 $rc = pop_result($fp);
58                 if ($rc !== 0)
59                 {
60                         return $rc;
61                 }
62         }
63
64         fputs($fp, "QUIT\r\n");
65         fclose($fp);
66         return 0;
67 }
68
69 // POP ½èÍý¤Î·ë²ÌȽÄê
70 function pop_result($fp)
71 {
72         $buf = fgets($fp, 2048);
73         $tok = strtok($buf,' ');
74         if ($tok == '+OK')
75         {
76                 return 0;
77         }
78         fclose($fp);
79         return substr($buf, strlen($tok) + 1);
80 }
81 ?>