Frage zu einem CGI Script
Pady
- cgi
Hi
Ich habe mir neulich eine Internetseite erstellt.
Das ist so eine Seite über ein Onlinespiel. Der Sinn ist es sich eine große Gilde aufzubauen. So nun hab ich mir gedacht, dass ich sowas wie ein Bewerbungsformular erstelle. Das habe ich auch gemacht. Aber wie funktioniert das genau, mit der e-Mail?
Wenn ich reinschreibe form action mailto: Dann öffnet er ja immer das e-Mail Programm. Geht das auch irgendwie anders? Dass er das ausgefüllte Formular einfach losschickt, also auf Senden klicken und weg is es?
Kann mir da jemand helfen?
MfG Pady
Hallo,
auf lange Sicht würde ich dir empfehlen, irgendein Clan Portal zu verwenden, die gibts im Internet meist kostenfrei, und da ist alles dabei, Board, bissi CMS usw. Warum? Ich denk über kurz oder lang wollen deine "Gildenmitglieder" auch mal sich unterhalten o.ä.
gruss
Hi,
na per sendmail - google mal nach formmailer (oder hier perlscripts.de)
Gruß
Girom
Hi,
na per sendmail - google mal nach formmailer (oder hier perlscripts.de)
Gruß
Girom
gibts da auch was für Windows?
uff das wird schwer - also hast du den Server bei dir laufen (Apache)? Also ich empfehle das Script bei einem Provider zu hosten, denn dann ist es immer aufrufbar.
Funktion:
1.Dein User füllt ein Formular aus und klickt auf senden.
2.Das Formular wird an www.deinedomain.xy/cgi-bin/formmail.pl geschicht.
3.formmail.pl (oder .cgi) liest die Felder aus und schickt dann per sendmail eine eMail an dich.
Somit kommen bei dem User weder mailto zum Einsatz, wodurch er sich ein Mailprogramm spart und du musst nicht das ganze Formulargeplänkel auseinander klamüsern sondern kannst dir eine vorFormatierte Mail schicken lassen.
Gruß
Girom
Hallo,
hier ein gutes Beispiel:
http://cgi.xwolf.de/cgi/allform.shtml
Hast du einen CGI fähigen Server zur Hand?
Gruß
Girom
Ich habe noch nie was mit dem GCI gemacht.
Was brauche ich denn dafür. Geht das nicht einfach so im Windows? Sorry hab halt noch keine ahnung davon.
MfG Pady
achso bist noob nadann kein Problem, hier eine genaue Anleitung:
1. leg dir einen Webspace mit Perl/cgi zu (z.B. tripod.com = kostenlos oder domainfactory.de = kostet). Muss aber sendmail unterstützen - erkundige dich vorher (kostenpflichtige habens meistens)
2. erstell ein Formular in Html:
<form action="deinperlscript.pl" method="post">
<input type="Text" name="FeldA"> <br>
<input type="Text" name="FeldB"> <br>
<input type="Submit" value="Senden">
</form>
3.speicher dieses z.b. als index.html und lad es auf den Webspace (z.B. mit FTP oder dem Upload-Formular auf der Providerseite)
4.lad das Script in den Ordner "cgi-bin":
#!/usr/bin/perl
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<([^>]|\n)*>//g;
$value =~ s/<//g;
$value =~ s/>//g;
$FORM{$name} = $value;
}
$Sendmail_Prog = "/usr/lib/sendmail";
$mailfrom = "noreplay@deinemail.de"; #was im "von wem" feld stehen soll
$mailto = "deinemail@deinprovider.de"; #deine Mailadresse mit einem \ vorm @
$mailsubject = "neues Mitglied"; #Mailbetreff
open(MAIL,"|$Sendmail_Prog -t");
print MAIL "From: $mailfrom\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $mailsubject\n\n";
print MAIL qq~
deinTextzuFeldA : $FORM{'FeldA'}
deinTextzuFeldA : $FORM{'FeldB'}
...
~;
close(MAIL);
fertig.
Gruß
Girom
sorry fehlte nochwas:
am ende des Scripts noch anfügen:
print "Content-type: text/html\n\n";
print qq~
Daten gesendet - oder irgend eine Weiterleitung oder so
~;
exit;
das dann speichern als z.B. formmailer.pl und ins cgi-bin Verzeichnis laden.
Gruß
Girom
weißt du ob tripod dieses send Mail unterstützt?
Also wenn ich das richtig verstanden habe, dann muss ich das wie folgt machen.
1. Bei dem Webspace Anbieter anmelden.
2. DAnn das Formular erstellen.
Frage:Da wo steht deinperlscript.pl da muss ich den Dateinahmen reinschreiben, in dem ich das unter Punkt 4 geschriebene Script gespeichert habe? Wie schreibe ich das, einfach nen Editor öffnen alles reinkopieren, meine e-Mail überall eintragen und mit der endung .pl speicher??
3. Formular uploaden und das Script auch.
Stimmt das soweit?
Muss ich eigentlich dann die komplette Homepage uploaden oder nur das Formular?
Hört sich kompliziert an, aber ich hoffe du kannst mir helfen^^
MfG Pady
- Bei dem Webspace Anbieter anmelden.
jawohl
- DAnn das Formular erstellen.
Frage:Da wo steht deinperlscript.pl da muss ich den Dateinahmen reinschreiben, in dem ich das unter Punkt 4 geschriebene Script gespeichert habe? Wie schreibe ich das, einfach nen Editor öffnen alles reinkopieren, meine e-Mail überall eintragen und mit der endung .pl speicher??
Nimmst entweder Notepad (is aber nich wirklich toll) oder du suchst nach Phase5 im Netz, das ist ein guter html editor.
-änderst das deinscript... in http://www.deinproviderusw.de/cgi-bin/formmailer.pl (muss eben der Link auf das Formmailscript sein) dann speicherst du das <form...>-Zeug (is natürlich nicht die komplette Hompage, eben nur das Formular, da fehlen dann noch die <html><body>..., dürfte aber zum testen reichen) als index.html
-den Code als formmailer.pl
-index.html hochladen (mit ftp als binär - beim Webupload vom Provider is das automatisch eingestellt)
-formmailer.pl hochladen (in cgi-bin - mit ftp als ascii - und auch hier ist es beim Webupload schon eingestellt heißt du musst nichts machen)
-fertig - index.html aufrufen und sich an der Funktionsvielfallt erfreuen ;)
Gruß
Girom
Ok ich habe mich jetzt bei Tripod angemeldet.
Habe auch die pl und die andere html datei mit dem Formular geuploaded. Beide in den cgi-bin Ordner reinkopiert.
Aber irgendwie bekomme ich keine e-Mail, wenn ich das Formular ausgefüllt habe. Irgendwas hab ich da noch falsch gemacht in der pl Datei.
Die sieht so aus.
#!/usr/bin/perl
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<([^>]|\n)*>//g;
$value =~ s/<//g;
$value =~ s/>//g;
$FORM{$name} = $value;
}
$Sendmail_Prog = "/usr/lib/sendmail";
$mailfrom = "noreplay@vornname_nachname@web.de"; #was im "von wem" feld stehen soll
$mailto = "vorname_nachname@web.de"; #deine Mailadresse mit einem \ vorm @
$mailsubject = "neues Mitglied"; #Mailbetreff
open(MAIL,"|$Sendmail_Prog -t");
print MAIL "From: $mailfrom\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $mailsubject\n\n";
print MAIL qq~
deinTextzuFeldA : $FORM{'FeldA'}
deinTextzuFeldA : $FORM{'FeldB'}
...
~;
close(MAIL);
print "Content-type: text/html\n\n";
print qq~
Daten wurden erfolgreich gesendet. Ich werde dich in kürze kontaktieren.
~;
exit;
Du musst im perlscript noch deine Adresse eintragen (eMail) und ich weiß nicht, ob Tripod sendmail hat!
Aber ganz wichtig deine eMail.
Achja - kommt denn der Hinweis Daten werden gesendet?
Gruß
Girom
Ja die eMail hab ich ja schon eingetragen. Ich hab es nur aus Datenschutzgründen hier nicht reingeschrieben.
Der bringt am Ende nur das, was ich reingeschrieben habe.
Daten wurden erfolgreich gesendet. Also muss es doch normalerweise funktioniert haben, oder? Als ich das erste mal im Tripod File Manager war, habe ich alle vorhandenen Dateien und Ordner, bis auf den cgi-bin gelöscht. Ist das schlimm?
MfG Pady
ne ist nicht schlimm (ist ordentlicher :) ) - also wenn du siehst, dass die mail verschickt wurde, dann arbeitet schonmal das Script, das ist gut - nicht gut ist, dass Tripod anscheinend kein Sendmail hat.
jup hab grad gelesen, dass Tripod das nicht unterstützt.
Jetzt brauche ich ein Webspace mit einer kostenlosen CGI sendmail Funktion. Kennst du zufälligerweise einen?
Gruß Pady
da muss ich dich enttäuschen. Aber vielleicht findest du auf kostenlos.de einen musst eben schauen, dass er cgi hat und dann auf dessen Hompage schauen ob auch sendmail unterstützt wird. Schlimmstenfalls könntest du eben einen gegen Cash nehmen. Das erpart auf lange Sicht eine Menge Ärger.
Gruß
Girom
Ich hab hier mal was gefunden.
http://www.freehostag.info/hilfe.php#11
Da steht unter Punkt Wie lautet der Pfad zu Sendmail? was von sendmail.
Muss ich da dann die Dateien auch einfach hochladen und der macht den rest dann alleine oder muss ich da noch was mit den Verzeichnis usr/sbin/sendmail. machen??
MfG Pady
Mist ich seh grad, dass man da Gründe angeben muss, wieso man den Webspace nutzen will. Naja ich schau mal noch ob ich was finde. Und frage dich dann nochmal, ob das klar geht. Wenn du nichts mehr von mir hörst, hat es funktioniert.
Dann will ich mich schonmal herzlich für deine Hilfe bedanken.
Bis gleich oder auch nicht :-)
Gruß Pady
Bitte bitte, man hilf wo man kann.
Gib als Grund einfach ClanSeite oder so ähnlich an.
Gruß
Girom
Also, du musst die Zeile
$Sendmail_Prog = "/usr/lib/sendmail";
gegen diese austauschen:
$Sendmail_Prog = "usr/sbin/sendmail";
und evtl. muss noch ein / davor also dann so:
$Sendmail_Prog = "/usr/sbin/sendmail";
das musst du ausprobieren.
(die erste Zeile nach dem #! muss auf diesem Provider /usr/bin/perl sein)
Es scheint als müsstest du hier FTP benutzen.
Gruß
Girom
hm jetzt bin ich völlig durcheinander.
Ich brauch doch erstmal einen Webspace, der sendmail unterstützt, oder?
Und was muss auf dem Provider sein?
MfG Pady
ich mein doch mit Provider den Webspace :)
achso ok. Aber jetzt brauch ich erstmal einen Webspace, der sendmail unterstützt.
Und was hast du hier mit gemeint?
(die erste Zeile nach dem #! muss auf diesem Provider /usr/bin/perl sein)
MfG Pady
(die erste Zeile nach dem #! muss auf diesem Provider /usr/bin/perl sein)
die 1.Zeile im Perlscript:
#!/usr/bin/perl
ist kann sich bei verschiedenen Webspace Anbietern unterscheiden und ich war nicht sicher ob ich schon /usr/bin/perl geschrieben hatte - ist aber alles so in Ordnung :)
Gruß
Girom
Hallo Pady!
Hier gibt es ein kleines Mail Formular, das Du auch nutzen könntest. VOr allem kannst Du Dir den Quellcode ansehen und weißt dann wie man es machen könnte.
Schönen Gruß
Afra
Hallo Pady!
Hier gibt es ein kleines Mail Formular, das Du auch nutzen könntest. VOr allem kannst Du Dir den Quellcode ansehen und weißt dann wie man es machen könnte.
Schönen Gruß
Afra
Wie genau muss ich das dann machen.
Ich habe die Datei Formmailer mit Attachment: form_mail_de.zip runtergeladen und in den Quelcode des Formulars folgendes reingeschrieben: <form method="post" action="form_mail.php" enctype="multipart/form-data">
Was muss ich jetzt machen? Muss ich noch irgendwie die datei form_mail.php bearbeiten? Wenn ja wie?
Danke
Mfg Pady
Hallo Pady!
Auf der Seite steht eigentlich alles beschrieben. Der Formmailer hat eine bestimmte Anzahl von Feldern und die haben auch bestimmte Namen, das musst Du natürlich alles anpassen. Ich hatte Dir den link auch in bester SELF Manier gepostet, damit Du dabei etwas lernen kannst. Prinzipiell hast Du Das Prinzip verstanden. Der Formmailer ruft sihc aber immer selbst auf, was ich Dir auch empfehlen würde. Du musst dann einfach allen relevanten Quellcode der heruntergeladenen Datei in deine Form kopieren und die Variablen anpassen.
Schönen Gruß
Afra
Hallo Pady!
Auf der Seite steht eigentlich alles beschrieben. Der Formmailer hat eine bestimmte Anzahl von Feldern und die haben auch bestimmte Namen, das musst Du natürlich alles anpassen. Ich hatte Dir den link auch in bester SELF Manier gepostet, damit Du dabei etwas lernen kannst. Prinzipiell hast Du Das Prinzip verstanden. Der Formmailer ruft sihc aber immer selbst auf, was ich Dir auch empfehlen würde. Du musst dann einfach allen relevanten Quellcode der heruntergeladenen Datei in deine Form kopieren und die Variablen anpassen.
Schönen Gruß
Afra
OK ich werde es mal versuchen, aber hoffe bei misserfolg nochmals auf deine Hilfe zu hoffen. MfG Pady
Hallo afra
ich komm damit einfach nicht zurecht. Mal ne ganz blöde Frage, aber was genau muss ich mit der php Datei machen?
Also im Quellcode des Formulars muss ich ja nur das folgende in den form Tag reinschreiben:
<form method="post" action="formmailer.php" enctype="multipart/form-data">
<input type=hidden name="mailto" value="hier meine e-Mail Adresse">
<input type=hidden name="subject" value="Pizza-Bestellung">
Mehr nicht? Aber was muss ich jetzt mit der php Datei machen?
MfG Pady