Php

البريد الالكتروني المحمي في ال php

إرسال البريد الالكتروني php



تسمح PHP بإرسال بريد الكتروني مباشرة من خلال كود معين .



function PHP mail()


تستخدم الوظيفة mail() لارسال البريد الالكتروني من داخل السكربت .

التركيبة


mail(to,subject,message,headers,parameters)
		


القيمالشرح
toمطلوب . تحدد المستقبل و المستقبلون للبريد
subjectمطلوب . تحدد موضوع الرسالة . ملاحظة : لايمكن أن تحتوي القيمة على أحرف خاصة
messageمطلوب . تحدد الرسالة التي سيتم ارسالها . ولكل سطر يجب أن يكون مفصول بسطر جديد (n) . يجب أن يحتوي السطر على أكثر من 70 كلمة .
headersخياري . تخصيص ترويسات اضافية مثل cc أو Bcc يجب على الترويسات أن تكون مفصولة (rn) .
parametersخياري . تحديد قيمة إضافية لبرنامج sendmail




إنشاء بريد الكتروني بسيط


أبسط طريقة لإنشاء و ارسال بريد باستخدام PHP هو ارسال بريد نصي .

في المثال التالي سيتم أولاً إنشاء متغيرات وهي ($to, $subject, $message, $from, $headers) ثم نستخدم المتغيرات في mail() function لارسال بريد الكتروني :
<?php
		  $to = "someone@example.com";
		  $subject = "Test mail";
		  $message = "Hello! This is a simple email message.";
		  $from = "someonelse@example.com";
		  $headers = "From:" . $from;
		  mail($to,$subject,$message,$headers);
		  echo "Mail Sent.";

		  ?>


نموذج البريد


باستخدام PHP يمكنك انشاء نموذج لارسال بريد الكتروني في موقعك . سنقوم بارسال رسالة نصية في المثال التالي لبريد الكتروني محدد :
<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",
		  $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>


كيف يعمل كود المثال السابق 


  • أولاً , فحص فما اذا تم تعبئة حقول مدخلات البريد .

  • اذا لم يتم ذلك مثل اذا كانت اول زيارة للصفحة عندها سيتم إظهار نموذج HTML .

  • و ان تم تعبئة النموذج سيتم ارسال البريد من النموذج .

  • عند الضغط على زر ارسال بعد تعبئة النموذج سيتم اعادة تحميل الصفحة وسيتم فحص فيما اذا تم ذبط مدخلات النموذج ثم سيتم ارسال البريد .

ملاحظة : هذه اسهل طريقة لارسال بريد الكتروني و لكنه غير آمن وفي الدرس القادم سيتم شرح كيفية انشاء بريد الكتروني محمي مع الكثير من السكربتات .








البريد الالكتروني المحمي



هناك نقطة ضعف في انشاء البريد الالكتروني لكن سيتم حل هذه المشكلة في هذا الدرس .



إنشاء البريد الالكتروني المحمي


أولاً لاحظ الكود من خلال الدرس السابق :
<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 .




تعليقات