Fehlerteufel....?

Christoph Haas

Mitglied
Hallo,
ich hoffe man kann mir helfen. Ich habe ein "Newsletter Script", aber es muss sich irgendwo der Fehlerteufel eingeschlichen haben. Ich hab ihn gestern abend nicht gefunden, kann mir jemand helfen?

daten.txt (sollen die Adresse drin stehen)
mailingliste.php (ist das anmende/abmelde Formular)
mailing-send.php (für den Admin zum Versender eines Newsletters)

mailingliste.php
PHP:
<?
error_reporting(0);

if (!$_POST){print_form();die();}

?>

<html>
<head>
  <title></title>
</head>
<body bgcolor=FFFFFF>
<?


        $email=$_POST["email"];
       
        $email=strtolower($email);
     
        check_email ($email, "Achtung: Die e-Mail Adresse hat ein falsches Format!.");


$action=$_POST["action"];


$file = "daten.txt";

if (file_exists($file)){
       
        $file_content=file_get_contents($file);
}else{
        
        $cf = fopen($file, "w") or die("Fehler: Die Datei existiert nicht.");
        fputs($cf, "Mitglieder der Liste\n");
        fclose($cf);
}

if ($action=="subc"){
        
        if(strpos($file_content,"<$email>")>0){die("Achtung: Ihre Email Adresse ist bereits in der Newsletterliste enthalten");}
       
        $cf = fopen($file, "a");
        fputs($cf, "\n<$email>");       
        fclose($cf);
        
        print "Ihre e-Mail Adresse wurde in die Liste eingetragen.<br>Vielen Dank";
}

if ($action=="unsubc"){
        
        if(strpos($file_content,"<$email>")==0){die("Fehler: Ihre e-Mail Adresse ist nicht in der Liste enthalten");}
       
        $file_content=preg_replace ("/\n<$email>/","",$file_content);
      
        $cf = fopen($file, "w");
        fputs($cf, $file_content);
        fclose($cf);
       
        print "Ihre e-Mail Adresse wurde aus der Liste entfernt. ";
}

?>

</body>
</html>



<?

function check_email ($email, $message){
       
           if ($email==""){die($message);}
        
           $test1=strpos($email, "@");                                    
           $test2=strpos(substr($email,strpos($email,"@")), ".");          
           $test3=strlen($email);                                          
           $test4=substr_count ($email,"@");                               
           if ($test1<2 or $test2<2 or $test3<7 or $test4!=1){die($message);}
        
         
           $email_server=substr($email,strpos($email, "@")+1);
          
           if (checkdnsrr($email_server)!=1){die ($message);}
}

function print_form(){
?>

<html>
<head>
<title></title>
</head>

<body style="background-color: rgb(255, 255, 255);">
     
   <center>
        <p>&nbsp;<p>&nbsp;
        <form action="<? $PHP_SELF; ?>" method="post">
          <table>
             <tr>
             <td>
                <div style="text-align: center;">
                        <big style="font-weight: bold;">Besuchen Sie die Mailingliste </big><br>
                        </div>
                        &nbsp;<input name="email" size="30" type="text"> <br>
                        <div style="text-align: center;">
                        <input name="action" value="subc" checked="checked" type="radio">Eintragen
                        <input name="action" value="unsubc" selected="" type="radio">Austragen
                        <br>
                </div>
                <div style="text-align: center;">
                        <input value="Absenden" type="submit">
                </div>
              </td>
              </tr>
          </table>
        </form>
   
       </center>

        </body>
        </html>

<?
} 
?>

mailing-send.php
PHP:
<?
error_reporting(0);
$my_password="xxx";
$from_email="xxx <xx@xx.de>";
$replayto="xx@xx.de";
$message_at_bottom="http://www.xxx.de";
$emails_file="daten.txt";


if (!$_POST["mensaje"]){
        print_form();
        die();
}


if ($_POST["p"]!=$my_password){die("Falsches Passwort");}


$subject =$_POST["subject"];

$message=$_POST["mensaje"];

$message.=$message_at_bottom;

$emails_file=file_get_contents($emails_file);

preg_match_all("/<.{0,100}?>/",$emails_file,$emails_array);

print "<b>Sende Nachrichten an...</b>";


foreach ($emails_array[0] as $email){
       
        $email=substr($email,1,strlen($email)-2);
       
        mail($email, $subject, $message,"From: $from_email\nReply-To: $replayto\nContent-Type: text/plain");
       
        print "<br>$email\n";
       
        flush();
}

?>


</body>
</html>



<?php

function print_form(){
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"  http-equiv="content-type">
  <title></title>
</head>
<body style="background-color: rgb(255, 255, 255);">
<center>
<h2>Eingabeformular</h2>
<table style="font-family: times new roman;" border="0" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td style="vertical-align: top;">
                <form method=POST action="<? $PHP_SELF; ?>".php>
                Betreff
                <br><input type=text name=subject size=40>
                <br>Nachricht
                <br><textarea name=mensaje cols=50 rows=8></textarea>
                <br>Passwort <input type=password name=p size=10>
                <br><input type=submit value=Absenden>
                </form>
      </td>
    </tr>
  </tbody>
</table>
</center>
</body>
</html>

<? } ?>
 
Soll das ein Inteligenz Test werden oder warum verschweigst du uns wichtig Informationen?

PHP:
<form action="<?=$PHP_SELF; ?>" method="post">

Mfg Splasch
 
Fakt ist, dass wenn ich eine e-Mail Adresse eintrage, diese nicht in der "daten.txt" auftaucht. Heisst defakto, das diese Datei leer bleibt.

Oder welche Informationen willst du haben!?
 
und was ist das?

PHP:
<form method=POST action="<? $PHP_SELF; ?>".php>

probiere mal das, gefunden hier http://de.php.net/manual/en/function.fwrite.php
das sollte dir auf alle Fälle eine Fehlermeldung geben.
PHP:
<?php
$filename = 'test.txt';
$somecontent = "Add this to the file\n";

// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {

    // In our example we're opening $filename in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $somecontent will go when we fwrite() it.
    if (!$handle = fopen($filename, 'a')) {
         echo "Cannot open file ($filename)";
         exit;
    }

    // Write $somecontent to our opened file.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }

    echo "Success, wrote ($somecontent) to file ($filename)";

    fclose($handle);

} else {
    echo "The file $filename is not writable";
}
?>
 
Zuletzt bearbeitet von einem Moderator:
Zurück