selfhtml.de - Alles für den Webmaster!

 

Empfehlung:

wix.com

Kostenlose Homepage

Besuchen Sie auch:

Jobs:

CGI + Java kombinieren?

Autor: fuxl
Datum: 10.06.2009 20:33:21

Hallo Leute,
ich kenne mich weder mit CGI noch mit Java besonders aus.
Vielleicht kann mir hier jemand helfen.
Ich habe ein CGI Script das mir ein Mail sendet, das von einer html Seite abgeschickt wird. Funktioniert eigentlich.
Nur hätte ich gerne, dass ein paar Eingabefelder überfrüft werden, ob etwas eingetragen ist. Mit einem Java Script funktioniert es. Ich schaffe es aber nicht, das Java Script in Kombination zum CGI ausführen zu lassen. Immer wenn ich das leere Formular absende, wird nichts überprüft, es kommt also keine Meldung, daß man etwas eingeben muß, sondern sofort die Dankseite.
Jetzt die Frage: sollte es trotzdem funktionieren oder muß man dazu das CGI Script alleine so schreiben daß es klappt?
Mein CGI Script:----------

$Sendmail_Prog = "/usr/lib/sendmail";
$mailto = '[email protected]et';
use CGI;
$query = new CGI;
@names = $query->param;
$delimiter = $query->param('delimiter');
$returnhtml = $query->param('return');
$subject = $query->param('subject');

$subject =~ s/s/ /g;


$mailtext = "";
foreach(@names) {
  $name = $_;
  @values = "";
  @values = $query->param($name);
  if($name ne "return" && $name ne "subject" && $name ne "delimiter") {
    foreach $value (@values) {
      $mailtext = $mailtext.$name;
      $mailtext = $mailtext.$delimiter;
      $mailtext = $mailtext.$value."n";
    }
  }
}

open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werdenn";
print MAIL "To: $mailton";
print MAIL "Subject: $subjectnn";
print MAIL "$mailtextn";
close(MAIL);

print "Location: $returnhtmlnn";
------------------------------------------------

Meine Seite:

<form name"formular" action="http://www.domain.net/cgi-bin/sendmail.cgi" method="post" onSubmit="return chkFormular()">
<input type="hidden" name="return" value="http://www.domain.net/kontakt_danke.html">
<input type="hidden" name="delimiter" value=": ">
<input type="hidden" name="subject" value="Anfrage-Info">
  <table width="200" border="0" cellspacing="0" cellpadding="0" align="center">
       <tr>
      <td width="3%">&nbsp; </td>

      <td><b><font size="2" face="Arial, Helvetica">Vorname:&nbsp;</font></b><br><input type="text" size=26 name="vorname"></td>
    </tr> ............................usw.
<tr>
      <td width="3%">&nbsp; </td>
   <th colspan="2">
        <input type="submit" name="Button" value="Senden">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="reset" name="Button2" value="Zurück">&nbsp;&nbsp;&nbsp;</th></tr></table></form>
------------------------------------------------

und zuletzt das Java Script:

<script type="text/javascript">
function chkFormular () {
   if(document.Formular.vorname.value == "")  {
     alert("Bitte Ihren Vornamen eingeben!");
     document.Formular.vorname.focus();
     return false;
    }
   if(document.Formular.nachname.value == "")  {
     alert("Bitte Ihren Namen eingeben!");
     document.Formular.nachname.focus();
     return false;
    }
    if(document.Formular.strasse.value == "")  {
     alert("Bitte Ihre Strasse eingeben!");
     document.Formular.strasse.focus();
     return false;
    }
    if(document.Formular.hausnummer.value == "")  {
     alert("Bitte Ihre Hausnummer eingeben!");
     document.Formular.hausnummer.focus();
     return false;
    }
    if(document.Formular.plz.value == "")  {
     alert("Bitte Ihre Postleitzahl eingeben!");
     document.Formular.plz.focus();
     return false;
    }
   if(document.Formular.Mail.value == "")  {
     alert("Bitte Ihre E-Mail-Adresse eingeben!");
     document.Formular.Mail.focus();
     return false;
    }
     if(document.Formular.Mail.value.indexOf('@') == -1)  {
     alert("Keine E-Mail-Adresse!");
     document.Formular.Mail.focus();
     return false;
    }
  }

</script>
-----------------------------------------------
Ich wäre Euch sehr dankbar wenn mir jemand helfen könnte.
LG Fuxl



Re: CGI + Java kombinieren?

Autor: reporter
Datum: 10.06.2009 23:47:42

Hallo,

1. Java != Javascript ! Java ist eine Objektorientierte Hochsprache, genauso wie C++, C#
2. CGI wird auf dem Server ausgeführt, während Javascript vom Clientbrowser ausgeführt wird.
3. Der Firefox hat als Werkzeug eine Fehlerkonsole. Da ohne eine Prüfung der Submit ausgeführt wird, deutet alles auf ein Javascriptfehler hin. Poste uns den Fehler...



Re: CGI + Java kombinieren?

Autor: fuxl
Datum: 12.06.2009 13:27:57

Hallo,
bin inzwischen auf etwas draufgekommen.
Wenn ich das Formular so schreibe:
-------------------------------------
<form name="Formular" action="http://www.adresse/cgi-bin/sendmail.cgi"
  method="post" onsubmit="return chkFormular()">
  <input type="hidden" name="return" value="http://www.adresse/kontakt_danke.html">
  <input type="hidden" name="delimiter" value=": ">
  <input type="hidden" name="subject" value="Anfrage-Info">
<pre>

<b>&nbsp;&nbsp;Betreff:</b><br><input type="text" size="34" name="Betreff">
<b>* Name - Vorname:</b><br><input type="text" size="34" name="User">
<b>* PLZ - Wohnort:</b><br><input type="text" size="34" name="Ort">
<b>&nbsp;&nbsp;Strasse - Nr:</b><br><input type="text" size="34" name="Strasse">
<b>* E-Mail:</b><br><input type="text" size="34" name="Mail">
<b>&nbsp;&nbsp;Text:</b><br><TEXTAREA NAME="DESCRIPTION" ROWS=5 COLS=26 wrap=virtual></TEXTAREA><br>
<center><input type="submit" value="Absenden">&nbsp;&nbsp;&nbsp;<input type="reset" value="Abbrechen">&nbsp;&nbsp;</center>
</pre>
</form>
---------------------------------------------------
..funktioniert alles einwandfrei.
Hatte und wollte aber das Formular mittels <table> erstellen. Bei dieser Variante wird die Abfrage ignoriert.
Warum weiß ich nicht?
Die <table> Verion sieht so aus:
----------------------------------------------
<form name"formular" action="http://adresse.net/cgi-bin/formmail.cgi" method="post" onSubmit="return chkFormular()">
<input type="hidden" name="return" value="http://www.adresse.net/kontakt_danke.html">

<input type="hidden" name="delimiter" value=": ">
<input type="hidden" name="subject" value="Anfrage-Info">
  <table width="200" border="0" cellspacing="0" cellpadding="0" align="center"><tr>
<td width="3%">&nbsp; </td>

<td><b><font size="2" face="Arial, Helvetica">Vorname:&nbsp;</font></b><br><input type="text" size=26 name="vorname"></td>
    </tr>
    <tr>

      <td width="3%">&nbsp; </td>

      <td><b><font size="2" face="Arial, Helvetica">Name:</font></b><br><input type="text" size=26 name="nachname"></td>
    </tr>
       <tr>
      <td width="3%">&nbsp; </td>

      <td><b><font size="2" face="Arial, Helvetica">Stra&szlig;e:</font></b><br><input type="text" size=26 name="strasse"></td>

    </tr>
    <tr>
      <td width="3%">&nbsp; </td>

      <td><b><font size="2" face="Arial, Helvetica">Haus Nr.:</font></b><br><input type="text" size=26 name="hausnummer"></td>
    </tr>
    <tr>
      <td width="3%">&nbsp; </td>

      <td><b><font size="2" face="Arial, Helvetica">PLZ: Wohnort</font></b><br><input type="text" size=26 name="plz_Ort"></td>
    </tr>
     <tr>
      <td width="3%">&nbsp; </td>

      <td><b><font size="2" face="Arial, Helvetica">Email:</font></b><br><input type="text" size=26 name="Mail"></td>
    </tr>

        <tr>
      <td width="3%">&nbsp; </td>

      <td><b>Text:</b><br><TEXTAREA NAME="DESCRIPTION" ROWS=4 COLS=20 wrap=virtual></TEXTAREA>  </td>
    </tr>
    <tr>
      <td width="3%">&nbsp; </td>
   <th colspan="2">

        <input type="submit" name="Button" value="Senden">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="reset" name="Button2" value="Zur&uuml;ck">&nbsp;&nbsp;&nbsp;
</th>
    </tr>
  </table>
</form>
--------------------------------------------------------
Woran liegt der Fehler, daß es mit einer Formatierung durch <table> nicht richtig funktioniert, die Abfrage ignoriert und sofort absendet?
Wenn du dazu eine Lösung oder Erklärung für einen Anfänger hättest, wäre ich Dir sehr dankbar.
LG Fuxl



Re: CGI + Java kombinieren?

Autor: xabbuh
Datum: 12.06.2009 16:01:07

Wie sieht denn die Funktion chkFormular() aus?



Re: CGI + Java kombinieren?

Autor: fuxl
Datum: 12.06.2009 19:41:54

> Wie sieht denn die Funktion chkFormular() aus?

Habe ich im ersten Beitrag gepostet



Re: CGI + Java kombinieren?

Autor: xabbuh
Datum: 13.06.2009 10:25:36

In deinem ersten Beispiel hat das Formular den Namen Formular, im zweiten den Namen formular.



Re: CGI + Java kombinieren?

Autor: fuxl
Datum: 13.06.2009 14:15:14

> In deinem ersten Beispiel hat das Formular den
> Namen Formular, im zweiten den Namen formular.

Sorry für den Schreibfehler, weiß nicht wie der rein kam, aber in meinen beiden Beispielen ist die Schreibweise gleich.
"Formular"

Aber danke daß Du mich aufmerksam gemacht hast. Jetzt habe ich den Fehler gefunden.

Habe zwischen Script und Formular verschiedene Namen verwendet. Sehr doof, ich weiß!
.......................................
<script type="text/javascript">
function chkFormular () {
  if (document.Formular.***User***.value == "") {
    alert("Bitte Ihren Namen eingeben!");
    document.Formular.***User***.focus();
    return false;
...............................................
....<table width="200" border="0" cellspacing="0" cellpadding="0" align="center">
       <tr>
      <td width="3%">&nbsp; </td>

      <td><b><font size="2" face="Arial, Helvetica">Vorname:&nbsp;</font></b><br><input type="text" size=26 name="***vorname***"></td>
    </tr>
    <tr>
.................................................

..und das ein paar mal! Jetzt ist mir klar warum der Befehl
chkFormular()" im Sand verlief.

Danke nochmal xabbuh und LG