diff options
Diffstat (limited to 'mlmmj.php')
-rw-r--r-- | mlmmj.php | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/mlmmj.php b/mlmmj.php new file mode 100644 index 0000000..c976372 --- /dev/null +++ b/mlmmj.php @@ -0,0 +1,122 @@ +<?php + +/* Copyright (C) 2004 Christoph Thiel <ct at kki dot org> + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +// error_reporting(E_ALL); + +class mlmmj +{ + var $email; + var $mailinglist; + var $job; + var $redirect_success; + var $redirect_failure; + + var $delimiter; + var $errors; + + function is_email($string="") { + return eregi("^[a-z0-9\._-]+".chr(64)."+[a-z0-9\._-]+\.+[a-z]{2,4}$", $string); + } + + function error($string="") { + $this->errors = TRUE; + die($string); + } + + function mlmmj() { + // set mandatory vars... + $this->errors = FALSE; + $this->delimiter = "+"; + + if (!isset($_POST["email"]) && + !isset($_POST["mailinglist"]) && + !isset($_POST["job"]) && + !isset($_POST["redirect_success"]) && + !isset($_POST["redirect_failure"])) + { + $this->errors = TRUE; + if(isset($_POST["redirect_failure"])) { + header("Location: ".$_POST["redirect_failure"]); + exit; + } + else + die("An error occurred. Please check contrib/web/php-user/README for details."); + } + else { + if ($this->is_email($_POST["email"])) + $this->email = $_POST["email"]; + else + $this->error("ERROR: email is not a valid email address."); + + if ($this->is_email($_POST["mailinglist"])) + $this->mailinglist = $_POST["mailinglist"]; + else + $this->error("ERROR: mailinglist is not a valid email address."); + + $this->job = $_POST["job"]; + + if (!(($this->job == "subscribe") OR ($this->job == "unsubscribe"))) { + $this->error("ERROR: job unknown."); + } + + $this->redirect_failure = $_POST["redirect_failure"]; + $this->redirect_success = $_POST["redirect_success"]; + + } + + // now we should try to go ahead and {sub,unsub}scribe... ;) + + if(!$this->errors) { + // @ ^= char(64) + + $to = str_replace(chr(64),$this->delimiter.$this->job.chr(64),$this->mailinglist); + $subject = $this->job." to ".$this->mailinglist; + $body = $this->job; + $addheader = ""; + $addheader .= "Received: from ". $_SERVER["REMOTE_ADDR"] + ." by ". $_SERVER["SERVER_NAME"]. " with HTTP;\r\n\t".date("r")."\n"; + $addheader .= "X-Originating-IP: ".$_SERVER["REMOTE_ADDR"]."\n"; + $addheader .= "X-Mailer: mlmmj-webinterface powered by PHP/". phpversion() ."\n"; + $addheader .= "From: ".$this->email."\n"; + $addheader .= "Cc: ".$this->email."\n"; + + if(!mail($to, $subject, $body, $addheader)) + $this->error($this->job." failed."); + } + + if($this->errors) { + //header("Location: ".$this->redirect_failure); + //exit; + die($this->errors); + } else { + header("Location: ".$this->redirect_success); + exit; + } + } +} + + +$mailinglist = new mlmmj; + +?> |