Problem bei Mailerstellung durch Skript nach Serverumzug

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

  • Problem bei Mailerstellung durch Skript nach Serverumzug

    Hallo Leute,

    ich habe folgendes Problem. Durch ein php-Skript auf meiner Seite können Mitglieder ein Foto für einem Wettbewerb einreichen. Dabei werden gleich Username und einige andere Daten übermittelt.

    Es sind genauer zwei Dateien, die eine wird included.

    Den Quellcode beider Dateien habe ich hier als Textdatei hochgeladen (lediglich persönliche Daten habe ich abgeändert).

    Datei 1 (20070302-7b98.lib.php)
    Datei 2 (upload.php)

    Nach einem Serverumzug durch meinen Hoster (all-incl.com) funktioniert das Skript nun nicht mehr korrekt. Der Hoster will damit natürlich nichts zu tun haben. Fakt ist, dass das Skript nicht verändert wurde und in identischer Version auf einem anderen Server des gleichen Hosters ohne Probleme läuft. Hat eine Bekannte netterweise getestet. Daher der Verdacht, dass es mit Servereinstellungen zu tun hat.

    Gemäß den Regeln dieses Forums habe ich zwei Zeilen zur Fehleranzeige eingebaut. Nun wird über der Ausgabe im Browser folgendes angezeigt:

    Notice: Undefined index: formmail_submit in /www/htdocs/xxeditxx/form/20070302-7b98.lib.php on line 36
    Das wäre dann die dritte Zeile in diesem Codeausschnitt (die Zeilennummer ändert sich je nachdem, ob ich die Zeilen für die Fehleranzeige drin habe).

    Code:
    // -- Detech Submit & SendMail --
    $isHideForm = false;
    if( $HTTP_POST_VARS["formmail_submit"] ){
    	$sErr = checkPass();
    	if( ! $sErr ){
    Außerdem finden sich nun in allen! sonst leeren Eingabefeldern Texte wie
    <br /> <b>Notice</b>: Undefined index: Name in <b>/www/htdocs/xxeditxx/form/upload.php</b> on line <b>137</b><br />


    Da stimmt wohl etwas nicht. Wie gesagt, vor dem Serverwechsel hat das Skript zumindest zuverlässig die Daten samt Foto übermittelt, auch wenn es da schon buggy war.

    Die Ausgabe der email sollte eigentlich so aussehen:

    Vorname : vorname
    Name : nachname
    Nickname : nickname
    Adresse :
    Emailadresse : blah@blah.de
    Wettbewerb : nächstmöglicher
    Foto :
    Deutscher Titel : Titel
    Englischer Titel :
    Bemerkungen :


    IP:00.00.000.00
    Die Formatierung passt nicht ganz, war für die Funktion des Skriptes aber egal. Die ankommenden mails werden übrigens durch ein weiteres Programm automatisiert eingelesen und in eine xml-Datei umgewandelt.

    NACH dem Serverwechsel sieht das Ergebnis wie folgt aus:

    MIME-Version: 1.0
    Content-type: multipart/mixed;
    boundary="====_My_PHP_Form_Generator_5de88c5b0a8971a3e55308087790e216===="
    Message-Id: <20080909184413.497FA18600AA1@dd19920.kasserver.com>
    Date: Tue, 9 Sep 2008 20:44:13 +0200 (CEST)



    This is a multi-part message in MIME format.

    --====_My_PHP_Form_Generator_5de88c5b0a8971a3e55308087790e216====
    Content-Type: text/plain;
    charset=""

    Vorname : vorname
    Name : nachname
    Nickname : nickname
    Adresse :
    Emailadresse : blah@blah.de
    Wettbewerb : nächstmöglicher
    Foto :
    Deutscher Titel : Titel
    Englischer Titel :
    Bemerkungen :


    IP:00.00.000.00

    --====_My_PHP_Form_Generator_5de88c5b0a8971a3e55308087790e216====
    Content-Type: image/jpeg ;
    name="1.jpg"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
    filename="1.jpg"

    /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAMgAA/+4ADkFkb2JlAGTAAAAAAf/b

    AIQACAYGBgYGCAYGCAwIBwgMDgoICAoOEA0NDg0NEBEMDg0NDgwRDxITFBMSDxgYGhoYGCMiIiIj

    JycnJycnJycnJwEJCAgJCgkLCQkLDgsNCw4RDg4ODhETDQ0ODQ0TGBEPDw8PERgWFxQUFBcWGhoY

    GBoaISEgISEnJycnJycnJycn/8AAEQgAZAPPAwEiAAIRAQMRAf/EAMAAAAEFAQEBAAAAAAAAAAAA

    [...]
    Wie man sieht, gibt es nun einen unerwünschten Vor- und Abspann, weiter ist das Foto nicht mehr email-Anhang sondern wird als "Text" in die Mail verwurschtelt. Eine Mail scheint überhaupt nicht angekommen zu sein.

    Zur Umgebung:
    vorher: PHP Version 5.2.5
    nachher: PHP Version 5.2.6

    Wenn hier nähere Infos benötigt werden, liefere ich die gerne nach.

    Ich habe leider keine Ahnung von php und hoffe, überhaupt im richtigen Unterforum gepostet zu haben. Für Codearbeiten meines (nichtkommerziellen, privaten) Projektes habe ich bisher immer auf die Hilfe Dritter zurückgegreifen können/dürfen.

    Daher hoffe ich, dass mir auf diesem Weg geholfen werden kann - bin für jeden Tipp dankbar.
    Zuletzt geändert von zerocode; 10.09.2008, 16:28.

  • #2
    Also zunächst mal danke für die ausführliche Problembeschreibung.

    ABER du kannst die Fehler nicht einfach auf den Hoster schieben. Die Erzeugten Fehler kommen eindeutig(!) von deiner unsauberen Pogrammierung!

    Zunächst solltest du das mal alles korrigieren. isset sei hier mal erwähnt.

    Die Formatierung passt nicht ganz, war für die Funktion des Skriptes aber egal. Die ankommenden mails werden übrigens durch ein weiteres Programm automatisiert eingelesen und in eine xml-Datei umgewandelt.
    Das ginge natürlich besser, ist aber nicht das Thema dieses Threads.

    NACH dem Serverwechsel sieht das Ergebnis wie folgt aus:
    Sieht so aus, als ob da der Header zu schnell abgeschlossen wird. im Manual zur Funktion mail() steht mehr dazu. Je nach Server können sich die Einstellungen unterscheiden.

    Ich habe leider keine Ahnung von php und hoffe, überhaupt im richtigen Unterforum gepostet zu haben.
    Wenn du mit meinen Hinweisen nichts anfangen kannst, dann wars das falsche Forum. Ich verschiebe dich dann gerne nach Projekthilfe.

    Kommentar


    • #3
      Hallo TobiaZ,
      danke für Deine Hinweise.
      Da das Thema ja schon verschoben ist, bitte ich nun um Hilfsangebote :-)

      Kommentar


      • #4
        <? error_reporting(E_ALL ^ E_NOTICE); ?> an den Anfang des Skriptes müßte helfen.

        Kommentar


        • #5
          Original geschrieben von pekka
          <? error_reporting(E_ALL ^ E_NOTICE); ?> an den Anfang des Skriptes müßte helfen.
          Hi,
          also wenn ich die bereits vorhandene Zeile

          Code:
          error_reporting( E_ERROR | E_WARNING | E_PARSE );
          durch Deine ersetze (bzw. sie ganz an den Anfang setze) kommt keine Fehlermeldung beim Aufruf der Seite.

          Mit
          Code:
          error_reporting(E_ALL); #zeig alle Fehler
          ini_set('display_errors', '1'); #sorgt dafür, dass überhaupt Fehler angezeigt werden
          erhalte ich die im ersten Posting beschriebene Fehlermeldung:

          Notice: Undefined index: formmail_submit in /www/htdocs/xxeditxx/form/20070302-7b98.lib.php on line 36
          Die nützt mir aber leider auch nichts, da ich selbst ja wie geschrieben nicht programmieren kann.
          Zuletzt geändert von zerocode; 10.09.2008, 16:29.

          Kommentar


          • #6
            Wenn du es so einstellst, daß keine Fehlermeldungen mehr kommen, funktioniert denn dann alles?
            Das ist nämlich einer der ganz, ganz seltenen Fälle, in denen man eine Fehlermeldung, wenn sie abschaltbar ist, getrost ignorieren kann

            Kommentar


            • #7
              Hi,
              leider nein.

              Wenn ich es recht verstehe, kommt durch die schon früher vorhandene error_reporting Zeile ohne das zusätzliche

              ini_set('display_errors', '1');

              sowieso keine Fehlermeldung.
              Aber selbst wenn ich die Zeile auch rausnehme, ändert sich nichts. Das Skript läuft (scheinbar!) ohne Fehler und gibt die Bestätigungsmeldung, dass alles funktioniert hat.
              Aber die Mail kommt kaputt an. Wie ganz oben beschrieben.

              Kommentar


              • #8
                Du müßtest den Quellcode einer früheren, funktionierenden Mail (die sahen intern nämlich ähnlich aus) und den einer neuen, nicht funktionierenden nebeneinander legen und schauen, ob etwas fundamentales verändert ist.

                Kommentar


                • #9
                  Es wird der Zeilenumbruch im Header schuld sein. Hierfür müsste man jedoch die ENTSPRECHENDE! (und nur diese) Stelle des Quelltextes kennen.

                  Kommentar


                  • #10
                    Original geschrieben von TobiaZ
                    Es wird der Zeilenumbruch im Header schuld sein. Hierfür müsste man jedoch die ENTSPRECHENDE! (und nur diese) Stelle des Quelltextes kennen.
                    Ein verdächtiges
                    "\n"
                    habe ich unter der Unterschrift
                    // -------------------------- Begin Mail Attachment Functions

                    hier gefunden:

                    ================================
                    // setup mail header infomation
                    $headers = "From: $from\r\n";
                    if ($cc) $headers .= "CC: $cc\r\n";
                    if ($bcc) $headers .= "BCC: $bcc\r\n";
                    $plainHeaders = $headers ; // for no attachments header
                    [color=red] $headers .= "MIME-Version: 1.0\nContent-type: multipart/mixed;\n\tboundary=\"$boundary\"\n";[/color]

                    $txtMsg = "\nThis is a multi-part message in MIME format.\n" .
                    "\n--$boundary\n" .
                    "Content-Type: text/plain;\n\tcharset=\"$charset\"\n\n" . $message . "\n";

                    ================================

                    Könnte das die betreffende Stelle sein?

                    Kommentar


                    • #11
                      So ganz ohne den Inhalt der Variablen zu kennen, ist das natürlich mal wieder recht mau,

                      aber auffällig ist doch, dass sowohl \r\n als auch \n verwendet werden.

                      Den Hinweis aufs Manual diesbezüglich habe ich schon gegeben.

                      Kommentar


                      • #12
                        Hallo,
                        danke soweit.

                        Könnte man dieses Posting bitte in Jobangebote/Jobgesuche verschieben. Ich habe derzeit nicht die Zeit, mich in diese Materie einzuarbeiten. Man kann nicht alles selber machen.

                        Falls sich jemand bereit erklärt, entweder das vorhandene Skript zu fixen ODER das Skript komplett neu zu schreiben (dann hätte ich die Bitte, es optisch an ein vorhandenes phpbb3-Forentemplate anzupassen, dazu Näheres per PN), bitte mit einer Preisvorstellung bei mir melden.

                        Kommentar


                        • #13
                          Klar, nachdem du die dortigen Regeln gelesen und befolgt hast, gerne.

                          Kommentar

                          Lädt...
                          X