Ankündigung

Einklappen
Keine Ankündigung bisher.

Mein E-Mail Kontaktformular gibt mir immer die Fehler Seite aus!?

Einklappen

Neue Werbung 2019

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

  • Mein E-Mail Kontaktformular gibt mir immer die Fehler Seite aus!?

    Hallo liebe PHP.de Community ich habe mal ne Frage ich bin neu in PHP und auch HTML und wollte für eine Internetseite ein Kontaktformular machen das über PHP eine E-Mail ausgeben soll und die an meine E-Mail senden soll aber ich bekomme immer nur die Fehler Seite angezeigt aber da ich keinen Log finden kann was dort passiert ist frage ich einfach mal hier rum und ich hoffe einer von euch kann mir Helfen ich benutze Debian 9 mit Nginx,PHP 7 und MariaDB aber er will einfach die Nachricht nicht senden vielleicht fehlt mir auch einfach nur ein Paket was ich nachinstallieren muss aber ich weiß nicht welches aber es kann auch sein das einfach was mit dem Code nicht stimmt einfach mal rüber schauen und mir Feedback geben wäre echt toll.

    send_email.php

    PHP-Code:
    <?php
    //send_email.php
    $email_from "admin@craftenmedia.net";   //Absender falls keiner angegeben wurde
    $sendermail_antwort true;      //E-Mail Adresse des Besuchers als Absender. false= Nein ; true = Ja
    $name_von_emailfeld "E-Mail";   //Feld in der die Absenderadresse steht

    $empfaenger "admin@craftenmedia.net"//Empfänger-Adresse
    $mail_cc ""//CC-Adresse, diese E-Mail-Adresse bekommt einer weitere Kopie
    $betreff "CraftenMedia.net - Kontaktanfrage"//Betreff der Email

    $url_ok "http://dev.xdsv.xyz/kontakt/ok.php"//Zielseite, wenn E-Mail erfolgreich versendet wurde
    $url_fehler "http://dev.xdsv.xyz/kontakt/fehler.php"//Zielseite, wenn E-Mail nicht gesendet werden konnte


    //Diese Felder werden nicht in der Mail stehen
    $ignore_fields = array('submit');




    //Datum, wann die Mail erstellt wurde
    $name_tag = array();
    $name_tag[0] = "Sonntag";
    $name_tag[1] = "Montag";
    $name_tag[2] = "Dienstag";
    $name_tag[3] = "Mittwoch";
    $name_tag[4] = "Donnerstag";
    $name_tag[5] = "Freitag";
    $name_tag[6] = "Samstag";
    $num_tag date("w");
    $tag $name_tag[$num_tag];
    $jahr date("Y");
    $n date("d");
    $monat date("m");
    $time date("H:i");

    //Erste Zeile unserer Email
    $msg ":: Gesendet am $tag, den $n.$monat.$jahr - $time Uhr ::\n\n";

    //Hier werden alle Eingabefelder abgefragt
    while (list($name,$value) = each($_POST)) {
       if (
    in_array($name$ignore_fields)) {
            continue; 
    //Ignore Felder wird nicht in die Mail eingefügt
       
    }
       
    $msg .= "::: $name :::\n$value\n\n";
    }



    //E-Mail Adresse des Besuchers als Absender
    if ($sendermail_antwort and isset($_POST[$name_von_emailfeld]) and filter_var($_POST[$name_von_emailfeld], FILTER_VALIDATE_EMAIL)) {
       
    $email_from $_POST[$name_von_emailfeld];
    }

    $header="From: $email_from";

    if (!empty(
    $mail_cc)) {
       
    $header .= "\n";
       
    $header .= "Cc: $mail_cc";
    }


    $mail_senden mail($empfaenger,$betreff,$msg,$header);


    //Weiterleitung, hier konnte jetzt per echo auch Ausgaben stehen
    if($mail_senden){
      
    header("Location: ".$url_ok); //Mail wurde gesendet
      
    exit();
    } else{
      
    header("Location: ".$url_fehler); //Fehler beim Senden
      
    exit();
    }
    index.html

    HTML-Code:
    <form method="post" action="/kontakt/send_email.php">
    <label for="Name"><b>Name:</b></label><br>
    <input type="text" id="Name" name="Name"><br><br>
    
    <label for="Email"><b>E-Mail:</b></label><br>
    <input type="text" id="Email" name="Email"><br><br>
    
    <label for="Betreff"><b>Betreff:</b></label><br>
    <input type="text" id="Betreff" name="Betreff"><br><br>
    
    <label for="Nachricht"><b>Nachricht:</b></label><br>
    <textarea id="Nachricht" name="Nachricht" rows="10" cols="50"></textarea> <br><br>
    
    <input type="submit" name="submit">
    </form>
    ok.php

    PHP-Code:
    <?php
    echo "dev.xdsv.xyz/kontakt/ok.php";
    ?>
    fehler.php

    PHP-Code:
    <?php
    echo "dev.xdsv.xyz/kontakt/fehler.php";
    ?>
    So das sind die Codes und wenn ihr euch selber überzeugen wollt dann geht einfach auf http://dev.xdsv.xyz/kontakt/

    Sonst bedanke ich mich schon mal für jede Hilfe dich ich bekommen sollte

  • #2
    Moin setz mal das Error reporting an:

    https://php-de.github.io/jumpto/leitfaden/

    PHP-Code:
    error_reporting(-1);
    ini_set('display_errors'1); 

    Kommentar


    • #3
      PHP-Code:
      $mail_senden mail($empfaenger,$betreff,$msg,$header); 
      Und nutz eine Mailerklasse, du hast da eine Spam-Schleuder und mail() falsch zu verwenden (die RFC nicht zu beachten/ anzuwenden) führt selten ans Ziel.

      http://www.php-rocks.de/thema/51-htm...phpmailer.html

      https://php-de.github.io/jumpto/mail-class/

      Die weiteren Gründe warum du das tun sollst erfährst zB auch in den Links.
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Zitat von hausl Beitrag anzeigen

        Und nutz eine Mailerklasse, du hast da eine Spam-Schleuder und mail() falsch zu verwenden (die RFC nicht zu beachten/ anzuwenden) führt selten ans Ziel.

        http://www.php-rocks.de/thema/51-htm...phpmailer.html

        https://php-de.github.io/jumpto/mail-class/

        Die weiteren Gründe warum du das tun sollst erfährst zB auch in den Links.
        Also es geht jetzt das er die E-Mail sendet aber wie kann ich jetzt einbetten das ich ein Formular ausfüllen muss um dann die Daten zu senden ?

        Kommentar


        • #5
          Du hast 2 Möglichkeiten.
          • Du erstellst 2 Dateien, eine ist das Kontaktformular und die andere ist für die Validierung der Daten und das Abschicken der E-Mail zuständig.
          • Du erstellst ein sogenanntes Affenformular.


          Eigentlich gibt es noch mehr Möglichkeiten, aber das würde bei deinem bisherigen Kenntnisstand wohl zu weit führen.

          Kommentar


          • #6
            Zitat von CraftenMedia Beitrag anzeigen

            Also es geht jetzt das er die E-Mail sendet aber wie kann ich jetzt einbetten das ich ein Formular ausfüllen muss um dann die Daten zu senden ?
            Und dass soll dann hier eingefügt werden so das ich auf http://dev.xdsv.xyz/craftenmedia.net/contact.html nur noch auf senden gehen muss und dann soll das alles gehen

            HTML-Code:
            <tr>
            <td class="main align col2">Ihr Name*</td>
            <td class="main"><input class="form-control" type="text" name="absender_name" style="width:250px;" /></td>
            </tr><p></p>
            </div>
            <div class="panel-primary">
            <tr>
            <td class="main align col2">Ihre E-Mail-Adresse*</td>
            <td class="main"><input class="form-control" type="text" name="absender_mail" style="width:250px;" /></td>
            </tr>
            </div>
            <div class="panel-primary">
            <tr>
            <td class="main align col2">Ihr Kommentar*</td>
            <textarea class="form-control" name="absender_text" id="absender_text" style="width:350px;" cols="350" rows="5" onkeydown="rest(this,2500,'count_1',event)" onkeyup="rest(this,2500,'count_1',event)" onchange="rest(this,2500,'count_1',event)"></textarea></td>
            </tr>
            Das ist der Code in das das eingefügt werden soll

            Kommentar


            • #7
              Behebe auch mal diese Fehler:
              https://validator.w3.org/nu/?doc=htt...2Fcontact.html
              Diese Zeile musst du anpassen, siehe Beitrag #5 dazu.
              Hier ist es das action Attribut, welches du anpassen musst, damit die Datei aufgerufen wird.

              PHP-Code:
                <form name="dwmailer" action="http://www.dw-formmailer.de/cgi-bin/dwmailer/dwmailer.pl" enctype="multipart/form-data" method="post" onsubmit="return check_form(this);"
              Nebenbei brauchst du für diese 3 Felder keine Tabelle, nutze CSS für die Darstellung und label für die Feldbezeichner.
              onsubmit ist Javascript und sollte nicht im HTML Code stehen sondern in einer extra Datei.
              Für E-Mail gibt es auch noch die den Typ email und wenn du willst das alle Felder ausgefüllt sein müssen, dann füge required hinzu.


              Kommentar

              Lädt...
              X