Probleme mit dem CGI-Script
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absenden
adresse
array
code
copyright
date
datum
email
fehler
fehlermeldung
file
formular
header
http
index
internet
kopie
message
test
weben
-
Hallo, ich habe ein Formular definiert in HTML und die Ergebnisse sollen mit dem CGI-sript verarbeitet werden, welches ich hochgeladen habe.
So sieht das in HTML aus:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <title>Buttons zum Absenden oder Abbrechen definieren (herkömmlich) - input, type, submit, reset</title> </head> <body> <h1>Das hier können Sie absenden!</h1> <p>Voraussetzung ist eine Verbindung ins Internet. Es werden keine Daten gespeichert, das verarbeitende CGI-Script gibt lediglich die eingelesenen Daten aus.</p> <form action="http://n0x3l.lima-city.de/index.php" method="get"> <table border="0" cellpadding="5" cellspacing="0" bgcolor="#E0E0E0"> <tr> <td align="right">Vorname:</td> <td><input name="Vorname" type="text" size="30" maxlength="30"></td> </tr> <tr> <td align="right">Zuname:</td> <td><input name="Zuname" type="text" size="30" maxlength="40"></td> </tr> <tr> <td align="right" valign="top">Kommentar:</td> <td><textarea name="Text" rows="10" cols="50"></textarea></td> </tr> <tr> <td align="right">Formular:</td> <td> <input type="submit" value=" Absenden "> <input type="reset" value=" Abbrechen"> </td> </tr> </table> </form> <p><a href="../formularbuttons.htm#herkoemmlich">zurück</a></p> </body> </html>
Den Sript habe ich irgendwo von Planetmail. Allerdings wenn man in HTML auf den Button absenden drückt, dann kommt diese Meldung.
Parse error: syntax error, unexpected '@' in /home/webpages/lima-city/n0x3l/html/index.php on line 44
Was ich darunter verstehe, ist das ich in der 44. Zeile ein @ vergessen habe, allerdings finde ich gar keinen Fehler.
Vielleicht könnt ihr mir ja dabei helfen.
Hier der Sript:<?php ########################################################### # # (c) PlaNet Concept e.K., Lars Odermath, 2002 # ########################################################### # # :: planetMail :: Version vom 27.11.2002 # # COPYRIGHT NOTICE # Copyright 2002 PlaNet Concept e.K. # All Rights Reserved. # EMail: kontakt@planetc.de # URL : http://www.planetc.de # # :: planetMail :: darf von jedem kostenlos benutzt und geändert werden, # solange dieser Copyright-Verweis und die restlichen Kommentare erhalten bleiben. # # Mit dem Einsatz dieses Skripts akzeptieren Sie, daß PlaNet Concept e.K., # Lars Odermath, von jeglicher Haftung und Gewährleistung hinsichtlich des # Einsatzes befreit ist. # # Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige # Absprache ausdrücklich untersagt! (Mit anderen Worten: Bitte fragen Sie uns, # bevor Sie versuchen, mit unserem Script Geld zu verdienen.) # # Um dieses Skript über das Internet oder ein anderes Medium # weiterzuverbreiten, benötigen Sie vorher unsere Erlaubnis. In jeden Fall # müssen der Copyright-Verweis und die restlichen Kommentare erhalten # bleiben. # ########################################################### # CONFIGURATION ########################################################### ########################################################### // Zu Testzwecken // 1 => Der Inhalt der eMail wird in eine Textdatei geschrieben (wenn Sie offline testen) // 0 => Die eMail wird verschickt $offline = 0; // Geben Sie hier ein gültige eMail-Adresse von sich an // (Dies ist bei manchen Providern voraussetzung, um Spamming zu verhindern) $email_from = test@web.de; // eMail-Adresse des Versenders als Absenderadresse nutzen (um direkt anworten zu können) // 1 => Ja // 0 => Nein $senders_email = 1; // Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine // eMail-Adresse einträgt (Voreinstellung ist: eMail || BEACHTEN SIE GROSS- KLEINSCHREIBUNG!!!!). // Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option auf 1 setzen! $name_of_email = test@web.de; // DEFAULT-EINSTELLUNGEN // Diese gelten dann, wenn Sie in dem Formular keine entsprechenden hidden-fields // verwenden (name=mailto | name=subject | name=redirect). // Hidden-fields haben Vorrang vor den Default-Einstellungen!!! // Soll KEINE Kopie der eMail an eine zweite Adresse geschickt werden, so löschen Sie die Dummy-eMail-Adresse // kopie@ihre_domain.de, so daß nur noch die beiden Hochstriche stehen bleiben (). // Ansonsten geben Sie dort bitte eine gültige eMail-Adresse ein. // Genauere Informationen finden Sie in der README.txt $send_dat = array (dat1 => array(xyz@ihre_domain.de, kopie@ihre_domain.de, Kontakt über Internet,/planetmail/danke.htm), #dat2 => array(, , , ), #dat3 => array(, , , ), ); // Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen. // TIPP: Verwenden Sie grafische Buttons als Absendeknopf, so werden die Koordinaten // der Klickstelle mit der eMail verschickt. Um diesen (unschönen) Effekt zu umgehen, // geben sie für den grafischen Button name=senden ein. $ignore_fields = array('send_index','Submit','senden_y'); ########################################################### # Ende der Configuration (AB HIER SOLLTE NICHTS MEHR GEÄNDERT WERDEN!!!!!!!!!!!) ########################################################### $send_index = $HTTP_POST_VARS['send_index']; // Prüfung, welches array zu senden verwendet werden soll if ($send_index!=) { $st=$send_index; } else { $st=dat1; } $mailto = $send_dat[$st][0]; $mail_cc = $send_dat[$st][1]; $subject = $send_dat[$st][2]; $redirect = $send_dat[$st][3]; // Weiterleitung auf eine neues Seite nach Absenden Header(Location: .$redirect); // Datum (+deutsche Tage) $name_tag[0] = Sonntag; $name_tag[1] = Montag; $name_tag[2] = Dienstag; $name_tag[3] = Mittwoch; $name_tag[4] = Donnerstag; $name_tag[5] = Freitag; $name_tag[6] = Samstag; $num_tag = date( w); $day =$name_tag[$num_tag]; $year = date( Y); $n = date( d); $month = date( m); $time = (date(H:i)); // Datum einfügen $mts = :: Gesendet am $day, den $n.$month.$year - $time Uhr ::<br><br>; // Formularfelder auslesen und in die eMail einsetzen // Zu ignorierende Felder werden NICHT eingesetzt while (list($nam,$val) = each($HTTP_POST_VARS)) { if (in_array($nam, $ignore_fields)) continue; $mts .= :: $nam ::<br>$val<br><br>; } $mts = str_replace(<br>, \n, $mts); $mts = strip_tags($mts); $mts = stripslashes($mts); // Absender-eMail-Adresse if ($senders_email==1) { $email_from = $HTTP_POST_VARS[$name_of_email]; } $header=From: $email_from; // Kopie schicken if (!empty($mail_cc)) { $header .= \n; $header .= Cc: $mail_cc; } // email zum testen in ein Textfile schreiben... if ($offline==1) { $testmail=fopen(email.txt,w+); fwrite($testmail,$mts); fclose($testmail); } if ($offline==0) { // ...eMail verschicken mail ($mailto,$subject,$mts,$header); } else { // Fehlermeldung, wenn die eMail nicht geschickt werden konnte echo Es ist ein Fehler aufgetreten!\n; echo Bitte versuchen Sie es erneut...; } ?>
PS: Als Absender und Empfänger E-Mail habe ich test@web.de eingegeben.
Ich hoffe es kann mir einer weiterhelfen.
Beitrag zuletzt geändert: 26.7.2009 21:45:43 von n0x3l -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Im Gegenteil es ist ein @ zu viel da.
Es erwartet dort kein @, weil es nicht weiß, dass es ein String ist.
Deshalb musst du das hier einsetzen:
$email_from = "test@web.de";
Die " zeigen dem Parser an, dass eine Zeichenkette folgt.
Beitrag zuletzt geändert: 26.7.2009 21:50:00 von reimann -
Ich habe was geändert und da kann wieder eine Fehlermeldung.
Dann habe ich einfach einen anderen Code benutzt:
<?php $fmtResponse= implode("", file("$redirect")); $message= "Formularinhalt:\n\n"; foreach($HTTP_POST_VARS as $name=> $value) { $str = stripslashes($value); $message.= "$name: $str\n\n"; } //Anhängen der IP, Browser und Datum $message.= "-----------------------------\n"; $message.= date("l dS of F Y h:i:s A") . "\n"; $message.= $REMOTE_ADDR . "\n"; $message.= $HTTP_USER_AGENT; mail($admin, $subject, $message, "From: $email"); echo $fmtResponse; ?>
Quelle: http://www.ekiwi.de/snippets/php/formular/einfacher_formmailer.htm
Aber da kommt auch eine Fehlermeldung.
Warning: file() [function.file]: Filename cannot be empty in /home/webpages/lima-city/n0x3l/html/index.php on line 2
Warning: implode() [function.implode]: Invalid arguments passed in /home/webpages/lima-city/n0x3l/html/index.php on line 2 -
Ja dieser Quelltext entsprach nichtmehr dem original. Einige Fehler konnte ich beheben, aber dann kam ein Fehler, wo ich nicht wusste wie ichs machen soll, also hab ich den original Quellcode runtergeladen, allerdings war der ziemlich anders und enthielt diesen Fehler nicht.
Wo hast du das erste runtergeladen?
Zum zweiten: Ich weiß jetzt auch nicht woran es liegt, außer, dass der Dateiname leer war und das geht nicht.
Hast du dazu auch den Code von dem Formular oder ist es immernoch dasselbe Formular?
Ich würde dir empfehlen nochmal den Quelltext hier im original runterzuladen und zu modifizieren. Dabei beachte aber bitte, dass du die " nicht entfernst.
http://www.planetc.de/download/planetmail/planetmail.html
Beitrag zuletzt geändert: 27.7.2009 9:20:06 von reimann -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage