Frage zu contact form 1.1.0
-
- Mitglied
- Beiträge: 352
- Registriert: 13.10.2005 22:18
- Wohnort: Dortmund
Also ich schreibe in die Messagebox einen Text und am Ende der Zeile
drücke ich enter. Wenn ich bei de letzten Zeile nicht enter drücke kommt
der Text nicht an.
Wegen dem Zähler ist mir nicht aufgefallen, ich kann soviel Formulare absenden wie ich mag die kommen zumindest alle an.
edit: Stimmt, der Zähler geht nicht höher.
drücke ich enter. Wenn ich bei de letzten Zeile nicht enter drücke kommt
der Text nicht an.
Wegen dem Zähler ist mir nicht aufgefallen, ich kann soviel Formulare absenden wie ich mag die kommen zumindest alle an.
edit: Stimmt, der Zähler geht nicht höher.
-
- Mitglied
- Beiträge: 352
- Registriert: 13.10.2005 22:18
- Wohnort: Dortmund
-
- Mitglied
- Beiträge: 1862
- Registriert: 23.12.2004 22:46
Ahoi,
zum Zähler- oder Nicht-Absenden-Problem kann ich leider nichts sagen. Aber ich möchte hier einen kleinen selbstgeschriebenen Code vorstellen, von dem ich hoffe, dass er die Sicherheit etwas verbessert.
Der Code gehört in der contact_form.php oberhalb von
eingefügt. Zusätzlich muss man in der lang_contact.php noch ein Feld mit Namen Sicherheit einfügen. Zum Beispiel:
Und ein paar Variablen müssen auch noch angepasst werden. Statt strpos kann man auch eregi verwenden:
Der obige Code stellt nur eine zusätzliche Maßnahme gegen E-mail-Injection dar und wurde von folgendem lesenswerten Thread inspiriert: http://forums.oscommerce.de/lofiversion ... 33375.html
Gegen SQL-Injection taugt der Code wahrscheinlich nichts. Nehme ich einmal an.
LG, IPB_Flüchtling
zum Zähler- oder Nicht-Absenden-Problem kann ich leider nichts sagen. Aber ich möchte hier einen kleinen selbstgeschriebenen Code vorstellen, von dem ich hoffe, dass er die Sicherheit etwas verbessert.
Der Code gehört in der contact_form.php oberhalb von
Code: Alles auswählen
// All fields match criteria, attempt to send mail
if (@mail(
Code: Alles auswählen
$lang['Sicherheit'] = 'Deine Nachricht wurde aus Sicherheitsgründen nicht abgeschickt!<br><br>Die Felder "Name" und "E-Mail" dürfen keine Zeilenumbrüche ("\n" bzw. "\r") enthalten.<br>Bitte vermeide in Deiner Nachricht den Begriff "Content-Type".<br>Deine Nachricht muss kürzer als 4000 Zeichen sein.';
Code: Alles auswählen
// additional Security Check
$laenge_name = strlen($from_name);
$laenge_email = strlen($from_email);
$laenge_nachricht = strlen($message);
$maxlaenge_name = 50;
$maxlaenge_email = 50;
$maxlaenge_nachricht = 4000;
if ($laenge_name > $maxlaenge_name) {
$spamversuch = 1; }
if ($laenge_email > $maxlaenge_email) {
$spamversuch = 1; }
if ($laenge_nachricht > $maxlaenge_nachricht) {
$spamversuch = 1; }
if ($subject != "Kontaktformular") {
$spamversuch = 1; }
if ($to_admin != "deine_email_adresse@domain.tld") {
$spamversuch = 1; }
if (eregi('Content-Type:', $to_admin)) {
$spamversuch = 1; }
if (eregi('Content-Type:', $subject)) {
$spamversuch = 1; }
if (eregi('Content-Type:', $message)) {
$spamversuch = 1; }
if (eregi('Content-Type:', $from_name)) {
$spamversuch = 1; }
if (eregi('Content-Type:', $from_email)) {
$spamversuch = 1; }
if (eregi('Content-Type:', $enquiry)) {
$spamversuch = 1; }
if ( (strpos($to_admin, "\n") != false) || (strpos($to_admin, "\r") != false) ) {
$spamversuch = 1; }
if ( (strpos($subject, "\n") != false) || (strpos($subject, "\r") != false) ) {
$spamversuch = 1; }
if ( (strpos($from_name, "\n") != false) || (strpos($from_name, "\r") != false) ) {
$spamversuch = 1; }
if ( (strpos($from_email, "\n") != false) || (strpos($from_email, "\r") != false) ) {
$spamversuch = 1; }
if ( (strpos($enquiry, "\n") != false) || (strpos($enquiry, "\r") != false) ) {
$spamversuch = 1; }
if ($spamversuch) {
message_die(GENERAL_ERROR, $lang['Sicherheit']);
exit;
}
// End of Security Check
Gegen SQL-Injection taugt der Code wahrscheinlich nichts. Nehme ich einmal an.
LG, IPB_Flüchtling
neuste version der contact_form.php: http://www.terraemotus.de/contact_form.php.txt
mussten einige änderungen vorgenommen werden. zum einen das hochzählen der beiträge und zum anderen konnten beiträge nur gelesen werden, wenn im forum noch keine beiträge gelöscht wurden...
mein hinzugefügter code:
ausgiebige tests, feedback und kritik sind erwünscht!!!
mussten einige änderungen vorgenommen werden. zum einen das hochzählen der beiträge und zum anderen konnten beiträge nur gelesen werden, wenn im forum noch keine beiträge gelöscht wurden...
mein hinzugefügter code:
Code: Alles auswählen
// Insert into tables by AmShaegar
$forum_id = '1'; // Gewünschtes Forum auswählen!!!
//$post_id = ;
$poster_id = $userdata['user_id'];
$post_time = time();
$poster_ip = $user_ip;
$post_username = $userdata['session_logged_in'] ? $userdata['username'] : $from_name;
$enable_bbcode = '0';
$enable_html = '0';
$enable_smilies = '1';
$enable_sig = '0';
//$post_edit_time = ;
//$post_edit_count = ;
//$topic_id = ;
$topic_title = $enquiry;
$topic_poster = $poster_id;
$topic_time = $post_time;
//$topic_views = ;
///$topic_replies = ;
//$topic_status = '0';
//$topic_vote = '0';
//$topic_type = '0';
/* $SEL = "SELECT post_id FROM ".POSTS_TABLE." ORDER BY post_id DESC LIMIT 1";
$QUE = mysql_query($SEL);
$res = mysql_fetch_object($QUE);
$post_id = $res->post_id + 1;
$topic_first_post_id = $post_id;
$topic_last_post_id = $post_id; */
//$topic_moved_id = '0';
$INS_topics = "INSERT INTO ".TOPICS_TABLE." (forum_id, topic_title, topic_poster, topic_time) VALUES ('$forum_id', '$topic_title', '$topic_poster', '$topic_time')";
mysql_query($INS_topics) or die("pech1");
$SEL_t = "SELECT topic_id FROM ".TOPICS_TABLE." WHERE topic_time LIKE '$topic_time'";
$QUE_t = mysql_query($SEL_t);
$res_t = mysql_fetch_object($QUE_t);
$topic_id = $res_t->topic_id;
$INS_posts = "INSERT INTO ".POSTS_TABLE." (topic_id, forum_id, poster_id, post_time, poster_ip, post_username, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ('$topic_id', '$forum_id', '$poster_id', '$post_time', '$poster_ip', '$post_username', '$enable_bbcode', '$enable_html', '$enable_smilies', '$enable_sig')";
mysql_query($INS_posts) or die("pech2");
$bbcode_uid = '1234567890';
$post_subject = $enquiry;
$post_text = addslashes($message);
$SEL = "SELECT post_id FROM ".POSTS_TABLE." ORDER BY post_id DESC LIMIT 1";
$QUE = mysql_query($SEL);
$res = mysql_fetch_object($QUE);
$post_id = $res->post_id;
$UPD_topics = "UPDATE ".TOPICS_TABLE." SET topic_first_post_id = '$post_id', topic_last_post_id = '$post_id' WHERE topic_time LIKE '$topic_time'";
mysql_query($UPD_topics) or die("pech4");
$INS_posts_text = "INSERT INTO ".POSTS_TEXT_TABLE." (post_id, bbcode_uid, post_subject, post_text) VALUES ('$post_id', '$bbcode_uid', '$post_subject', '$post_text')";
mysql_query($INS_posts_text) or die("pech3");
$SEL_f = "SELECT forum_posts, forum_topics FROM ".FORUMS_TABLE." WHERE forum_id LIKE '$forum_id'";
$QUE_f = mysql_query($SEL_f);
$res_f = mysql_fetch_object($QUE_f);
$forum_posts = $res_f->forum_posts + 1;
$forum_topics = $res_f->forum_topics + 1;
$forum_last_post_id = $post_id;
$UPD_forums = "UPDATE ".FORUMS_TABLE." SET forum_posts = '$forum_posts', forum_topics = '$forum_topics', forum_last_post_id = '$forum_last_post_id' WHERE forum_id = '$forum_id'";
mysql_query($UPD_forums) or die("pech5");
-
- Mitglied
- Beiträge: 352
- Registriert: 13.10.2005 22:18
- Wohnort: Dortmund
-
- Mitglied
- Beiträge: 1862
- Registriert: 23.12.2004 22:46
@snakepilsken:
Der Code gehört in der contact_form.php eingefügt, und zwar oberhalb von
Wichtig: Der Code ist nur als Gedankenanstoß zu verstehen!
Es kann sein, dass einige Variabeln bei Dir etwas anders heißen. (Ich verwende ja eine Version des Easy Contact Form - Mod.)
Außerdem prüft der Code nicht auf unerlaubte Zeichen im Feld Username, weil ich diese Abfrage sowohl im Template als auch in der contact_form.php deaktiviert habe. Die Abfrage für den Username lässt sich nach dem gleichen Muster aber leicht selbst einfügen.
Last not least weiß ich nicht, ob die Variable $spamversuch bei einem erfolgten Spamversuch dauerhaft auf 1 gesetzt bleibt (kenne mich mit php wirklich nicht gut aus). Falls dies der Fall sein sollte, ließe sich dann auch bei weiteren Versuchen keine Kontaktmail mehr verschicken. Als Abhilfe müsste ganz oben in der contact_form.php die Variable auf 0 gesetzt werden: $spamversuch = 0;
Wie gesagt: Das Ganze soll eher als Gedankenanstoß dienen. Der von mir gepostete Code lässt sich aber einfach an eigene Bedürfnisse anpassen.
Achja: Folgende Zeilen müssten Euren Einstellungen entsprechend angepasst werden:
LG, IPB_Flüchtling
Der Code gehört in der contact_form.php eingefügt, und zwar oberhalb von
Code: Alles auswählen
// All fields match criteria, attempt to send mail
if (@mail(
Es kann sein, dass einige Variabeln bei Dir etwas anders heißen. (Ich verwende ja eine Version des Easy Contact Form - Mod.)
Außerdem prüft der Code nicht auf unerlaubte Zeichen im Feld Username, weil ich diese Abfrage sowohl im Template als auch in der contact_form.php deaktiviert habe. Die Abfrage für den Username lässt sich nach dem gleichen Muster aber leicht selbst einfügen.
Last not least weiß ich nicht, ob die Variable $spamversuch bei einem erfolgten Spamversuch dauerhaft auf 1 gesetzt bleibt (kenne mich mit php wirklich nicht gut aus). Falls dies der Fall sein sollte, ließe sich dann auch bei weiteren Versuchen keine Kontaktmail mehr verschicken. Als Abhilfe müsste ganz oben in der contact_form.php die Variable auf 0 gesetzt werden: $spamversuch = 0;
Wie gesagt: Das Ganze soll eher als Gedankenanstoß dienen. Der von mir gepostete Code lässt sich aber einfach an eigene Bedürfnisse anpassen.
Achja: Folgende Zeilen müssten Euren Einstellungen entsprechend angepasst werden:
Code: Alles auswählen
$maxlaenge_name = 50; // wie lange darf Absendername sein?
$maxlaenge_email = 50; // wie lange darf E-Mail-Adresse sein?
$maxlaenge_nachricht = 4000; // wie lange darf Nachricht sein?
if ($subject != "Kontaktformular") { // wie lautet Deine Betreffzeile?
if ($to_admin != "deine_email_adresse@domain.tld") { // bitte Deine E-Mail-Adresse angeben
-
- Mitglied
- Beiträge: 1862
- Registriert: 23.12.2004 22:46
@AmShaegar:
cback war so nett, sich Deinen Code kurz anzusehen. Schaut gut aus! Ein paar interessante Tipps hatte er auch noch: http://www.community.cback.de/viewtopic ... 7332#47332
Hoffe, Du kannst etwas damit anfangen.
Vielen Dank noch einmal für Deine Bemühungen!
LG, IPB_Flüchtling
cback war so nett, sich Deinen Code kurz anzusehen. Schaut gut aus! Ein paar interessante Tipps hatte er auch noch: http://www.community.cback.de/viewtopic ... 7332#47332
Hoffe, Du kannst etwas damit anfangen.
Vielen Dank noch einmal für Deine Bemühungen!
LG, IPB_Flüchtling
-
- Mitglied
- Beiträge: 352
- Registriert: 13.10.2005 22:18
- Wohnort: Dortmund