برمجة نموذج مبسط لارسال رمز تحقق للجوال بلغة PHP و MYSQL

0

في شرحنا اليوم سنقوم ببرمجة نموذج "FORM" مبسط لإرسال رسالة تحقق لرقم جوال العميل مكونة من 4 خانات عشوائية  " ***" ومثل هذه الخطوة يحتاجها المبرمج لفلترة عمليات التسجيل الضارة مثل عضويات السبام والعضويات الوهمية وكذلك تجبر العميل على التسجيل برقم جوال مفعل .

الخطوة الأولى :

تشغيل السيرفر المحلي 

الخطوة الثانية:

دخول PHPMYADMIN 
من خلال المسار ( localhost/phpmyadmin)

الخطوة الثالة : 


انشاء قاعدة بيانات باسم verify
انشاء جدول بيانات باسم sms
ادراج الحقول التالية : 
ID النوع INT تلقائي - الطول 11 - مفتاح اساسي -غير متكرر
PIN النوع INT  الطول 11
PHONENUM النوع INT الطول 11
ACTIVE النوع INT  القيمة الافتراضية 0 




الخطوة الرابعة 

ادراج مجلد باسم sms
بداخل  مجلد www او مجلد ملفات الموقع بداخل مسار السيرفر المحلي 

الخطوة الخامسة 

انشاء ملف html  للنموذج  باسم sms.html
يضم الاكواد التالية : 

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body{background-color: lightblue;}
form{
width:300px;
height: 400px;
position: absolute;
        top: 50%;
        left: 50%;
        margin-right: -50%;
        transform: translate(-50%, -50%); 

background-image: url('https://3.bp.blogspot.com/-yoGIeZq_p00/WrrqsMaCxoI/AAAAAAAA0V4/_ebq4OKl_W0fnerSOFCQ38ClQM7k8t4cQCLcBGAs/s1600/images.png') ;
background-repeat: no-repeat;
}
footer {
     position: fixed;
     left: 0;
     bottom: 0;
     width: 100%;
     background-color: red;
     color: white;
     text-align: center;
}
input[type=phone] {
position: fixed;
left: 20%;
bottom: 50%;
margin-right: -20%;
   transform: translate(-20%, -20%);
width: 50%;
background-color: blue;
color: white;
text-align: center;
}
input[type=submit] {
position: fixed;
left: 20%;
bottom: 40%;
margin-right: -20%;
   transform: translate(-20%, -20%);
width: 50%;
background-color: #4CAF50;
color: white;
text-align: center;
}


</style>
<title>verify your phone number</title>
</head>
<body>

<form action="sms.php" method="POST">
<br><input type="phone" name="phonenum" placeholder="ادخل رقم جوالك">
<br><input type="submit" value="تحقق">
</form>
</body>
<footer>fab2.info code by F_i4i 2018</footer>
</html>

حيث أن :
<form action="sms.php" method="POST">
<br><input type="phone" name="phonenum" placeholder="ادخل رقم جوالك">
<br><input type="submit" value="تحقق">
</form>
منطقة النموذج 

 action="sms.php"
صفحة التوجية 
<input type="phone" name="phonenum" placeholder="ادخل رقم جوالك">
حقل ادخال رقم الجوال
<input type="submit" value="تحقق">
ايقونة التوجية 

المرحلة السادسة : 


 انشاء صفحة الاتصال بقاعدة البيانات بلغة php تضم الاكواد التالية :
<?php
$con = mysql_connect("localhost","root","");
mysql_select_db("verify") OR die('db not connected' .mysql_error());
if (!$con)
{
die('Could not connect: ' .myaql_error());
}
حيث أن :
mysql_select_db("verify")
اسم قاعدة البيانات 

المرحلة السابعة

*اولا تحتاج الى اشتراك بخدمة الرسائل النصية sms عبر احد موزعي الخدمة  بالاضافة الى ضرورة دعمة لخدمة الارسال من خلال رابط url 
ثانيا انشاء صفحة php لرفع البيانات الى القاعدة واسمها sms.php
وتضم الاكواد التالية : 
<style type="text/css">
    body{background-color: lightblue;}
table,tr,td{background-color:white; border: solid 2px;
width: 50%;text-align: center;}
</style>
<?php
require("db.php");
$pin= rand(1000, 9999); // random 4 digit code;
$phonenum=$_POST['phonenum'];
$query="INSERT INTO sms VALUE('','$pin','$phonenum')";
$result=@mysql_query($query);
$un=" username";// معلومات موفر الخدمة قم بالتعديل عليها
$pwd="password";
$senderby="FAB2.INFO";
$msg2=$pin;//نهاية كود موفر الخدمة

if($result)
{
echo "<center><table><tr><th>";
echo "هل رقم الجوال صحيح؟";
echo "</th></tr>";
echo"<tr><td>$phonenum</td></tr>";
echo "<tr><td>";
echo "<a href=http://msegat.com/gw/?userName=$un&userPassword=$pwd&numbers=$phonenum&userSender=$senderby&msg=$msg2&By=Link&msgEncoding=UTF8>نعم ارسل الرمز</a></center>";
echo "</td></tr>";

}
else{echo"not registered";}?>

حيث أن 
require("db.php");
كود استدعاء ملف الاتصال بالقاعدة 
$pin= rand(1000, 9999);
كود مولد الارقام العشوائية بحيث تكون النتيجة مكونة من اربعة ارقام على هذا النحو "****"
$phonenum=$_POST['phonenum'];
كود ربط حقل الرقم من قاعدة البيانات بحقل الارسال في صفحة sms.html

$query="INSERT INTO sms VALUE('','$pin','$phonenum')";
كود ارسال المعلومات المدخلة الى قاعدة البيانات و "sms" هو اسم جدول البيانات

else{echo"not registered";}?>
كود رسالة الخطأ في حال فشل الاتصال 

الخطوة النهائية 

تجربة الاسكربت
نلاحظ تطابق الرقم العشوائي المرسل مع الرقم العشوائي  المخزن بقاعدة البيانات 



تابعوا الدرس القادم حيث ساشرح الية مطابقة الرقم المرسل مع الرقم الموجود بقاعدة البيانات والية التفعيل 


خمس خطوات مهمة لحماية معلوماتك الشخصية والحساسة اثناء اتصالك بالانترنت

0


في هذا المقال سأتطرق لعدة نقاط مهمة في امن المعلومات ستساعدك باذن الله في حماية بياناتك ومعلوماتك الشخصية وتأمين اجهزتك عند اتصالك بالأنترنت



اولا : امان الشبكة
-اتصالك بالشبكة:

تجنب الاتصال بالشبكات المفتوحة مثل شبكات المطارات والمولات لان بيئة الاتصال غير امنه كليا بإمكان المتصيدين من المتصلين معك على نفس الشبكة معرفة معلومات جهازك مثل ( اسم الجهاز ، نظام التشغيل ، عنوان الاتصال ، وعنوان الجهاز ) بالإضافة الى معرفة المنافذ المفتوحة في جهازك والتي قد تكون سببا لا سمح الله لوصول المخترقين الى داخل ملفات جهازك فبطبيعة الحال هذه المنافذ  لا تفتح من تلقاء نفسها وتكون مفتوحة بسبب المستخدم نفسه او بسبب تطبيق بداخل الجهاز على سبيل المثال تطبيقات التواصل المباشر ( المحادثات ) تستخدم منافذ معينة لارسال واستقبال الرسائل وفي حال كان التطبيق لا يدعم تشفير البيانات المرسلة ستكون بياناتك في خطر عند الاتصال عبر شبكه غير امنه وبإمكان المتصل حفظ تقارير منها تشمل المحادثات ، المعلومات الشخصية ، بروتوكولات الاتصال.
بالإضافة الى ارسال ملفات الى جهازك عبر هذه المنافذ ، لذلك افضل دائما الاتصال بشبكتك الشخصية فقط ، او على اقل تقدير الاتصال بشبكة غير عامة ومشفرة بكلمة مرور ونوع تشفيرها WPA2  

- تأمين شبكتك الشخصية :
*تأكد دائما من تغيير معلومات الوصول  للوحة اعدادات الشبكة الافتراضية
والتي غالبا ما تكون باسم مستخدم Admin وكلمة مرورAdmin الى معلومات اخرى 

*تأكد من اختيار رمز للشبكة خليط من ارقام وحروف بالإضافة الى تعيين نوع التشفير الى WPA2 كحد ادنى
*قم بإخفاء رادار الشبكة من لوحة الاعدادات بحيث لا يمكن كشفها ضمن الشبكات المتاحة بمعنى عند اتصالك تقوم بإدخال البيانات يدويا ( اسم الشبكة وكلمة المرور .)
*قم بمراقبة الشبكة باستمرار والتعرف على كل الاجهزة المتصلة بالشبكة
تأكد من  المنافذ المفتوحة بالشبكة وقم بأغلاقها في حال لم تقوم بفتحها لأي سبب

ثانيا صلاحيات التطبيقات
تقوم اغلب التطبيقات بطلب المستخدم بفتح بعض الصلاحيات مثل(الوصول  الى الميكروفون - الصور - جهات الاتصال - الموقع ) بعض التطبيقات تطلب هذه الصلاحيات لأسباب منطقية على سبيل المثال سناب شات يطلب صلاحيات الوصول الى الكاميرا لأنه تطبيق قائم على تصوير القصص ، لكن عندما يقوم تطبيق مخصص للاستماع للموسيقى مثلا بطلب صلاحيات بالوصول الى الكاميرا فان هذا الامر غير اعتيادي ويدعو للريبة بالتأكيد، وفي حال احتجت الى اعطاء التطبيق الصلاحية لالتقاط صورة شخصية لملفك الشخصي مثلا!! قم بإغلاق الصلاحية فور الانتهاء من ذلك
وما اردت التنويه عليه احرص على اغلاق تحميل التطبيقات من خارج المتجر الرسمي للنظام،لان بعض الانظمة التي تسمح  للمستخدم بذلك قد تعرضه لتحميل البرمجيات الخبيثة التي تقوم بفتح الصلاحيات دون طلب الاذن منه وهي مما لاشك فيه لاستغلالها في الوصول الى بيانات المستخدم ومعلوماته الخاصة .

ثالثا : تصفح الويب 
*عند اتصالك بالويب تأكد من استخدامك لمتصفح موثوق
تأكد من ان الموقع الالكتروني يدعم التصفح الامن https خصوصا اذا كان موقع يطلب بياناتك الشخصية مثل البنوك ، مواقع التواصل الاجتماعي ، المواقع الاكاديمية والحكومية
لماذا الاتصال ببروتوكول http غير امن؟ 
 لان نوع الاتصال غير مشفر وبإمكان المترصدين سرقة اتصالك او كما هو معروف بأمن المعلومات بـ (سرقة الكوكيز) - مثال للتبسيط - : عند اتصالك مثلا بتوتير عبر المتصفح على برتوكول http بإمكان المخترق ببساطة سرقة اتصالك والوصول الى جميع معلومات حسابك الشخصي دون الحاجة الى معرفة رقمك السري ومعرف حسابك لان السيرفر يعتبر الاتصالين لنفس المستخدم
لماذا بروتوكول https آمن ؟ 
وعملية الاتصال في هذا البروتوكول آمنه ومشفره وفي حال حصول المخترق على اي بيانات ستكون مشفره تماما . لذلك احرص تمام الحرص على التأكد من نوع البروتوكول عند اتصالك بالويب بالإضافة الى حرصك على تسجيل الخروج من اي موقع بعد الانتهاء منه لتلافي حالات سرقة الاتصال  .
 بالمناسبة سرقة الاتصال عبر بروتوكول http من اكثر عمليات الاختراقات شيوعاً

رابعاً الروابط المختصرة
*تأكد دائما من فحص اي رابط مختصر قبل فتحه باستخدام ادوات او مواقع فحص الروابط.
كثيرا ما تستخدم الروابط المختصرة للوصول الى مواقع مشبوهة او ربطها بمواقع التجسس والاختراقات او حتى ضمن الهندسة الاجتماعية للتشويش على المستخدم لسرقة معلوماته الشخصية .   

خامسا الهندسة الاجتماعية :

 الصفحات المزورة: 
من اكثر الطرق المتبعة في الهندسة الاجتماعية والاختراقات استخدام الصفحات المزورة على سبيل المثال يقوم المخترق بتصميم صفحة مماثلة لصفحة تسجيل الدخول على توتير او اي من مواقع التواصل الاجتماعي وربطها بدومين مشابه لـدومين الموقع الرسمي ( الدومين هو عنوان الموقع مثلtwitter.com) عند ادخال معلومات الدخول من قبل المستخدم يتم ارسال البيانات الى المخترق ومن ثم تقوم الصفحة المزورة بتحويل المستخدم الى الموقع الرسمي دون ان يشك في عملية الاتصال
لذلك تنبه دائما لعنوان الصفحة جيدا قبل تسجيل معلوماتك الشخصية .
بالمناسبة تطبيقات الطرف الثالث مثل سناب بلص ، تطبيقات زيادة المتابعين تندرج تحت هذا النوع من انواع الهندسة الاجتماعية


الرسائل النصية المزورة :
من اكثر الوسائل التي يصعب على المستخدم التنبه لها هي الرسائل النصية المزورة ،
فمن السهل جدا تزوير اي عنوان لإرسال الرسائل النصية ويستطيع المخترق ارسال رسائل للمستخدمين حتى دون الوصول للخدمة الرسمية فقط بتزوير اسم الارسال بنفس اسم الجهة الرسمية بحيث يتم استخدام روابط لصفحات مزوره للمستخدمين لسرقة حساباتهم البنكية او الشخصية لذلك تأكد دائما من صحة البيانات المرسلة عبر وسائل الاتصال الرسمية الاخرى للجهة ولا تعول كثيرا على خدمات الـsms كونها من اكثر الخدمات ضعفا في الحماية ضد التزوير  والتصيد.




رفع الصور من خلال صفحة php الى قاعدة بيانات mysql

0
لمتطلبات :
-الاتصال بالسيرفر المحلي اذا لم يكن لديك سيرفر محلي تابع الدرس (http://www.fab2.info/2017/11/php.html)
-قاعدة بيانات mysql
-ملف الأتصال بقاعدة البيانات mysql- php
-صفحة ادخال بلغة html
-صفحة تاكيد الاتصال بلغة php
-صفحة استعراض البيانات بلغة php
قم بإنشاء قاعدة بيانات باسم " upload-images" بالدخول على المتصفح على المسار التالي
localhost/phpmyadmin


قم باضافة جدول باسم "images" يحتوي على الحقول ( id=int primry key , auto incremnt - image=longblob)
3. مرحلة البرمجة :
1-بناء ملف الاتصال بقاعدة البيانات
نقوم بتسميته db.php
<?php
$con = mysql_connect("localhost","root","");
mysql_select_db("upload-images") OR die('db not connected' .mysql_error());
if (!$con)
{
die('Could not connect: ' .myaql_error());
}

حيث ان :
$con = mysql_connect("localhost","root","");
كود الاتصال بالسيرفر " localhost" واسم المستخدم للسيرفر "root" وكلمة المرور " "
mysql_select_db("upload-images") OR die('db not connected' .mysql_error());
كود الاتصال بقاعدة البيانات " upload-images"
if (!$con) { die('Could not connect: ' .myaql_error()); }
رسالة الخطأ اثناء فشل الاتصال
2- صفحة ادخال بيانات بلغة html نقوم بتسميتها insert.html
<center>
<h1>Insert Item</h1>

<form action="insertitems.php" method="POST" enctype="multipart/form-data">
<table>






<tr>
<td>picture: </td><td><input type="file" name="image"></td>
</tr>

</table>
<input type="submit" value="  insert   ">
</form>
حيث ان :
action="insertitems.php" method="POST" enctype="multipart/form-data"
رابط توجية الفورم ونوعه
input type="file" name="image"
نوع الادخال " file" يستخدم لإرفاق الملفات وقمنا بتسمية الادخال بـ "image" حيث سيتم ربطة بالقاعدة لاحقا
input type="submit" value=" insert "
زر الارفاق ونوعه " submit" وقيمته (يمكن اضافة اي قيمة ترغب بها) " insert" 3- صفحة تاكيد الارسال بلغة php نقوم بتسميتها insertitems.php
<?php
require("db.php");



$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));



$query="INSERT INTO images VALUE('','$image')";
$result=@mysql_query($query);
$lastItemID = mysql_insert_id();
if($result)
{
echo"Insertion complete with ID  ".$lastItemID;
echo"<br /><a href=viewitems.php>Click here to view</a>";
}
else{echo"insertion failed";}?>

حيث ان :
require("db.php");
كود تضمين صفحة الاتصال بقاعدة البيانات وهو كود مهم لنجاح الاتصال
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
كود التعريف بحقل الادخال الذي قمنا بتسميتها سابقا "image" حيث ان $image هو الحقل الموجود بداخل قاعدة البيانات وهذه العميلة بمثابة ربط الحقل الموجود في الصفحة بالحقل الموجود بالقاعدة
$query="INSERT INTO images VALUE('','$image')";
كود الارسال الى جدول قاعدة البيانات وهو images وتحديدا بداخل الحقل $image وكما تلاحظ يوجد حقل فارغ يسبق حقل الصورة '' وهو في الحقيقة لحقل $id الموجود بادخل القاعدة وسبب تركه فارغنا اننا قمنا بتحديد نوع التعبئة سابقا auto اي تلقائي بمعنى عندما نقوم بارسال الصورة الى حقل الصورة بـ قاعدة البيانات يقوم حقل id بتعبئة نفسه تلقائيا على هذا النحو (1,2,3) الخ
$result=@mysql_query($query);
كود تنفيذ الاستعلام عن النتائج
$lastItemID = mysql_insert_id();
التعريف بكود طباعة المعرف الخاص بالصورة ونستخدمه مع كود رسالة نجاح الارسال تاابع الشرح
if($result)
كود الشرطية ونطلب منه في حالة ظهور النتائج بنجاح اطبع كل مما يلي :
echo"Insertion complete with ID ".$lastItemID;
رسالة نجاح الارسال يليه كود رقم المعرف الذي قمنا بتعريفه سابقا
كود طباعة رابط التوجيه لصفحة مشاهدة الصور المرفوعة
else{echo"insertion failed";}
كود الاستثناء ونطلب منه طباعة رسالة بفشل الارسال في حالة وجود اي حطأ
4- صفحة استعراض النتائج بصيغة php
<link type="text/css" rel="stylesheet" href="mystyle.css">
<?php
require("db.php");

$result = mysql_query("SELECT * FROM images");

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  
  

  echo '<td><img width=300 height=400 src="data:image/jpeg;base64,' 
  .base64_encode( $row['image']) .'"</td>';
   
  echo "</tr>";  
  }
?>
حيث ان :
require("db.php");
كود تضمين صفحة الاتصال بالسيرفر وقاعدة البيانات
$result = mysql_query("SELECT * FROM images");
كود سحب البيانات من جدول البيانات حيث ان $images هو اسم الجدول و "*" اي تحديد جميع محتويات الجدول
while($row = mysql_fetch_array($result))
كود استخراج البيانات على هيئة مصفوفة
echo '<td><img width=300 height=400 src="data:image/jpeg;base64,' 
  .base64_encode( $row['image']) .'"</td>';
كود طباعة النتيجة في صفوف متقابله وطلبنا منه اتسخراج جميع الصفوف التي بداخل الحقل $row['image']
ختاما تابع الفيديو لاستعراض السكربت النهائي

صورة من داخل جدول البيانات ونلاحظ نجاح رفع البيانات

جميع الحقوق محفوظه © مدونة فـاب

تصميم الورشه