Kai: formular funktioniert nicht richtig

hi leute ich hab in meinem formular ein javascript mit eingebaut welches überprüfen soll ob alle felder ausgefüllt sind und die e-mail dann erst los schickt. es überprüft die felder auch aber schickt die e-mail trotzdem los. könnt ihr mir sagen was ich falsch gemacht habe? so sieht das formular bis jetzt aus:

<html>
<head><h2><u>Eintrag Aktuelle Informationen</u></h2><hr></head>
 <body bgcolor="#F0FFFB">

<SCRIPT LANGUAGE="JavaScript">
<!--
function validate_form() {
  validity = true; // assume valid
  if (!check_empty(document.form.NAME.value))
        { validity = false; alert('Namensfeld ist leer!'); }
  if (!check_email(document.form.EMAIL.value))
        { validity = false; alert('eMail ist ungültig!'); }
  if (!check_empty(document.form.Betreff.value))
        { validity = false; alert('Betreff ist leer'); }
  if (!check_empty(document.form.text.value))
        { validity = false; alert('Text ist leer'); }
  if (validity)
        alert ("Alle benötigten Informationen wurden geprüft. "
                + "Die eingaben wurden als richtig erkannt ");
  return validity;
}

function check_empty(text) {
  return (text.length > 0); // gibt false zurück wenn leer
}

function check_email(address) {
  if ((address == "")
    || (address.indexOf ('@') == -1)
    || (address.indexOf ('.') == -1))
      return false;
  return true;
}
// -->
</script>

<form name="form" method="post" action="<?php print $PHP_SELF ?>" enctype="text/plain" onSubmit="return validate_form(this.form)">
<font class="stn"><b>Name:</b><br>
<input type="text" size=40 name="NAME"><br>
<font class="stn"><b>Email:</b><br>
<input type="text" size=40 name="EMAIL"><br>
<br>
<font class="stn"><b>Betreff:</b><br>
<input type="text" size=40 name="Betreff"><br>
<b>Text:</b><br><textarea name="text" rows="10" cols="70"></textarea><br>
<u>Datei anhängen:</u>
<input type="hidden" name="MAX_FILE_SIZE" value="10240000">
<input type="file" name="dateiname">
<input type="submit"E-Mail senden">
</form>
<hr>
<?php
if(isset($dateiname)){
if(!is_uploaded_file($dateiname)){
echo "FEHLER";
exit;
}
$uploadname="./upload/$dateiname_name";
move_uploaded_file($dateiname, $uploadname);
printf("Die Datei <b>%s</b> befindet im Ordner <b>%s</b>!<br>\n",
$dateiname_name, $uploadname);
}
?>

<?php
$mailtext="Name ".$NAME."\n\n";
$mailtext.="E-Mail: ".$EMAIL."\n\n";
$mailtext.="Betreff: ".$Betreff."\n\n";
$mailtext.="Text: ".$Text."\n\n";
$mailtext.="Datei: ".$uploadname."\n\n";

mail("MEINE E-MAIL ADRESSE","Neue aktuelle Nachricht","$mailtext");
// mail("......","Neue aktuelle Nachricht","$text","webmail@gkss.de");
?>
<a href="http://www.gkss.de/intern/brett/index.html">Zurück</a>

</body>
</html>

danke

  1. Hi Kai,

    baue mal einen <input type = "button"> als subimt button ein und rufe daraus onClick="validate_form(this.form)" auf.

    wenn validate_form true ist, kannst du daraus per JS submit() das Formular absenden,

    JEDOCH! So schließt du Benutzer mit deaktiviertem JS aus! sie können das Formular dann nicht benutzen.
    AUßERDEM: Du verwendest offenbar PHP, warum prüfst Du die Felder dann Clientseitig mittels fehrleranfälligem JS? Mach das doch Serverseitig mit PHP!

    Gruß, der Hilker

    1. hi,

      JEDOCH! So schließt du Benutzer mit deaktiviertem JS aus! sie können das Formular dann nicht benutzen.

      Un warum schlägst du das dann überhaupt vor?

      AUßERDEM: Du verwendest offenbar PHP, warum prüfst Du die Felder dann Clientseitig mittels fehrleranfälligem JS? Mach das doch Serverseitig mit PHP!

      Das dies auf jeden Fall erfolgen muss, sollte jedem klar sein.
      Gegen eine optionale Überprüfung schon auf dem Client, um dem Nutzer vergebliches Absenden zu ersparen, gibt es aber nichts einzuwenden.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Das dies auf jeden Fall erfolgen muss, sollte jedem klar sein.
        Gegen eine optionale Überprüfung schon auf dem Client, um dem Nutzer vergebliches Absenden zu ersparen, gibt es aber nichts einzuwenden.

        heißt das das es komplett falsch ist? soll ich das nochmal mit php probieren?

        gruss kai

        1. hi,

          Das dies auf jeden Fall erfolgen muss, sollte jedem klar sein.
          Gegen eine optionale Überprüfung schon auf dem Client, um dem Nutzer vergebliches Absenden zu ersparen, gibt es aber nichts einzuwenden.

          heißt das das es komplett falsch ist?

          Wenn du - warum auch immer - nicht fähig sein solltest, einer auf halbwegs normalem Schwierigkeitslevel in deutscher Sprache geführten Konversation zu folgen, dann infomiere uns bitte darüber, welche Sprache (oder welchen Level) wir sonst wählen könnten, um mit dir erfolgreich zu kommunizieren.

          soll ich das nochmal mit php probieren?

          Damit (oder einer beliebigen anderen serverseitigen Technik) _auf jeden Fall_.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Tag!

            Wenn du - warum auch immer - nicht fähig sein solltest, einer auf halbwegs normalem Schwierigkeitslevel in deutscher Sprache geführten Konversation zu folgen, dann infomiere uns bitte darüber, welche Sprache (oder welchen Level) wir sonst wählen könnten, um mit dir erfolgreich zu kommunizieren.

            Ich meine, Du hast Dich jetzt im Ton vergriffen.
            http://forum.de.selfhtml.org/hilfe/charta.htm#verhaltensrichtlinien

            Grüße,
            Steffen.

            1. Tag!

              Wenn du - warum auch immer - nicht fähig sein solltest, einer auf halbwegs normalem Schwierigkeitslevel in deutscher Sprache geführten Konversation zu folgen, dann infomiere uns bitte darüber, welche Sprache (oder welchen Level) wir sonst wählen könnten, um mit dir erfolgreich zu kommunizieren.

              Ich meine, Du hast Dich jetzt im Ton vergriffen.

              will ich aber auch mal meinen!!! tut mir ja Leid das ich mich nicht so gut damit auskenne und das fachchinesisch nicht verstehe...

              1. hi,

                will ich aber auch mal meinen!!! tut mir ja Leid das ich mich nicht so gut damit auskenne und das fachchinesisch nicht verstehe...

                Was war an meiner Aussage "fachchinesisch"?

                Als einziges käme da u.U. das Wort Client in Frage - alles andere war in gebräuchlichem Deutsch formuliert.

                Und da deine Rückfrage den Eindruck nahelegte, dass du trotzdem nichts davon verstanden hast, erfolgte wiederum meine Rückfrage, auf welchem Niveau eine für dich verständliche Erklärung des Sachverhaltes angesiedelt werden sollte.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. hi,

        JEDOCH! So schließt du Benutzer mit deaktiviertem JS aus! sie können das Formular dann nicht benutzen.

        Un warum schlägst du das dann überhaupt vor?

        Weil es auf die Fragestellung des OP eingeht.

        AUßERDEM: Du verwendest offenbar PHP, warum prüfst Du die Felder dann Clientseitig mittels fehrleranfälligem JS? Mach das doch Serverseitig mit PHP!

        Das dies auf jeden Fall erfolgen muss, sollte jedem klar sein.
        Gegen eine optionale Überprüfung schon auf dem Client, um dem Nutzer vergebliches Absenden zu ersparen, gibt es aber nichts einzuwenden.

        Kann ich nicht ganz nachvollziehen. PHP kann durchaus bei entsprechend falsch ausgefüllten feldern, die Seite erneut mit dem flaschen Inhalt an entsprechender Stelle, sogar farblich hervorgehobenen Fehlermeldungen erzeugen und ausgeben.
        Warum sollte ich da noch ein JS benötigen?
        OK, optional - aber ein
        if ($a == 1)
           {
           if ($a == 1)
               {
               print "a ist 1"
               }
           }
        macht doch wirklich wenig sinn, oder?

        gruß,
        wahsaga

        der Hilker

        1. hi,

          Warum sollte ich da noch ein JS benötigen?

          Habe ich behauptet, dass du eins _benötigst_?

          OK, optional

          Ja - du hast es doch offenbar verstanden - also warum die Nachfrage?

          • aber ein
            if ($a == 1)
               {
               if ($a == 1)
                   {
                   print "a ist 1"
                   }
               }
            macht doch wirklich wenig sinn, oder?

          Hinkende Vergleiche "machen" keinen Sinn.

          Ich verstehe nicht, was du mir damit sagen willst - insb. in Hinblick auf meine These, dass eine serverseitige Überprüfung Pflicht ist, und eine clientseitige aus Komfortgründen optional zusätzlich erfolgen _kann_, wenn gewünscht.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. AUSSERDEM: Du verwendest offenbar PHP, warum prüfst Du die Felder dann Clientseitig mittels fehrleranfälligem JS? Mach das doch Serverseitig mit PHP!

      das war ein JS was ich im internet gefunden hatte und das hab ich da eingebaut jetzt kommen zwar die fehlermeldungen aber die e-mail wird trotzdem gesendet.. also soll ich stadt <input type="submit">   <input type="button"E-Mail senden" onClick="validate_form(this.form)"> machen?
      gruß kai

      1. hi,

        das war ein JS was ich im internet gefunden hatte und das hab ich da eingebaut

        Hast du versucht zu verstehen, was es genau macht (machen soll) und wie?

        also soll ich stadt

        Oder Ort?

        <input type="submit">   <input type="button"E-Mail senden" onClick="validate_form(this.form)"> machen?

        Versuche zuallerst das Script zu verstehen. Vorher mache damit bitte ansonsten gar nichts.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. hi,

    könnt ihr mir sagen was ich falsch gemacht habe?

    Here we go:

    <html>
    <head>

    Da ein <h2> folgt, endet dein <head> hier implizit.

    <h2><u>Eintrag Aktuelle Informationen</u></h2><hr>

    Da head beendet wurde, hat body bereits begonnen - h2 hier (jetzt) OK.

    </head>

    Wozu schließt du einen head, der längst nicht mehr offen ist?

    <body bgcolor="#F0FFFB">

    Wozu öffnest du einen body, der längst offen ist?
    Wieso nutzt du kein CSS für Formatierungen?

    <SCRIPT LANGUAGE="JavaScript">

    Error: Required attribute "type" missing.

    function validate_form() {
    ...
    onSubmit="return validate_form(this.form)">

    Wozu rufst du die Funktion mit einem Parameter auf - den du dann überhaupt nicht verwendest?

    Und zu deinem eigentlichen Problem: Sage uns bitte, welche Debugging-Maßnahmen du unternommen hast, und was dabei herauskam.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }