Newsletter-Script Fehlermeldung-wer hilft mir?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Newsletter-Script Fehlermeldung-wer hilft mir?

    Erstmal ein herzliches Hallo in die Profi-Runde,

    Ich bin leider kein PHP Profi und füge nur *fertige* Scripte ein.
    Also HTML, CSS und Co sind problemlos bei mir..aber zu PHP bin ich doch noch nicht gekommen...

    Okay, meine Frage:
    Ich habe mir ein kostenloses Newsletter-Script besorgt, funktioniert auch alles wunderbar, bis auf folgende 2 Meldungen , die beim Absenden erscheinen.

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/weba/61/92/52229192/htdocs/newsletter.php:5) in /mnt/weba/61/92/52229192/htdocs/newsletter.php on line 104
    Syntax error in mailbox address "franki@m?ller.de" (non-printable character)

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/weba/61/92/52229192/htdocs/newsletter.php:5) in /mnt/weba/61/92/52229192/htdocs/newsletter.php on line 104

    Was bedeutet das? Konfiguration und alles andere stimmen.
    Das Script dazu:
    das war für hier leider zu lange, ich poste es unten nochmals.

    Zusätzlich habe ich das Problem, dass ich zwar die newsletteranmeldung in der newsletter.txt auf dem server auslesen kann, aber beim Admin-Einloggen zeigt er mir da nichts an.

    Ich wäre euch sehr dankbar für Hilfe, ich habe nicht viel Ahnung von PHP.

    Gruß Ulrike
    PS: ich benutze den Dreamweaver MX

  • #2
    [FONT=Times New Roman]
    PHP-Code:
    <?php  
     
     
    session_start
    (); 
    $zeit=time (); 
    $nichtmehrgueltig=$zeit-$stehenlassen
    $nl=chr(13).chr(10); 
    $action=$_GET['action']; 
    $xdb='PGJyIC8+PGJyIC8+PGJyIC8+PGJyIC8+PGJyIC8+PHA+PGEgaHJlZj0ia
    HR0cDovL3d3dy53ZWJkZXNpZ24ucnVkb21heml
    uLmRlLyIgdGFyZ2V0PSJfYmxhbmsiPlNjcmlwd
    CB2b24gREVSVVMgV2ViZGVzaWduPC9hPjwvcD4='

     
    if(
    $action=="logout"){ // Admin logout 
        
    session_unset ("logedin"); 
        
    session_destroy(); 
        
    header("Location: http://".$_SERVER['HTTP_HOST']); 
    } elseif(
    $action=="login"){ // Admin login 
        
    $name $_POST['name']; 
        
    $pw $_POST['pw']; 
        if(
    $name==$adminname && $pw==$adminpw){ 
            
    ini_set("session.use_cookies""0"); 
            
    $_SESSION["logedin"] = true
            
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER
    ['SCRIPT_NAME']."?action=admin"); 
        } else { 
            
    header("Location: http://".$_SERVER['HTTP_HOST']); 
        } 

     
    #include("../../../inc/header.php"); // hier evtl den header einbinden 
     
    // nicht rechtzeitig bestätigte Anmeldungen löschen und nicht rechtzeitig 
    bestätigte Löschungen auf "normal" setzen 
    $alter_inhalt
    =file($db); 
    $output=fopen($db"w"); 
    if (
    $output){ 
        
    flock($output,2); 
        foreach(
    $alter_inhalt as $zeile){ 
            
    $inhalt=explode("|",$zeile); 
            if(
    $inhalt[5]=="" || ($inhalt[5]>$nichtmehrgueltig && $inhalt[3]=="rein") ||
     (
    $inhalt[5]>$nichtmehrgueltig && $inhalt[3]=="raus")){ 
                
    fputs($output$zeile); 
            } elseif (
    $inhalt[5]<$nichtmehrgueltig && $inhalt[3]=="raus"){ 
                
    $zeile=$inhalt[0]."|".$inhalt[1]."|".$inhalt[2]."|".$inhalt[3]."||||".$nl
                
    fputs($output$zeile); 
            } 
        } 
        
    flock($output,3); 
        
    fclose($output); 
    } else { 
        echo 
    "<p>Datei konnte nicht zum Schreiben geöffnet werden, bitte ändern sie die Zugriffsrechte!</p>"

     
     
    Anmeldung AbmeldungBestätigungslink:
    das funktioniert alles ich musste hier das Script kürzenda hier nur 10000 Zeichen erlaubt sind
     
     
       
    } elseif($action=="admin"){ // Admin eingeloggt 
        
    if($_SESSION["logedin"] == true) { 
            
    $alter_inhalt=file($db); 
            
    $eintraege=count($alter_inhalt); 
            (!isset(
    $_GET['page'])) ? $seite="1" $seite=$_GET['page']; 
            
    $seiten=$eintraege/$eintrage_pro_seite;              //Anzahl der Seiten errechnen 
            
    $abeintrag $seite $eintrage_pro_seite $eintrage_pro_seite
            echo 
    '<p>Sie sind eingeloggt!</p><p><a href="'.$_SERVER['SCRIPT_NAME'].'?action=schreiben">
    Neuen Newsletter versenden</a> | <a href="'
    .$_SERVER['SCRIPT_NAME'].'?action=logout">ausloggen</a></p>'
            echo 
    '<p>Folgende Newsletter Empfänger sind angemeldet:</p><p class=\"date\">Seite: '
            for(
    $ass 1$ass-1$seiten$ass++){              //Ausgabe der Linkliste 
                
    echo '<a href="?action=admin&page='.$ass.'">'
                (
    $ass==$seite)? $ss="<b>$ass</b>"$ss=$ass
                echo 
    $ss."</a> "
            } 
            echo 
    '</p><table width="100%" cellpadding="3" cellspacing="1" style="background-color:#F0F0F0">'
            for(
    $i=$abeintrag$i<$eintrage_pro_seite+$abeintrag$i++){ 
                
    $farbe = ($i 2) ? "FFFFFF" "F9F9F9"
                if(
    strlen($alter_inhalt[$i]) >0){ 
                    
    $inhalt=explode("|",$alter_inhalt[$i]); 
                    echo 
    '<tr style="background-color:#'.$farbe.'">
    <td>'
    .$inhalt[1].'</td><td>'.$inhalt[2].'</td><td>'.$inhalt[0].'</td><td>
    <a href="'
    .$_SERVER['SCRIPT_NAME'].'?action=delete&email='.$inhalt[0].'">
    löschen</a></td></tr>'

                } 
            } 
            echo 
    '</table><p>Insgesamt sind '.$eintraege.' Newsletter Empfänger angemeldet.</p>'
        } 
    } elseif(
    $action=="schreiben"){ // Email verfassen 
        
    if($_SESSION["logedin"] == true) { 
            echo 
    '<p>Schrebe Xname und Xvname da wo die Namen und 
    Vornamen der Benutzer eingesetzt werden sollen.</p> 
            <form action="?action=senden" method="post">  
                        <table width="100%" cellpadding="3" cellspacing="1"> 
                            <tr><td width="140" align="right">Betreff:</td><td align="left">
    <input type="text" name="betreff" value="" style="width:100%;" /></td></tr> 
                            <tr><td align="right" valign="top">Text:</td><td align="left">
    <textarea rows="20"  style="width:100%" name="mailtext"></textarea></td></tr> 
                            <tr><td>&nbsp;</td><td align="left"><input type="submit"
     name="submit" class="button" value="Newsletter versenden" style="width:100%" /></td></tr> 
                        </table> 
                    </form>'

        } 
    } elseif(
    $action=="senden"){ // Email versenden 
        
    if($_SESSION["logedin"] == true) { 
            
    $betreff=stripcslashes($_POST['betreff']); 
            
    $mailtext=stripcslashes($_POST['mailtext']); 
            echo 
    "<p>Der Newsletter wurde an folgende Emai Adressen versendet:<br />"
            
    $alter_inhalt=file($db); 
            foreach(
    $alter_inhalt as $zeile){ 
                
    $inhalt=explode("|",$zeile); 
                if(
    $inhalt[3]!='rein' && $inhalt[3]!='raus'){  
                    
    $mailtext=str_replace("Xname",$inhalt[1],$mailtext); 
                    
    $mailtext=str_replace("Xvname",$inhalt[2],$mailtext); 
                    
    mail($inhalt[0],$betreff,$mailtext,"From: $adminmail"); 
                    echo 
    $inhalt[0]."<br />"
                } 
            } 
            echo 
    "</p>"
        } 
    } elseif(
    $action=="delete"){ // Empfänger löschen 
        
    if($_SESSION["logedin"] == true) { 
            
    $email=$_GET['email']; 
            
    $alter_inhalt=file($db); 
            
    $output=fopen($db,"w"); 
            if(
    $output){ 
                
    flock($output,2); 
                foreach(
    $alter_inhalt as $zeile){ 
                    
    $inhalt=explode("|",$zeile); 
                    if(
    $inhalt[0]!=$email){ 
                        
    fputs($output$zeile); 
                    } else { 
                        echo 
    "<p>Der Empfänger $email wurde gelöscht.</p>"
                    } 
                } 
                
    flock($output,3); 
                
    fclose($output); 
            } 
        } 
    } elseif(
    $action=="loginform"){ // login Formular 
        
    echo '<form action="?action=login" method="post">  
                    <table width="100%" cellpadding="3" cellspacing="1"> 
                        <tr><td width="140" align="right">Admin:</td>
    <td align="left"><input type="text" name="name" value="" 
    style="width:100%;" /></td></tr> 
                        <tr><td align="right">Passwort:</td><td align="left">
    <input type="password" name="pw" value="" style="width:100%" /></td></tr> 
                        <tr><td>&nbsp;</td><td align="left">
    <input type="submit" name="submit" class="button" 
    value="einloggen" style="width:100%" /></td></tr> 
                    </table> 
                </form>'

    } elseif(!isset(
    $action)){ 
        echo 
    '<form action="#" method="get">  
                <table width="100%" cellpadding="3" cellspacing="1"> 
                    <tr><td width="140" align="right">Nachname:</td><td align="left">
    <input type="text" name="name" value="" style="width:100%;" /></td></tr> 
                    <tr><td align="right">Vorname:</td><td align="left">
    <input type="text" name="vname" value="" style="width:100%" /></td></tr> 
                    <tr><td align="right">E-Mail:</td><td align="left">
    <input type="text" name="email" value="" style="width:100%" /></td></tr> 
                    <tr><td>&nbsp;</td><td>anmelden: <input type="radio"
    name="action" value="rein" checked="checked" /> 
    abmelden: <input type="radio" name="action" value="raus" /></td></tr> 
                    <tr><td>&nbsp;</td><td align="left"><input type="submit" name="submit" 
    class="button" value="absenden" style="width:100%" /></td></tr> 
                </table> 
            </form>'

     

      
    #include("../../../inc/footer.php"); // hier evtl den footer einbinden 
     
    ?>
    [/FONT]
    [FONT=Times New Roman] [/FONT]
    Zuletzt geändert von PHP-Greenhorn; 17.09.2010, 14:02.

    Kommentar


    • #3
      Bitte Code umbrechen! (Posting editieren, Zeilenumbrüche einfügen.)
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Hallo,

        was die Fehlermeldung bedeutet kann man tausendfach bei Google nachlesen, daher gehe ich darauf nicht näher ein. Untersuch das Script mal mit nem Hexeditor, ob am Anfang ein UTF-8-BOM drinsteht. Was das ist, sagt dir auch Google.

        Ein kostenloser und empfehlenswerter Editor der UTF-8 auch ohne BOM speichern kann ist Notepad++.

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Der Entscheidende Punkt ist hier:
          PHP-Code:
          <?php  
           
           
          session_start
          ();
          session_start() muss vor jeglicher Ausgabe aufgerufen werden, insofern sieht das Skript zwar erstmal richtig aus aber offenbar passiert vor <?php hier schon etwas. Das kann eine reingerutschte Leerzeile sein oder ein unsichtbares BOM (Byte Order Mark). Beachte dazu beim Speichern dass du für die Zeichenkodierung UTF-8 ohne BOM auswählst. Falls das mit Dreamweaver nicht geht, versuche es mit einem Texteditor wie notepad++.

          Kommentar


          • #6
            @fab-s:
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              @PHP-Greenhorn
              Nochmal der Hinweis. Bitte den Code umbrechen, sonst schließe ich den Thread!

              Danke
              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                @fab-s: Danke für die schnelle und unkomplizierte Antwort.

                Ihr könnt den thread schließen.
                Gruß

                Kommentar


                • #9
                  Du brichst trotzdem noch den Code um! Verstanden? Denkt auch mal an andere, denen durch diesen Thread geholfen werden könnte.

                  Peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    gehts auch etwas freundlicher???

                    ich mache es.

                    Gruß Ulrike

                    Kommentar


                    • #11
                      ist es denn jetzt okay?
                      habe es direkt hier gemacht...

                      Kommentar


                      • #12
                        Zitat von PHP-Greenhorn Beitrag anzeigen
                        ist es denn jetzt okay?
                        Nö - muss trotz 1900er-Auflösung noch etwas querscrollen.

                        OT:
                        Seit wann ist Kropff eigentlich Admin
                        Ich will hier raus...
                        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                        Schön - etwas Geschichte kann ja nicht schaden.
                        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                        Kommentar


                        • #13
                          Zitat von PHP-Greenhorn Beitrag anzeigen
                          gehts auch etwas freundlicher???

                          ich mache es.

                          Gruß Ulrike
                          Nicht wenn du schon vorher zweimal darauf hingewiesen worden bist. Beim dritten Mal wird es dann halt ein wenig deutlicher.

                          Peter

                          PS: wir müssen immer rnoch scrollen.
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            ..dann sagt mir wie das geht..soll ich jede Zeile einzeln umbrechen?
                            habe nur mal die langen genommen und das Problem , bei mir bricht es im Editor normal um, also ich sehe es gut..auch hier.

                            ...wenn ich dann weiß wie es geht...muss man mich nicht 4 mal erinnern..oder wie oft war es?

                            Kommentar


                            • #15

                              Sollte ja nicht so schwer sein, die langen Zeilen in seinem Code zu finden und dort halt nen Umbruch einzufügen, hm?
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X