هذا دليل على نموذج اتصال خفيف الوزن للمواقع الثابتة المستضافة ذاتيًا.
المصدر الأساسي لمجموعة Knowbl مستضاف على https://git.knowbl.co/dev/log-based-contact-form/.
mail
لديبيان/أوبونتو. /submit/
في هذا المثال) مجلدًا فارغًا، وإلا ستتم إعادة توجيه كافة الاستعلامات المشروعة إلى /إرسال/.ضمن كتلة http الخاصة بخادم nginx، أدخل تنسيق السجل الخاص بتكوينك المحدد بالقرب من الجزء السفلي من الكتلة، ولكن قبل كتل الخادم الأولى. ينصح بأقل.
log_format contactstatic ' $time_local | $request ' ;
راجع موقع وضع nginx-exmaple.conf
.
في كتلة الخادم الخاصة بخادم nginx، أدخل موقع الإجراء الخاص بك ( /submit/
في هذه الحالة) داخل النموذج.
location ~* /submit/(.*)$ {
access_log /home/example/logs/static-contact-access.log contactstatic;
error_log /home/example/logs/static-contact-error.log;
return https://example.com/;
}
سيؤدي هذا إلى إعادة الزائر إلى الدليل الجذر. خياط لاحتياجاتك المحددة.
راجع موقع وضع nginx-exmaple.conf
.
أضف النموذج على موقعك. النمط حسب الحاجة.
< form action =" /submit/ " method =" GET " >
< label for =" name " > Name: </ label >
< input type =" text " name =" name " required =" yes " placeholder =" What can I call you? " >
< label for =" email " > Email: </ label >
< input type =" email " name =" email " required =" yes " placeholder =" [email protected] " >
< label for =" message " > Short message: </ label >
< textarea type =" message " name =" message " required =" yes " placeholder =" What do you want to say (in 140 characters)? " maxlength =" 140 " > </ textarea >
< input type =" submit " value =" Send a message " >
</ form >
أضف أكبر عدد ممكن <input>
حسب الحاجة.
GET لأن الطريقة مطلوبة، لأنها تحتاج إلى التحليل داخل السجلات.
هناك عدة طرق لمراقبة منشورات النماذج الواردة.
عرض مباشر لملف السجل المباشر.
tail -f /home/example/logs/access.log
إرسال الطلبات إلى عنوان البريد الإلكتروني.
cd /home/example/
nano log-based-static-contact-form-emailer.sh
#! /bin/bash
EMAIL= " [email protected] "
EMAILSUBJECT= " Contact form "
LOG= " /home/example/logs/static-contact-access.log "
CRON= " /home/example/logs/example-cron.log "
# ## DO NOT EDIT BELOW ###
NOW= $( date + " Form sent to $EMAIL -- %Y-%m-%d %H:%M:%S -- " ) ;
if [ ! -f $LOG ] ;
then
printf " . " >> $CRON
else
mail -s " $EMAILSUBJECT " $EMAIL < $LOG ;
printf " n n $NOW n n " >> $CRON
fi
ملاحظة: اعتمادًا على من يملأ النموذج الخاص بك (الأشرار؟)، قد ترغب في إرسال تنبيه بوجود معلومات جديدة في نموذج الاتصال، بدلاً من إرسال السجل بالكامل في نص رسالة بريد إلكتروني.
chmod +x log-based-static-contact-form-emailer.sh
crontab -e
أضف إلى الجزء السفلي من crontab
0 9-17 * * 1-5 /var/log/log-based-form.sh
يتم تعيين هذا cron لكل ساعة، على مدار الساعة، من 9 صباحًا حتى 5 مساءً، من الاثنين إلى الجمعة. لا تتردد في ضبط شيء أكثر قابلية للتطبيق على الإعداد الخاص بك.
يمكن تقديم أي تعليقات مباشرة على منشور HackerNews هنا
https://news.ycombinator.com/item?id=13358753
أو إثارة قضية
https://github.com/knowbl/log-based-static-contact-form/issues
إذا كان هذا مفيدًا لك، يرجى التبرع لـ EFF. أنا لا أعمل هناك، لكنهم يقومون بعمل رائع في هذه الصناعة
https://eff.org/donate/