هناك نقطة ضعف في انشاء البريد الالكتروني لكن سيتم حل هذه المشكلة في هذا الدرس .
إنشاء البريد الالكتروني المحمي
أولاً لاحظ الكود من خلال الدرس السابق :
<html> <body><?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } else //if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html>
المشكلة في الكود السابق هو أن أي مستخدم غير مرخص له يمكنه ادخال البيانات الى البريد من خلال نماذج الادخال .
ماذا يحصل لو أن المستخدم أدخل النصوص التالية الى حقول مدخلات النماذج ؟
someone@example.com%0ACc:person2@example.com %0ABcc:person3@example.com,person3@example.com, anotherperson4@example.com,person5@example.com %0ABTo:person6@example.com
يضع الكود mail() النص السابق الى مدخلات النموذج بأنه نص طبيعي و ترويسة النموذج لديها حقول Cc و Bcc و To . عند الضغط على زر الارسال عندها سيتم ارسال البريد الى جميع العناوين التي تم وضعها في النص السابق .
إيقاف ادخال البريد الالكتروني
أفضل طريقة لايقاف ادخال البريد الالكتروني هي تفعيل المدخلات .
يعتبر الكود نفسه في الدرس السابق ولكن قمنا بإضافة مفعّل للمدخلات و التي بدورها تفحص مدخلات حقول البريد :
<html> <body><?php function spamcheck($field) { //filter_var() sanitizes the e-mail //address using FILTER_SANITIZE_EMAIL $field=filter_var($field, FILTER_SANITIZE_EMAIL); //filter_var() validates the e-mail //address using FILTER_VALIDATE_EMAIL if(filter_var($field, FILTER_VALIDATE_EMAIL)) { return TRUE; } else { return FALSE; } } if (isset($_REQUEST['email'])) {//if "email" is filled out, proceed //check if the email address is invalid $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==FALSE) { echo "Invalid input"; } else {//send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } } else {//if "email" is not filled out, display the form echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html>
في المثال السابق قمنا باستخدام فلتر PHP لتفعيل الحقول
- يمسح الفلتر FILTER_SANITIZE_EMAIL جميع أحرف البريد الغير شرعية من النصوص .
- يغعّل الفلتر FILTER_VALIDATE_EMAIL القيمة مثل عنوان بريد الكتروني .
يمكنك قراءة المزيد عن الفلاتر من خلال درس فلاتر PHP .
ليست هناك تعليقات:
إرسال تعليق