hallo leute ich versuche folgenden script auf bluewin zum funktionieren zu bringen:
<?php ############################################################################## SUPERMAILER SUBSCRIBE/UNSUBSCRIBE SCRIPT # # Double-Opt-In # # Copyright © 2001 - 2006 Mirko Boeer # # [http://www.supermailer.de/](http://www.supermailer.de/) # # # # Dieses Script kann kostenlos eingesetzt werden, jedoch muss dieser Header # # im Script enthalten bleiben! # # # # Systemvoraussetzungen: PHP 4 und Windows/Unix # # 08.03.2006 # ############################################################################# error\_reporting(0); # Geben Sie die E-Mail Adresse Ihres speziellen POP3 Postfachs an $Recipient="[[email protected]](mailto:[email protected])"; # Geben Sie die Seite an, die angezeigt werden soll, wenn eine ANmeldung erfolgte # und an den neuen Abonnenten die E-Mail zur Bestätigung gesendet wurde # Angabe mit http:// $ConfirmationMailSendOKPage="[http://www.intes.ch/spass/an.text](http://www.intes.ch/spass/an.text)"; # Geben Sie die Seite an, die angezeigt werden soll, wenn eine ANmeldung erfolgte # Angabe mit http:// $SubscribeOKPage="[http://www.intes.ch/spass/best.txt](http://www.intes.ch/spass/best.txt)"; # Geben Sie die Seite an, die angezeigt werden soll, wenn eine ABmeldung erfolgte # Angabe mit http:// $UnsubscribeOKPage="[http://www.intes.ch/spass/ab.txt](http://www.intes.ch/spass/ab.txt)"; # Geben Sie die Seite an, die angezeigt werden soll, wenn die E-Mail Adresse aeusserlich nicht korrekt ist = Fehlerseite # Angabe mit http:// $ErrorPage="[http://www.intes.ch/spass/fehler.txt](http://www.intes.ch/spass/fehler.txt)"; # Geben Sie den Betreff der Bestaetigungs-E-Mail an $EMailSubject="Deine Anmeldung bei unseren Spassmails"; # Geben Sie die Datei mit dem Text für die Bestaetigungs-E-Mail an, die der neue Abonnent # geschickt bekommt. Dies muss eine Textdatei sein, kein HTML! # Beachten Sie, der E-Mail-Text muss den Platzhalter [BESTAETIGUNGSLINK] enthalten, damit der # Abonnent in der E-Mail auch den Link für die Aufnahme in den Newsletter anklicken kann. # Angabe mit http:// $EMailText="[http://www.intes.ch/spass/link.txt](http://www.intes.ch/spass/link.txt)"; # Bei der Script-Generierung wird dieser Schluessel anhand des Datums/Uhrzeit erstellt, # der Schluessel kann manuell geaendert werden, darf jedoch NIE leer sein. $CryptKey="03/18/0614020770354PM296"; ########### Ab hier nichts mehr aendern ##################### # FALLS register\_globals off if (ini\_get('register\_globals') == 0) { if ( isset($\_GET['Action']) ) $Action=$\_GET['Action']; if ( isset($\_GET['EMail']) ) $EMail=$\_GET['EMail']; if ( isset($\_POST['EMail']) ) $EMail=$\_POST['EMail']; if ( isset($\_POST['Action']) ) $Action=$\_POST['Action']; if ( isset($\_GET['Format']) ) $Format=$\_GET['Format']; if ( isset($\_POST['Format']) ) $Format=$\_POST['Format']; if ( (!isset($REMOTE\_ADDR)) || ($REMOTE\_ADDR == "") ) $REMOTE\_ADDR = $\_SERVER['REMOTE\_ADDR']; } function CheckEMail($email) { if (strpos($email, "@") === False) return 0; $s = substr($email, strpos($email, "@"), strlen($email)); if (count(explode(".", $s)) return 0; return 1; } function CheckForSpam($str) { if ( eregi("from:",$str) || eregi("to:",$str) || eregi("multipart",$str) || eregi("cc:",$str) || eregi("bcc:",$str) ) return 1; return 0; } # Crypt $crypt = &new EncDec; $crypt-\>hash = $CryptKey; if ( (!isset($Action)) || ($Action == "") ) { print "Es wurde das Feld Action nicht übermittelt!"; exit; } if (($EMailText == "") || ($EMailSubject == "")) { print "Fehler es ist kein E-Mail-Text oder kein Betreff für die Bestätigungs-E-Mail vorhanden."; exit; } if ( (isset($EMail)) && ($Action=="confirmation") ) { $EMail = $crypt-\>phpDecrypt(rawurldecode($EMail)); } if ( (!isset($EMail)) || ($EMail == "") || ( !CheckEMail($EMail) ) ) { if ($ErrorPage != "") header("Location: $ErrorPage"); else print " **Es wurde keine E-Mail-Adresse angegeben oder die E-Mail-Adresse liegt nicht im korrekten Format vor!**"; exit; } ##################################### Spam test $teststring=""; reset ($\_GET); while (list ($key, $val) = each ($\_GET)) { $teststring .= "$key=$val"; } reset ($\_POST); while (list ($key, $val) = each ($\_POST)) { $teststring .= "$key=$val"; } if (CheckForSpam($teststring) == 1) { print "Error processing form data"; exit; } ##################################### if ($Action == "subscribe") { $headers = "From: $Recipient\n"; $headers .= "X-Mailer: SuperMailerScript [http://www.supermailer.de/\n](http://www.supermailer.de/%5Cn)"; $headers .= "Return-Path: \n"; if ($SERVER\_NAME == "") { $SERVER\_NAME = $\_SERVER['SERVER\_NAME']; } if ($SCRIPT\_NAME == "") { $SCRIPT\_NAME = $\_SERVER['SCRIPT\_NAME']; } $message = join("", file($EMailText)); $Link = "http://".$SERVER\_NAME.$SCRIPT\_NAME."?Action=confirmation&EMail=".rawurlencode($crypt-\>phpEncrypt($EMail)); #Fuer weitere Felder, diesen muessen im HTML-Formular und im SuperMailer angelegt werden! $s=""; reset ($\_GET); while (list ($key, $val) = each ($\_GET)) { if ($key == "EMail") continue; if ($key == "Action") continue; if ($key == "SubmitBtn") continue; if($s == "") $s = "$key=".rawurlencode($crypt-\>phpEncrypt($val)); else $s .= "&$key=".rawurlencode($crypt-\>phpEncrypt($val)); } reset ($\_POST); while (list ($key, $val) = each ($\_POST)) { if ($key == "EMail") continue; if ($key == "Action") continue; if ($key == "SubmitBtn") continue; if($s == "") $s = "$key=".rawurlencode($crypt-\>phpEncrypt($val)); else $s .= "&$key=".rawurlencode($crypt-\>phpEncrypt($val)); } if($s != "") $Link .= "&".$s; $message = str\_replace ("[BESTAETIGUNGSLINK]", $Link, $message); $message = str\_replace ("[CONFIRMATIONLINK]", $Link, $message); @mail($EMail, $EMailSubject, $message, $headers); if ($ConfirmationMailSendOKPage != "") header("Location: $ConfirmationMailSendOKPage"); else print "**Ihnen wurde eine E-Mail an die E-Mail-Adresse $EMail mit einem Bestätigungslink zur Aufnahme in unseren Newsletter gesendet. Bitte klicken Sie in dieser E-Mail auf den Bestätigungslink, damit Ihre E-Mail-Adresse in unseren Newsletter aufgenommen wird.**"; exit; } # Aufruf ueber Bestaetigungs-E-Mail if ($Action=="confirmation") { $Action="subscribe"; } $headers = "From: $EMail\n"; $headers .= "X-Mailer: SuperMailerScript [http://www.supermailer.de/\n](http://www.supermailer.de/%5Cn)"; $headers .= "Return-Path: \n"; # Alle uebergebenen Werte in die Nachricht uebernehmen $message = ""; reset ($\_GET); while (list ($key, $val) = each ($\_GET)) { if ($key == "Action") continue; if ($key == "SubmitBtn") continue; if ($Action == "subscribe") $message .= "$key: ".$crypt-\>phpDecrypt(rawurldecode($val))."\n"; else $message .= "$key: ".rawurldecode($val)."\n"; } $message .= "IP: ".$REMOTE\_ADDR."\n"; # Versenden der Mail @mail($Recipient, $Action, $message, $headers); if ($Action == "subscribe") if ($SubscribeOKPage != "") header("Location: $SubscribeOKPage"); else print " **Ihre E-Mail-Adresse $EMail wurde zu unserer Newsletterliste hinzugefügt!**"; else if ($UnsubscribeOKPage != "") header("Location: $UnsubscribeOKPage"); else print " **Ihre E-Mail-Adresse $EMail wurde aus unserer Newsletterliste entfernt!**"; // ################################################################################## class EncDec{ var $hash; function hexToInt($s, $i) { (int)$j = $i \* 2; (string)$s1 = $s; (string)$c = substr($s1, $j, 1); // get the char at position $j, length 1 (string)$c1 = substr($s1, $j+1, 1); // get the char at postion $j + 1, length 1 (int)$k = 0; switch ($c) { case "A": $k += 160; break; case "B": $k += 176; break; case "C": $k += 192; break; case "D": $k += 208; break; case "E": $k += 224; break; case "F": $k += 240; break; case " ": $k += 0; break; default: (int)$k = $k + (16 \* (int)$c); break; } switch ($c1) { case "A": $k += 10; break; case "B": $k += 11; break; case "C": $k += 12; break; case "D": $k += 13; break; case "E": $k += 14; break; case "F": $k += 15; break; case " ": $k += 0; break; default: $k += (int)$c1; break; } return $k; } function hexToIntArray($s) { (string)$s1 = $s; (int)$i = strlen($s1); (int)$j = $i / 2; for($l = 0; $l hexToInt($s1,$l); $ai[$l] = $k; } return $ai; } function charToInt($c) { $ac[0] = $c; return $ac; } function xorString($ai) { $s = $this-\>hash; // (int)$i = strlen($s); $ai1 = $ai; (int)$j = count($ai1); for($i = 0; $i hexToIntArray($s); (string)$s1 = $this-\>xorString($ai); return $s1; } } function intToHex($i) { (int)$j = (int)$i / 16; if ((int)$j == 0) { (string)$s = " "; } else { (string)$s = strtoupper(dechex($j)); } (int)$k = (int)$i - (int)$j \* 16; (string)$s = $s.strtoupper(dechex($k)); return $s; } function xorCharString($s) { $ac = preg\_split('//', $s, -1, PREG\_SPLIT\_NO\_EMPTY); (string)$s1 = $this-\>hash; (int)$i = strlen($s1); (int)$j = count($ac); for($i=0; $i xorCharString($s); $s1 = ""; for($i = 0; $i intToHex((int)$ai[$i]); return $s1; } } ?\> nur funktioniert der nicht, folgender fehler wird ausgegeben: Security Alert! The PHP CGI cannot be accessed directly. This PHP CGI binary was compiled with force-cgi-redirect enabled. This means that a page will only be served up if the REDIRECT\_STATUS CGI variable is set, e.g. via an Apache Action directive. For more information as to why this behaviour exists, see the manual page for CGI security. For more information about changing this behaviour or re-enabling this webserver, consult the installation file that came with this distribution, or visit the manual page. die antwort vom bluewin team: so funtioniert der nicht auf unserem apache server??? der programmierer dieses scripts weiss auch nicht weiter, und meint es sei sache des bluewin teams, die schieben sich gegenseitig den "schwarzen peter zu. weiss jemand rat. danke für jede hilfe e. gürber
