cgi formular

eisman

eisman

Aktives Mitglied
Thread Starter
Dabei seit
22.01.2005
Beiträge
2.056
Reaktionspunkte
105
hallooooo,
was machen falsch,egal ob das formular ganz ausgefüllt ist,oder nur teilweise bzw. alles leer,jedes mal kommt die meldung nicht alle felder ausgefüllt.

contactmail

this is a quelli
Code:
<html>
<body marginheight="0" marginwidth="0"><table width="583" height="519" border="0" cellpadding="0" cellspacing="0" bgcolor="#939896">
  <tr>
    <td height="70" colspan="2">&nbsp;</td>
  </tr>
  <tr>
    <td width="210" height="448" align="left" valign="top"><table width="210" height="380" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td align="left" valign="top"><img src="contact.gif" width="209" height="380"></td>
      </tr>
    </table></td>
    <td width="373" height="448" align="left" valign="top"><table width="373" height="407" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="373" height="50" align="left" valign="top"><img src="con.gif"></td>
  </tr>
  <tr>
    <td width="373" height="343"><form action="/cgi-bin/mailmanager.pl" method="post"><input type=hidden name="recipient" value="info@foto-et-grafik.de"><input type=hidden name="required" value="betreff,name,mail"><input type=hidden name="redirect" value="http://www.foto-et-grafik.de/contact/mail.htm"><input type=hidden name="subject" value="contactmail"><input type=hidden name="print_config" value="email,betreff,name"><table width="373" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="left" valign="bottom"><span class="star">* </span>betreff : </td>
    <td>&nbsp;</td>
    <td width="296" height="10" align="left" valign="top"><input value="&nbsp;" name="betreff" size="38" maxlength="51" id="inputfield" type="text"></td>
  </tr>
  <tr>
    <td height="2" colspan="4"></td>
    </tr>
  <tr>
    <td align="left" valign="bottom"><span class="star">*</span> name : </td>
    <td>&nbsp;</td>
    <td width="296" height="10" align="left" valign="top"><input value="&nbsp;" name="name" size="38" maxlength="51" id="inputfield" type="text"></td>
  </tr>
  <tr>
    <td height="3" colspan="4"></td>
    </tr>
  <tr>
    <td align="left" valign="bottom"><span class="star">*</span> mail : </td>
    <td>&nbsp;</td>
    <td width="280" height="20" align="left" valign="top"><input value="&nbsp;" name="email" size="38" maxlength="51" id="inputfield" type="text"></td>
  </tr>
  <tr>
    <td height="17" colspan="4"></td>
    </tr>
  <tr>
    <td width="72" align="left" valign="top">message : </td>
    <td width="5">&nbsp;</td>
    <td width="280" height="150" align="left" valign="top"><textarea cols="38" rows="15" name="message" wrap="physical" id="inputfield"></textarea></td>
  </tr>
  <tr>
    <td height="4" colspan="4"></td>
    </tr>
  <tr>
    <td></td>
    <td></td>
    <td width="296" height="10"><img src="tr.gif" width="80" height="38">
      <input value="Send" id="inputfieldsm" height="18" type="submit" width="50">
      <img src="tr.gif" width="20" height="38">
      <input value="Clear" id="inputfieldsm" height="18" type="reset" width="50"></td>
  </tr>
</table></form></td>
  </tr>
</table>
</td>
  </tr>
</table>
</body>
</html>
 
Die Antwort steht hier drin /cgi-bin/mailmanager.pl
 
Bitte abstrahiert ein bißchen! HTML-Code dient meist weniger der Programmierung. Das heißt das durchaus Teile davon weggelassen werden können. Im Obigen Beispiel kann nur das FORM-Tag das Problem auslösen ( was dann auch klar mailmanager.pl als Ursache ausweist).
Niemand liest so lange Codefragmente durch. In Eurem eigenen Interesse kürzt bitte auf das von Euch eingegrenzte Problem zusammen und verwendet code und php-Tags für die lesbarkeit!


Danke


wegus
 
sehr richtig!
ich les mir diesen Wust jedenfalls nicht durch.

Insbesondere in der Perl Community gilt die Regel:
"Poste ein kurzes, aber funktionsfähiges Skript, das Dein Problem demontriert. Lass alles weg, was mit Deinem Problem nichts zu tun hat."
Oft ist es so, dass man dan Fehler selbst findet, wenn man das Problem auf diese Weise eingrenzt.

(btw: guten Morgen wegus ;))
 
jetzt weiß ich genauso viel wie vorher.rein garnichts.hätte nie gedacht,das man mit
wenig quelltxt,die ursache erkennen kann.naja,da weiß ich für das nächste mal
bescheid.
nun zu dir hammer. es ist taghell,und trotzdem finde ich nicht die antwort.
 
@eisman:
Das ist recht simpel:

(1) Wer ne Frage hat sollte sie vorher selbst durchdenken
(2) Dann die Frage so kurz und präzise stellen wie möglich, das erleichtert das Antworten und erhöht die Chance auf Hilfe!
(3) Lange unleserliche Skripte bewriken das Gegenteil!

In Deinem Skript steht zu 98% nur HTML-Code der lediglich die Seite in ihrem Aussehen beschreibt. Was hat das dann wohl mit Deinem Problem zu tun? Nichts!

Deine Beschreibung schrieb:
edes mal kommt die meldung nicht alle felder ausgefüllt.

Kommt nicht von dieser Seite! Du füllst die obige Webseite aus, drückst auf den Button und diese lädt /cgi-bin/mailmanager.pl und dieses Skript beschwert sich!
Hier fehlen Parameter oder sind falsch bezeichnet!


btw.: Guten Abend maceis :)
 
@ eisman
Die Informationen die Du geliefert hast, ermöglichen es leider nicht Dir zu helfen. Da kann man nur ins Blaue hinein raten.
Der Fehler steckt vermutlich in dem Programm "mailmanager.pl", das hier nicht vorliegt.
Weiterhin wäre es wichtig die Statusmeldungen (insbes. das error_log) des Servers zu lesen.

Man kann es auch mit einem Auszug aus den Posting Guidelines for comp.lang.perl.misc sagen.
Die wichtigsten Punkte habe ich mal fett gemacht, weil Du keinen davon eingehalten hast und damit nichts zur Lösung Deines Problems beigetragen hast. Versteh' das bitte nicht als Kritik an Deiner Person sondern als kontruktiven Vorschlag, wie Du posten sollst, damit man Dir helfen kann.

Posting Guidelines for comp.lang.perl.misc schrieb:
...
Provide enough information
If you do the things in this item, you will have an Extremely Good
chance of getting people to try and help you with your problem!
These features are a really big bonus toward your question winning
out over all of the other posts that you are competing with.

First make a short (less than 20-30 lines) and *complete* program
that illustrates the problem you are having. People should be able
to run your program by copy/pasting the code from your article.
(You
will find that doing this step very often reveals your problem
directly. Leading to an answer much more quickly and reliably than
posting to Usenet.)

Describe *precisely* the input to your program. Also provide example
input data for your program. If you need to show file input, use the
__DATA__ token (perldata.pod) to provide the file contents inside of
your Perl program.

Show the output (including the verbatim text of any messages) of
your program.

Describe how you want the output to be different from what you are
getting.

If you have no idea at all of how to code up your situation, be sure
to at least describe the 2 things that you *do* know: input and
desired output.

Do not provide too much information
Do not just post your entire program for debugging. Most especially
do not post someone *else's* entire program.

...
 
Zuletzt bearbeitet von einem Moderator:
Nachsatz:
Wenn Du Skripte von Strato verwendest, kann Dir vielleicht der Strato Support weiterhelfen ;).
 
Dein Fehler liegt darin, dass Du das Feld für die Absender Adresse "email" nennst, in "input type=hidden name="required" value="betreff,name,mail"" aber verlangst, dass das nicht existierende Feld "mail" ausgefüllt wird.

HTH

PS: Die Fehlermeldung, die Du uns vorenthalten hast, sagt das auch ziemlich präzise:
Es fehlen bzw. sind falsch ausgefüllt folgende nicht optionale Felder:
mail
 
so,nach getaner arbeit kann ich mich wieder an meine seite begeben.
hallo maceis,ich würde dich ja gerne knutschen,aber dann wollen die anderen auch
noch abgeknutscht werden.dein letzter beitrag war sehr hilfreich und es funzt jetzt.
werde mich morgen mal bei stato einklinken.denn ich möchte gerne eine andere
fehlermeldung anbringen. oder weiß du zufällig wie ich die selbserstellte htmsite
für die fehlermeldung im quelltxt unterbringen muss?
 
eisman schrieb:
...
oder weiß du zufällig wie ich die selbserstellte htmsite
für die fehlermeldung im quelltxt unterbringen muss?
Was meinst Du damit genau?
Geht es um die Seiten für die Apache Fehlermeldungen (403, 404 usw.)?
Das macht man mithilfe einer .htaccess Datei:
Code:
ErrorDocument 403 /fehlerseiten/403.html
ErrorDocument 404 /fehlerseiten/404.html

Die Fehlerseiten liegen dann in /fehlerseiten/404.html etc..

HTH
 
morgen maceis,
nein ich meine nicht die herkömmlichen errorsites403 usw
ich weiß nicht ob du die darstellung der fehlermeldung von strato kennst,wenn man zb ein feld zum ausfüllen leer lässt,aber die sieht beschisssen aus.
so und ich wollte eigentlich nur eine hinweisseite erstellen die auch optisch zur meiner sites paßt, mit dem txt das alle felder ausgefüllt werden müssen

so,ich muss aber erstmal wieder meine kamera spazieren fahren
 
Das Skript "mailmanager.pl" wertet dieses Feld aus: "<input type=hidden name="required" value="betreff,name,mail">".

Wenn Du ändern möchtest, was passiert, wenn eins der genannten Felder leer ist, könntest Du dies im Skript "mailmanager.pl" erreichen. Voraussetzung ist natürlich Du hast Zugriff auf dieses Skript.
 
Ich hab mir den Thread nicht durchgelesen, doch könntest du nicht den quellcode des Skripts hier reinposten?
Oder hast du überhaupt keinen Zugriff auf das Skript?

Auf jedenfall, wenn das Skript auf deinem Server liegt würde ich es ein wenig umschreiben, da sind viele Felder die du in das Skript integrieren könntest usw.
 
danke für die nachfrage, aber ich mach das nicht mehr mit cgi. ich hatte es mit
php4 vor. aber irgendwie sind haufen fehler drin.da ich nicht fit bin in php,
hatte ich das problem im thread für php erwähnt.aber wenn du fit bist darin,dann
könnten wir nochmals darüber reden.
 
eisman schrieb:
danke für die nachfrage, aber ich mach das nicht mehr mit cgi. ich hatte es mit
php4 vor. aber irgendwie sind haufen fehler drin.da ich nicht fit bin in php,
hatte ich das problem im thread für php erwähnt.aber wenn du fit bist darin,dann
könnten wir nochmals darüber reden.
Also ich bin auch nicht besonders gut in CGI/Perl. Hab schnell ein kleines Email - Formular geschrieben. Der Code ist nicht perfekt, z.B. könnte man den HTML Code in der CGI/Perl Synthax schreiben, doch es ist sicher einfacherer für dich den HTML Code zu ändern anstatt den Perl Code.
Auch wird der Inhalt des Textes nicht überprüft. (ist aber nicht schwer einzubauen).

Du musst nur die folgenden 2 Zeilen ändern:

my $an_name = "ihr Name";
my $an_email = "ihr_name\@ihre_domain.de";

Code:
#! /usr/bin/perl -w
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);

if(param("submit") eq "Senden") {
    &senden();
    &gesendet();
} else {
    &formular();
}

sub formular {
    my $url = url();
    print header, start_html();

    print <<END;

<form action=\"$url\" method=\"POST\">

<table border="0">
 <tr>
  <td colspan="1" rowspan="1">
 Name des Absenders: 
  </td>
  <td colspan="1" rowspan="1">
 		<input name="n_absender" size="50" maxlength="50" type="text"> <br />
  </td>
 </tr>
 <tr>
  <td colspan="1" rowspan="1">
			Email-Adresse des Absenders:  
  </td>
  <td colspan="1" rowspan="1">
 		<input name="email_absender" size="50" maxlength="70" type="text"> <br />
  </td>
 </tr>
 <tr>
  <td colspan="1" rowspan="1">
 			Betreff: 	
  </td>
  <td colspan="1" rowspan="1">
 			<input name="betreff" size="50" maxlength="70" type="text"> <br />
  </td>
 </tr>
 <tr>
  <td colspan="1" rowspan="1">
 
  </td>
  <td colspan="1" rowspan="1">
			<textarea name="email_text" rows="30" cols="60"></textarea> 
  </td>
 </tr>
</table>

<input type="submit" name="submit" value="Senden">
</form> 

 </BODY>
END

    print end_html;
}

sub senden {
    my $an_name = "ihr Name";
    my $an_email = "ihr_name\@ihre_domain.de";
    my $von_name = param('n_absender');
    my $von_email = param('email_absender');
    my $mail_betreff = param('betreff');
    my $mail_body = param('email_text');
    
    my $sendmail = "/usr/sbin/sendmail";
    
    open (MAIL, "|$sendmail -t") or die ("Fehler: $!");
    print MAIL qq|To: "$an_name" <$an_email>\n|;
    print MAIL qq|From: "$von_name" <$von_email>\n|;
    print MAIL qq|Subject: $mail_betreff\n\n|;
    print MAIL $mail_body;
    close (MAIL);
}

sub gesendet {
    print header, start_html();
    print "Ihre Email wurde gesendet. Vielen Dank.";
    print end_html();
}


Wenn du noch Fragen hast, der Thread ist ja noch nicht geschlossen. :)

schöne Grüße
 
Zurück
Oben Unten