Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler beim senden des Kontaktformulars

Einklappen

Neue Werbung 2019

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

  • Fehler beim senden des Kontaktformulars

    Hallo zusammen ich bin gerade an eine Internetseite zugange und würde gerne die Daten aus einem Kontaktformular in eine sql Datenbank senden doch leider bin ich am verzweifeln.

    Sobald ich auf senden klicke verweist er mich auf meine Exec_Kontaktform.php mit dem Fehler:
    Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\SQL\xampp\htdocs\Test\exec_kontaktform.php on line 188

    Warning: Cannot modify header information - headers already sent by (output started at C:\SQL\xampp\htdocs\Test\exec_kontaktform.php:187) in C:\SQL\xampp\htdocs\Test\exec_kontaktform.php on line 195
    Ich finde den Fehler einfach nicht....

    der Code vom Exec_kontaktform.php sieht so aus:
    PHP-Code:
    <?php 
    //**********************************************
    // Datenbankverbindung herstellen
    //**********************************************
        
    mysql_connect("localhost","root","root"); // Server ; User ; Passwort
        
    mysql_select_db("georgi_dimov"); // Datenbank



    //**********************************************
    // Standartwerte setzen
    //**********************************************
        
    $errorcode "|";
        
        
    //**********************************************
    // Uebergabewerte ermitteln
    //**********************************************
        
        
    $intKontaktformID $_POST["intKontaktformID"]; // = -1 bei Neuanlage
        
    $intAnrede $_POST["intAnrede"];
        
    $strVorname $_POST["strVorname"];
        
    $strNachname $_POST["strNachname"];
        
    $strEmail $_POST["strEmail"];
        
    $txtNachricht $_POST["txtNachricht"];
        
    $intEmpfaenger $_POST["cboGebiet"];
        
        
    //**********************************************
    // Plausibilitätscheck
    //**********************************************
        
    if ($intAnrede == "")
            {
                
    $errorcode $errorcode "0100|";  // keine Anrede ausgewählt
            
    }
        
        if (
    $strVorname == "")
            {
                
    $errorcode $errorcode "0200|";  // keinen Vornamen eingegeben
            
    }
        
        if (
    $strNachname == "")
            {
                
    $errorcode $errorcode "0300|";  // keinen Nachnamen eingegeben
            
    }
        
        if (
    $strEmail == "")
            {
                
    $errorcode $errorcode "0400|";  // keine Emailadresse angegeben
            
    }
        
        if (
    $txtNachricht == "")
            {
                
    $errorcode $errorcode "0500|";  // keine Nachricht angegeben
            
    }
        else
            {
                if (
    strlen($txtNachricht) > 2000)
                    {
                        
    $errorcode $errorcode "0504|";  // Nachricht zu lang (2000 char.)
                    
    }
            }
        
        
            
        
    //**********************************************
    // Daten verarbeiten
    //**********************************************
        
    if ($intKontaktformID == -1)
            {
                
    //**********************************************
                // Neue NAchricht
                //**********************************************
            
                
    $SQL "INSERT INTO tblKontakt (" ;
                    
    $SQL $SQL "intAnrede, " ;
                    
    $SQL $SQL "strVorname, " ;
                    
    $SQL $SQL "strNachname, " ;
                    
    $SQL $SQL "strEmail, " ;
                    
    $SQL $SQL "txtNachricht, " ;
                    
    $SQL $SQL "cboGebiet " ;
                
    $SQL $SQL ") VALUES (" ;
                    
    $SQL $SQL "'" $intAnrede " ', " ;
                    
    $SQL $SQL "'" $strVorname " ', " ;
                    
    $SQL $SQL "'" $strNachname "', " ;
                    
    $SQL $SQL "'" $strEmail ."', " ;
                    
    $SQL $SQL "'" $txtNachricht ."', " ;
                    
    $SQL $SQL "'" $cboGebiet "' " ;
                
    $SQL $SQL ")" ;
                
                
    //echo "SQL = " . $SQL . "<br><br>" ;
                
                
    mysql_query($SQL);
                
    //$RECrows = mysql_affected_rows();
                
                //echo "eingef&uuml;gte Datens&auml;tze: " . $RECrows . "<br><br>";
                
                //***************************************************
                // UID ermitteln
                //***************************************************
                    
                    
    $SQL "SELECT max(`intID`) as newid FROM `tblKontakt`" ;
                    
                    
    //echo "SQL = " . $SQL . "<br><br>" ;
                    
                    
    $REC mysql_query($SQL);
                    
                    
    $RECset mysql_fetch_assoc($REC);
                    
    $intKontaktformID $RECset["newid"];
                    
                    
    //echo "newid = lngID = " . $lngID . "<br><br>";
            
    }
        else
            {
                
    //**********************************************
                // Nachricht aktualisieren
                //**********************************************
                    
    $SQL "UPDATE tblKontakt SET " ;
                    
    $SQL $SQL " intAnrede = '" $intAnrede "',";
                    
    $SQL $SQL " strVorname = '" $strVorname "',";
                    
    $SQL $SQL " strNachname = '" $strNachname "',";
                    
    $SQL $SQL " strEmail = '" $strEmail "',";
                    
    $SQL $SQL " txtNachricht = '" $txtNachricht "',";
                    
    $SQL $SQL " intEmpfehlung = " $cboGebiet " ";
                    
    $SQL $SQL " WHERE intID = " $intKontaktformID ;
                    
                    
    //echo "SQL = " . $SQL . "<br><br>" ;
                    
                    
    mysql_query($SQL);
                    
    //$RECrows = mysql_affected_rows();
                    
                    //echo "aktualisierte Datens&auml;tze: " . $RECrows . "<br><br>";
            
            
    // end if Neuanlage oder Update
        


        
    //**********************************************
    // Auf Fehlerfreiheit prüfen und ggf. Versand
    // sonst Rückleitung
    //**********************************************
    if ($errorcode == "|"// kein Fehler in der Nachricht vorhanden
        
    {
            
            
    //**********************************************
            // Anrede ermitteln
            //**********************************************
                
    if ($intAnrede == 1)
                    {
                        
    $strAnrede "Frau";
                    }
                else
                    {
                        
    $strAnrede "Herr";
                    }
            
    //**********************************************
            // Empfänger ermitteln
            //**********************************************
            // zum Testen
            
    $strTo "test@test.de";


            
    //**********************************************
            // Nachrichtentext zusammensetzen
            //**********************************************

            
    $strSubject "Georgi-Dimov - Kontaktformular";
            
            
    $strContent "Nachricht aus dem Kontaktformular von Georgi-Dimov\r\n";
            
    $strContent $strContent "---------------------------------------------------\r\n";
            
    $strContent $strContent "Absender: \r\n";
            
    $strContent $strContent $strAnrede " " $strVorname " " $strNachname "\r\n";
            
    $strContent $strContent "Email   : " $strEmail "\r\n";
            
    $strContent $strContent "---------------------------------------------------\r\n";
            
    $strContent $strContent "Der Absender hat folgende Nachricht hinterlassen:\r\n";
            
    $strContent $strContent "---------------------------------------------------\r\n";
            
    $strContent $strContent $txtNachricht "\r\n";
            
    $strContent $strContent "---------------------------------------------------\r\n";
            
    $strContent $strContent "Ende der Übermittlung - " date("Y-m-d") . "\r\n";

            
    $strHeaders "From: " $strEmail "\r\n" .
                             
    "Content-Type: text/plain; charset=ISO-8859-1\r\n" .
                             
    "Content-Transfer-Encoding: 8bit";
            
            echo(
    $strContent);
            
    mail($strTo$strSubject$strContent$strHeaders);
            
            
            
    //**********************************************
            // weiterleiten auf nächste Seite
            // Achtung: funktioniert nur, wenn bisher nichts angezeigt wurde
            //**********************************************
            
    Header("Location:kontaktform_confirm.php?intKontaktformID="$intKontaktformID "\n\n"); // Bestätigungsseite
        
    }
    else 
    // in der Nachricht it ein Fehler - errorcode != "|"
        
    {
            
    Header("Location:Kontaktformular.php?intKontaktformID="$intKontaktformID "\n\n"); // Fehler, daher zurück zur Kontaktformular
        
    }
    ?>

    Kann mir jemand helfen?
    Danke schonmal Gruß Sascha


  • #2
    Grund steht doch schon da

    PHP-Code:
    Warningmail() [function.mail]: Failed to connect to mailserver at "localhost" port 25verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\SQL\xampp\htdocs\Test\exec_kontaktform.php on line 188 
    Bei XAMPP ist kein Mailserver dabei, ergo kann man keine Mails-verschicken. Das führt zur Ausgabe des Warnings. Sobald mindestens ein Zeichen ausgegeben werden funktionieren aber die Header() Aufrufe nicht mehr. Auch das sagt dir die Fehlermeldung:

    PHP-Code:
    WarningCannot modify header information headers already sent by (output started at C:\SQL\xampp\htdocs\Test\exec_kontaktform.php:187in C:\SQL\xampp\htdocs\Test\exec_kontaktform.php on line 195 
    Und wenn der Header nicht geschickt werden kann, funktioniert auch das Forwarding nicht

    Kommentar


    • #3
      Danke für die schnelle Antwort ich muss dazu sagen ich bin blutiger Anfänger
      was kann ich denn jetzt machen damit mir die Daten an die Datenbank übergeben werden,
      und noch besser was muss ich machen damit ich sie per Email bekomme?
      Einen Server habe ich bereits mit Domain ect.

      Kommentar


      • #4
        Auf dem Zielserver dürfte der Code ohne Fehler durchlaufen, da dort wahrscheinlich ein SendMail verfügbar ist.

        Also in der DB müssten die Daten jetzt eigentlich auch schon ankommen. Das Mail-Senden findet ja unterhalb der DB Änderungen statt.

        Kommentar


        • #5
          Zitat von mquadrat Beitrag anzeigen
          Grund steht doch schon da

          PHP-Code:
          Warningmail() [function.mail]: Failed to connect to mailserver at "localhost" port 25verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\SQL\xampp\htdocs\Test\exec_kontaktform.php on line 188 
          Bei XAMPP ist kein Mailserver dabei, ergo kann man keine Mails-verschicken. Das führt zur Ausgabe des Warnings. Sobald mindestens ein Zeichen ausgegeben werden funktionieren aber die Header() Aufrufe nicht mehr. Auch das sagt dir die Fehlermeldung:

          PHP-Code:
          WarningCannot modify header information headers already sent by (output started at C:\SQL\xampp\htdocs\Test\exec_kontaktform.php:187in C:\SQL\xampp\htdocs\Test\exec_kontaktform.php on line 195 
          Und wenn der Header nicht geschickt werden kann, funktioniert auch das Forwarding nicht
          Das stimmt nicht. XAMPP hal wohl einen Mailserver, der muss nur richtig konfiguriert werden. Das teil nennt sich MercuryMail.
          Aber Vorsicht bei verschicken einer Großanzahl an Mails (Newsletter oder der gleichen), da kackt Mercury schnell ab und mann muss die mails per hand aus dem Ordner löschen...
          "My software never has bugs, it just develops random features."
          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

          Kommentar


          • #6
            Ich habe jetzt mal ein paar Teile raus genommen und nun hat die übergabe geklappt.
            Jetzt eine Frage zum versenden der mail.
            muss ich nicht irgendwo den Server, Benutzer und Passwort angeben damit die Mail versendet werden kann?

            Kommentar


            • #7
              Wie Nikosch bereits Gestern gepostet hat:

              Mail() ist tot, es lebe mail()
              http://www.php.de/adventskalender-20...fverkehrs.html

              Wolf29
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar


              • #8
                Zitat von wolf29 Beitrag anzeigen
                Das ist nicht von nikosch sondern von robo47. Aber du solltest lieber eine fertige Mailer-Klasse verwenden!
                Ich würde SwiftMailer empfehlen. Sehr schlank bei erzeugen von Mails. Geht auch mit Smtp oder mail() Funktion intern.
                "My software never has bugs, it just develops random features."
                "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                Kommentar


                • #9
                  Jep, deswegen hab ich ja auch geschrieben "wie Nikosch Gestern gepostet hat" (damit waren die Links gemeint)!

                  http://www.php.de/php-einsteiger/704...tml#post532513

                  Wolf29
                  while (!asleep()) sheep++;

                  Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                  Kommentar


                  • #10
                    Danke für die vielen Antworten ich werde mich da mal durch arbeiten und evtl nochmal melden.....habe auch noch andere Fragen zu Php aber alles zu seiner Zeit

                    Kommentar


                    • #11
                      Zitat von SleepWalker86 Beitrag anzeigen
                      und würde gerne die Daten aus einem Kontaktformular in eine sql Datenbank senden
                      WTF soll das „Senden in eine Datenbank“ (das nennt man Eintragen) mit mail() zu tun haben, bzw. umgekehrt die Verwendung von mail() mit dem Eintragen in eine Datenbank ...?

                      Kommentar


                      • #12
                        Das ist nicht von nikosch sondern von robo47.
                        Auch diese Aussage ist nur halb richtig.

                        WTF soll das „Senden in eine Datenbank“ (das nennt man Eintragen) mit mail() zu tun haben, bzw. umgekehrt die Verwendung von mail() mit dem Eintragen in eine Datenbank ...?
                        Bitte alles lesen!
                        was kann ich denn jetzt machen damit mir die Daten an die Datenbank übergeben werden,
                        und noch besser was muss ich machen damit ich sie per Email bekomme?
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Hallo zusammen das hat soweit alles geklappt email kommt und die Daten sind auch in der Datenbank.

                          Nun möchte ich eine Bestätigungsseite haben doch leider weiss ich nicht wie ich den gerade abgeschickten Datensatz dann auf der seite angezeigt bekomme...für ein wenig Hilfe wäre ich sehr Dankbar...
                          Gruß Sascha
                          PHP-Code:
                          ?>

                          <body>
                          <p>Kontaktformular von:</p>
                          <p>&nbsp;</p>
                          <p>&nbsp;</p>
                          <?php 
                          //**********************************************
                          // Datenbankabfrage
                          //**********************************************

                                  
                          $SQL "SELECT * " ;
                                  
                          $SQL $SQL " FROM  tblkontakt" ;
                                  
                          //$SQL = $SQL . "ORDER BY intID" ;
                                  //$SQL = $SQL . "LIMIT 1" ;
                                  //$SQL = $SQL . " where intID = intID" ;
                                  
                                  //echo "SQL = " . $SQL . "<br><br>" ;
                                  
                                  
                          $REC mysql_query($SQL); // hier wird der SQL-Befehl an die Datenbank geschickt und ausgeführt
                                  
                          $RECrows mysql_num_rows($REC); // Anzahl der Ergebnisdatensätze ermitteln
                                  //Dies ist notwendig, damit wir ermittel können, ob überhaupt ein Ergebnis zurück gegeben wird
                                  // oder ob bei anderen Abfragen mehrere Ergebnisse vorliegen, die dann z.B. in einer Tabelle untereinander angezeigt werden
                                  //echo "Anzahl der Datens&auml;tze: " . $RECrows . "<br><br>";
                                  
                                  
                          if ($RECrows >=1// wenn also mindestens 1 Datensatz im Ergebnis ist
                                      
                          {
                                      
                          $RECset mysql_fetch_assoc($REC); // Ein sog. "Recordset" wird gefüllt
                                      // die Daten liegennun auf dem Server in einer "temporären Tabelle" vor - dem Recordset
                                      //wenn Sie es genauer wissen möchten: dies ist ein so genanntes Array
                                          
                                          // Nun fragen wir ein bestimmtes Feld aus dem Array ab und füllen damit eine ganz normale Variable
                                          
                          $intAnrede $RECset["intAnrede"];
                                          
                          $strVorname $RECset["strVorname"];
                                          
                          $strNachname $RECset["strNachname"];
                                          
                          $strEmail $RECset["strEmail"];
                                          
                          $txtNachricht $RECset["txtNachricht"];
                                              
                          //$txtNachricht = str_replace(chr(13),"<br />",$txtNachricht);
                                          
                          $intEmpfaenger $RECset["intEmpfaenger"];
                                          
                          $dtmAnlage $RECset["dtmAnlage"];
                                      } 
                          // endif Eintrag gefunden
                                      
                                      
                                      
                                      
                                      
                                      
                                      
                                      
                                      
                                      
                                      
                                      
                                      //**********************************************
                                  // Anrede ermitteln
                                  //**********************************************
                                      
                          if ($intAnrede == 1)
                                          {
                                              
                          $strAnrede "Frau";
                                          }
                                      else
                                          {
                                              
                          $strAnrede "Herr";
                                          }
                                      
                                      
                                      
                                      
                                      
                                      
                          //**********************************************
                                  // Gebiet ermitteln
                                  //**********************************************
                                      
                          if ($cboGebiet == 1)
                                          {
                                              
                          $strArt "Holzhandel";
                                          }
                                      else
                                          {
                                              
                          $strArt "Reifenhandel";
                                          }
                                      
                                      
                                      
                                      
                              
                              
                          ?>
                              
                              <p>&nbsp;</p>
                              <table width="100%" border="0" cellspacing="2" cellpadding="2">
                              <tr>
                                  <td>ID</td>
                                  <td width="80%"><?php echo $intAnrede ?></td>
                              </tr>
                              <tr>
                                  <td>Anrede</td>
                                  <td><?php echo $strAnrede ?></td>
                              </tr>
                              <tr>
                                  <td>Vorname</td>
                                  <td><?php echo $strVorname ?></td>
                              </tr>
                              <tr>
                                  <td>Nachname</td>
                                  <td><?php echo $strNachname ?></td>
                              </tr>
                              <tr>
                                  <td>Email</td>
                                  <td><?php echo $strEmail ?></td>
                              </tr>
                              <tr>
                                  <td>Empfänger</td>
                                  <td><?php echo $strArt ?></td>
                              </tr>
                              <tr>
                                  <td>Anlage</td>
                                  <td><?php echo $dtmAnlage ?></td>
                              </tr>
                              <tr>
                                  <td>Nachricht</td>
                                  <td><?php echo $txtNachricht ?></td>
                              </tr>
                          </table>

                          Kommentar


                          • #14
                            Ich bekomme die intID einfach nicht auf die Bestätigungsseite.....hilffffeee...

                            PHP-Code:
                            $SQL "SELECT * " ;
                                    
                            $SQL $SQL " FROM  tblkontakt" ;
                                    
                            //$SQL = $SQL . "ORDER BY intID" ;
                                    //$SQL = $SQL . "LIMIT 1" ;
                                    
                            $SQL $SQL " where intID = $intKontaktformID Limit 1" ;
                                    
                            //$SQL = $SQL . " where intKontaktformID" ; 
                            in diesem Teil komme ich nicht weiter habe schon alles möglich aus probiert....

                            Kommentar


                            • #15
                              Dann lass Dir $SQL vor dem Ausführen mal als Text ausgeben.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X