satarielxx: Problem mit Formmailer + Checkform

hab da ein kleines problem. Hab einen Formmailer dazu ein externes JS zwecks Formularüberprüfung. Ich möchte nun das Formular auf die vollständigkeit Prüfen lassen und ERST DANACH soll das Formular abgesendet werden.

Weis jetzt irgendwie nicht weiter --> zur Zeit wird das Formular zwar überprüft aber trotzdem wird das Formular gesendet

Hilfe --> DANKE

Hier mal das Script:

<?php $strEmpfaenger = 'test@test.com; $strFrom       = '"test" <Admin>'; $strSubject    = 'Bestellung'; $strReturnhtml = 'http://www.test.at'; $strDelimiter  = ":\t";

if($_POST) {  $strMailtext = "";

while(list($strName,$value) = each($_POST))  {   if(is_array($value))   {    foreach($value as $value_array)    {     $strMailtext .= $strName.$strDelimiter.$value_array."\n";    }   }   else   {    $strMailtext .= $strName.$strDelimiter.$value."\n";   }  }

if(get_magic_quotes_gpc())  {   $strMailtext = stripslashes($strMailtext);  }

mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)   or die("Die Mail konnte nicht versendet werden.");  header("Location: $strReturnhtml");  exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Versandformular</title> <meta name="keywords" content="hier kommt der content" <meta name="description" content="Versandformular" /> <meta name="author" content="content" /> <script type="text/javascript" src="auswahl.js"></script> <script type="text/javascript" src="LinkedSelection.js"></script> <script type="text/javascript" src="checkform.js"></script> <script language="javascript"> function ergebnisZeigen( selected ) {   if( selected.length )   {     var sel = '';     var val = '';     var txt = '';     for( var i = 0; i < selected.length; i++ )     {       sel += ( i>0 ? ' &rarr; ' : '') + selected[i].id;       val += ( i>0 ? ' &rarr; ' : '') + selected[i].value;       txt += ( i>0 ? ' &rarr; ' : '') + selected[i].text;     }   } };

window.onload = function() {   var vk = new LinkedSelection( [ 'handymarke', 'type' ], ergebnisZeigen, typenAuswahl ); } </script> <link rel="stylesheet" href="formcss.css" type="text/css" /> <style type="text/css"> <!-- .Stil1 {color: #FF0000} --> </style> </head> <body> <form action="<?php print $_SERVER['PHP_SELF']; ?>"  name="versandform" method="post"> <table width="90%" height="44" border="0" class="menumitte2"> <tr> <td width="30%" height="40" class="top_date">     <div align="center"><span>         <?php $datum = date("d.m.Y"); echo $datum ?>         </span></div></td>     <td width="30%" class="top_unlockme"><div align="center">test</div></td>   <td width="30%" class="top_form"><div align="center">Bestellformular</div>       </span></td> </tr> </table>

<table width="90%" height="194" border="0" class="menumitte2"> <tr>   <td height="28" colspan="3" class="kundendaten"><div align="center"><span class="kundendaten_title">Kundendaten:</span></div></td>     </tr> <tr>   <td width="16%" style="position:relative; left:50px;">&nbsp;</td>   <td width="43%" style="position:relative; left:50px;">Vorname:</td>   <td width="41%" style="position:relative; left:50px;">       <input type="text" name="vorname" size="30" maxlength="30"/></td>     </tr> <tr>   <td style="position:relative; left:50px;">&nbsp;</td>   <td style="position:relative; left:50px;">Nachname: <span class="Stil1"></span> </td>   <td style="position:relative; left:50px;">    <input type="text" name="nachname" size="30" maxlength="30" /></td>     </tr> <tr>   <td style="position:relative; left:50px;">&nbsp;</td>   <td style="position:relative; left:50px;">Stasse: <span class="Stil1"></span> </td>   <td style="position:relative; left:50px;">    <input type="text" id="strasse" size="30" maxlength="30" /></td>     </tr> <tr>   <td style="position:relative; left:50px;">&nbsp;</td>   <td style="position:relative; left:50px;">Plz: <span class="Stil1"></span> </td>   <td style="position:relative; left:50px;">    <input type="text" name="plz" size="5" maxlength="5" /></td>     </tr> <tr>   <td style="position:relative; left:50px;">&nbsp;</td>   <td style="position:relative; left:50px;">Ort: <span class="Stil1"></span> </td>   <td style="position:relative; left:50px;">    <input type="text" id="ort" size="30" maxlength="30" /></td>     </tr> <tr>   <td style="position:relative; left:50px;">&nbsp;</td>   <td style="position:relative; left:50px;">Land: <span class="Stil1"></span></td>   <td style="position:relative; left:50px;">    <select name="land" size="1" />     <option value="noselect">...bitte auswählen</option> <option value="oesterreich">Österreich</option> <option value="deutschland">Deutschland</option></td>     </tr> <tr>   <td style="position:relative; left:50px;">&nbsp;</td>   <td style="position:relative; left:50px;">E-Mailadresse:</td>   <td style="position:relative; left:50px;">    <input type="text" id="mail" size="30" maxlength="30" /></td>     </tr> <tr>   <td style="position:relative; left:50px;">&nbsp;</td> <td style="position:relative; left:50px;">Telefonnummer:</td> <td style="position:relative; left:50px;"> <input type="text" id="telefonnummer" size="30" maxlength="30" /></td> </tr> </table> <p>&nbsp;</p> <table width="90%" border="0" class="menumitte">   <tr>     <td height="28" colspan="4" class="handytype"><div align="center"><span class="handytype_title">Handymodell/Type und IMEI</span></div></td>   </tr>   <tr>     <td style="position:relative; left:50px;">Handytype: <span class="Stil1"></span></td>     <td style="position:relative; left:50px;"><select name="handymarke">   <option value="--">Bitte wählen:</option>   <option value="Nokia">Nokia</option>   <option value="Sony Ericsson">Sony Ericsson</option>   <option value="Samsung">Samsung</option>   <option value="LG">LG</option>   <option value="Motorola">Motorola</option>   <option value="Siemens/BenQ">Siemens/BenQ</option>   <option value="motorola">Motorola</option>   <option value="motorola">Motorola</option>   <option value="motorola">Motorola</option>   </select></td>     <td width="15%" rowspan="2">IMEI-Nummer: <span class="Stil1"></span></td>     <td width="25%" rowspan="2"><input type="text" name="imei" size="30" maxlength="15" /></td>   </tr>   <tr>     <td width="22%" style="position:relative; left:50px;">Handymodell: <span class="Stil1"></span></td>     <td width="38%" style="position:relative; left:50px;"><select id="type" name="Modell">     <option value="--">----------</option>   </select></td>   </tr> </table> <p>&nbsp;</p> <table width="90%" height="88" border="0" class="menumitte"> <tr>   <td height="28" colspan="3" class="handytype"><div align="center"><span class="zahlungsinfo_title">Zahlungsinformationen</span></div></td>     </tr> <tr>   <td width="22%" style="position:relative; left:50px">    <div align="center"></div></td>   <td width="9%" style="position:relative; left:50px"><input type="checkbox" name="nn" unchecked="unchecked" /></td>   <td><p><span class="bezahlung">VORAUSZAHLUNG</span> || Code wird erst nach erfolgter Zahlung berrechnet </p></td>     </tr> <tr>   <td style="position:relative; left:50px">        <div align="center"></div></td>   <td style="position:relative; left:50px"><input type="checkbox" name="bar" unchecked="unchecked" /></td> <td width="69%"><span class="bezahlung">PAYPAL</span> || wird sofort nach Zahlungseingang berechnet </td> </tr> </table> <p>&nbsp;</p> <table width="90%" border="0" class="menu_bottom">   <tr>     <td width="90%"><div align="center"><span class="agbs"> Hiermit best&auml;tige ich die AGBs von xxxx gelesen zu haben, weiters Verzichte ich bei dieser Dienstleistung auf das R&uuml;ckgaberecht</span>         <input type="checkbox" name="agbs" unchecked="agbs" />       <br />     </div></td>   </tr> </table> <table width="90%" class="menu_bottom"> <tr> <td>   <div align="center">     <input name="Senden" type="submit" value="ABSENDEN" onclick="javascript:pruefung()"  />     </div> </td></tr></table> </form> </body> </html>

und hier ist das JS:

function pruefung() {

if (document.versandform.nachname.value == "") { window.alert ("Bitte füllen Sie das Feld NACHNAMEN aus"); return; }

if (isNaN(document.versandform.plz.value)==true) { window.alert ("Bitte füllen Sie das Feld POSTLEITZAHL aus"); return; }

if (document.versandform.ort.value == "") { window.alert ("Bitte füllen Sie das Feld ORT aus"); return; }

if (document.versandform.strasse.value == "") { window.alert ("Bitte füllen Sie das Fled STRASSE aus"); return; }

if (document.versandform.land.selectedIndex == false) { window.alert ("Bitte wählen Sie Ihr LAND aus"); return; }

if (isNaN(document.versandform.imei.value)==true || document.versandform.imei.value == "") { window.alert ("Bitte geben Sie die IMEI (Seriennummer) Ihres Handys ein"); return; }

if (document.versandform.nn.checked == false && document.versandform.bar.checked == false) { window.alert ("Bitte wählen Sie eine VERSANDART"); return; }

if (document.versandform.agbs.checked == false) { window.alert ("Bitte akzeptieren sie die AGB's") return; } }

  1. Ich wollte Dir ja helfen aber mit meinen PHP-Kenntnissen kann ich hier nicht viel ausrichten.

    1. Hoi!

      Ich wollte Dir ja helfen aber mit meinen PHP-Kenntnissen kann ich hier nicht viel ausrichten.

      Komisch. Genau 2 Minuten vor Deinem Post hab ich mich entschlossen nicht zu antworten weil mir dieses chaotische Gemsich aus (gruseligem) HTML, JS und php einfach zu nervig war. Zumal es sich wohl kaum um ein php problem handelt sondern um JS.

      Aber wenn ich grad eh schreibe und cool tue: *auf das return zeig* Was gibt man den zurueck, wenn das Submit nach einer Funmktion nicht ausgefuehrt werden soll? SELFHTML hilft.

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Pratchett
      1. Hoi!

        »» Ich wollte Dir ja helfen aber mit meinen PHP-Kenntnissen kann ich hier nicht viel ausrichten.

        Komisch. Genau 2 Minuten vor Deinem Post hab ich mich entschlossen nicht zu antworten weil mir dieses chaotische Gemsich aus (gruseligem) HTML, JS und php einfach zu nervig war. Zumal es sich wohl kaum um ein php problem handelt sondern um JS.

        Aber wenn ich grad eh schreibe und cool tue: *auf das return zeig* Was gibt man den zurueck, wenn das Submit nach einer Funmktion nicht ausgefuehrt werden soll? SELFHTML hilft.

        Genau das regt mich hier auf: kaum fragt man heisst es gleich: "caotische Gemsich aus (gruseligem) HTML, JS und php einfach zu nervig...."

        danke hat sich erledigt....................

        1. Hallo,

          Genau das regt mich hier auf: kaum fragt man heisst es gleich: "caotische Gemsich aus (gruseligem) HTML, JS und php einfach zu nervig...."

          Aha.  Du lieferst hier einen Haufen extrem unuebersichtlichen Code ab und regst Dich auf, dass ich die Dreistigkeit habe das zu erwaehnen? Ich dachte Du wolltest Hilfe? Warum sollte es mir gefallen, so einen Wust vorgestzt zu bekommen? Ich habe mehrere Minuten gebraucht um dein Formtag zu finden weil es sich irgendwo zwischen Javascript und einem php-block befand.

          Es ist nicht zuviel verlangt, wenn jemand sein Problem auf den relevanten Code reduziert, statt potentielle Helfer damit abzuschrecken sich durch einen Wust an verschiedenen Sprachen und Tabellentags wuehlen zu muessen. Ich weiss bis jetzt nicht, warum dein Submit ueberhaupt das JS ausfuehrt. Nur weil Du geschrieben hast, dass deine Ueberpruefung funktioniert bin ich ueberhaupt auf Dir Idee gekommen, dass vielleicht nur der returnwert nicht stimmt.

          Hast Du eigentlich selbst Debugging betrieben? Hast Du einmal das Konzept im Kleinen probiert? Ich denke nicht.

          --
          "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                - T. Pratchett
  2. Mahlzeit satarielxx,

    hab da ein kleines problem. Hab einen Formmailer dazu ein externes JS zwecks Formularüberprüfung.

    Das ist in höchstem Maße gefährlich. Benutzereingaben prüft man IMMER und AUF JEDEN FALL auf dem Server - und dabei berücksichtigt man die Prämisse "All input is evil!". Prüfungen in (vom Client manipulierbaren bzw. abschaltbaren) Javascript sind allerhöchstens die Kür und sollten nur der Bequemlichkeit der Benutzer dienen.

    Ich möchte nun das Formular auf die vollständigkeit Prüfen lassen und ERST DANACH soll das Formular abgesendet werden.

    Dann tu das doch auch erst DANACH ...

    Weis jetzt irgendwie nicht weiter --> zur Zeit wird das Formular zwar überprüft aber trotzdem wird das Formular gesendet

    Natürlich.

    Hier mal das Script:

    <?php

    Bei clientseitigen Problemen ist es nicht sinnvoll, in keinster Weise hilfreich und für Deine Leser eher lästig, serverseitigen Code zu posten.

    <form action="<?php print $_SERVER['PHP_SELF']; ?>"  name="versandform" method="post">

    Hier solltest Du sinnvollerweise einen entsprechenden http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onsubmit@title=Eventhandler notieren. Formulare können nicht nur durch Mausklicks auf Knöpfe abgeschickt werden - berücksichtige das! Versuche weiterhin, die Erläuterung zu verstehen ... schließlich willst Du doch je nach Prüfungsergebnis das Formular abschicken oder nicht, oder?

    <input name="Senden" type="submit" value="ABSENDEN" onclick="javascript:pruefung()"  />

    Die Angabe von "javascript:" ist überflüssig - der Attributwert von Eventhandlern wird von aktuellen Browsern in jedem Fall als Javascript-Code ausgewertet.

    if (isNaN(document.versandform.plz.value)==true)

    Was ist mit Versand in Länder, in denen die Postleitzahl nicht nur numerisch ist (z.B. Großbritannien)?

    window.alert ("Bitte akzeptieren sie die AGB's")

    Bitte ver'schone un's mit überflü'ssigen Apo'strophen ...

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hi!

      Was ist mit Versand in Länder, in denen die Postleitzahl nicht nur numerisch ist (z.B. Großbritannien)?

      Gera: 07551

      Das ist keine Zahl. 7551 gibt es nicht. Wir haben in D nur fuenfstellige Postleitzahlen.

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Pratchett
  3. Mahlzeit satarielxx,

    hab da ein kleines problem. Hab einen Formmailer dazu ein externes JS zwecks Formularüberprüfung.

    Das ist in höchstem Maße gefährlich. Benutzereingaben prüft man IMMER und AUF JEDEN FALL auf dem Server - und dabei berücksichtigt man die Prämisse "All input is evil!". Prüfungen in (vom Client manipulierbaren bzw. abschaltbaren) Javascript sind allerhöchstens die Kür und sollten nur der Bequemlichkeit der Benutzer dienen.

    Ich möchte nun das Formular auf die vollständigkeit Prüfen lassen und ERST DANACH soll das Formular abgesendet werden.

    Dann tu das doch auch erst DANACH ...

    Weis jetzt irgendwie nicht weiter --> zur Zeit wird das Formular zwar überprüft aber trotzdem wird das Formular gesendet

    Natürlich.

    Hier mal das Script:

    <?php

    Bei clientseitigen Problemen ist es nicht sinnvoll, in keinster Weise hilfreich und für Deine Leser eher lästig, serverseitigen Code zu posten.

    <form action="<?php print $_SERVER['PHP_SELF']; ?>"  name="versandform" method="post">

    Hier solltest Du sinnvollerweise einen entsprechenden http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onsubmit@title=Eventhandler notieren. Formulare können nicht nur durch Mausklicks auf Knöpfe abgeschickt werden - berücksichtige das! Versuche weiterhin, die Erläuterung zu verstehen ... schließlich willst Du doch je nach Prüfungsergebnis das Formular abschicken oder nicht, oder?

    <input name="Senden" type="submit" value="ABSENDEN" onclick="javascript:pruefung()"  />

    Die Angabe von "javascript:" ist überflüssig - der Attributwert von Eventhandlern wird von aktuellen Browsern in jedem Fall als Javascript-Code ausgewertet.

    if (isNaN(document.versandform.plz.value)==true)

    Was ist mit Versand in Länder, in denen die Postleitzahl nicht nur numerisch ist (z.B. Großbritannien)?

    window.alert ("Bitte akzeptieren sie die AGB's")

    Bitte ver'schone un's mit überflü'ssigen Apo'strophen ...

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hi!

      Was ist mit Versand in Länder, in denen die Postleitzahl nicht nur numerisch ist (z.B. Großbritannien)?

      Gera: 07551

      Das ist keine Zahl. 7551 gibt ... Deja Vu!

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Pratchett
      1. Mahlzeit Steel,

        Deja Vu!

        Oh ... ja, da meldete mir mein Browser vorhin beim Absenden einen Fehler "konnte Beitrag nicht finden". Ich habe meinen Beitrag dann nochmal erneut abgeschickt - und dann wurde er wohl noch ein zweites Mal gespeichert.

        Zu Hülfe, Forennotdienst! Zu Hülfe!

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. 你好 EKKi,

          Oh ... ja, da meldete mir mein Browser vorhin beim Absenden einen Fehler "konnte Beitrag nicht finden".

          Das kann schonmal passieren. Die Forendaten werden in einem Shared-Memory-Segment gehalten. Jedesmal, wenn ein neues Posting eingetragen wird, werden die Daten in einem zweiten Segment neu erstellt, danach wird eine Semaphore umgesetzt, damit der Forums-Viewer bescheid weiß, dass er das andere Segment benutzen soll.

          Wenn also jetzt zu schnell das Posting, dass gerade erst bearbeitet wird, anfragt, kann es sein, dass noch auf das alte Segment zugegriffen wird, und da existiert das Posting noch nicht.

          再见,
           克里斯蒂安

          --
          http://wwwtech.de/
          IRC-Clients und Irssi-Scripting | Flyspray
          Der Geist ist alles. Du wirst, was du denkst.