صفحة 2 من 3 الأولىالأولى 123 الأخيرةالأخيرة
النتائج 16 إلى 30 من 45

الموضوع: [ درس ] برمجة منتدى صغير و بسيط, php + MySQL

  1. #16
    عضو نشيط
    تاريخ التسجيل
    Sep 2005
    المشاركات
    282


    موفق ان شاء الله






  2. #17


    axalb
    ان شاء الله اخى واتمنى انك تكون استفد

    العاطفي
    الشكر لله يا اخى

    العندليب
    الاستاذ الكبير شرف ليا زيارة الموضوع وان شاء الله نتعمل منك فى الامن

    موودي
    الف شكر اخى ودا شرف ليا التثبيت وارجو من الجميع الاستفادة وقريبا باقى الردوس

    Developer
    شكرا اخى على مرورك الكريم وياريت تجيب وصلة الموضوع لتكامل الموضوع

    زاهي الشوق
    الله يبارك فيك اخى






  3. #18
    مُجَاهِد سابقاً
    تاريخ التسجيل
    Apr 2004
    المشاركات
    12,000


    جزاك الله خير على الدرس الراائع ..

    كل الشكر والتقدير ..





    __________________
    استخدم خاصية تنبيه المشرفين للضرورة وعند ملاحظة موضوع يخالف قوانين منتديات سوالف وسيتم مراجعة الموضوع او المشاركة المبلغ عنها على الفور

  4. #19


    مشكور اخى مجاهد






  5. #20
    عضو سوبر نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    784


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





    __________________
    سبحان الله وبحمده .. سبحان الله العظيم
    I Love PHP
    I Love Swalif
    شكرا لكل من ساعدني:)

  6. #21


    السلام عليكم ورحمة الله وبركاته

    كتبت رد طويل وعلق المتصفح :anger2:

    حابدأ أتكلم عن الأمن في السكربتات التي عملت
    create_topic.php
    add_topic.php
    main_forum.php
    view_topic.php
    add_answer.php

    وحقسم كلامي لردود وإن شاء الله نقدر نوصل المعلومه البرمجيه.

    سأبدأ بالسكربت التالي:
    add_topic.php

    هذه السكربت يستقبل متغيرات من المشارك وهي كالتالي:
    $topic
    $detail
    $name
    $email

    الخوف من هذه المتغيرات إذا أرسل المشارك علامات حساسه مثل علامة التنصيص " أو علامة التنصيص المفرده ' او علامة الـ NULL أو علامة السلاش / .
    هذه العلامات الحساسه لها تأثير داخل جمل الـ SQL وعن طريقها تكتشف ثغرات الـ SQL Injection .
    لنرى جملة الـ SQL في السكربت وهي كالتالي:
    كود PHP:
    $sql="INSERT INTO $tbl_name(topic, detail, name, email, datetime)VALUES('$topic', '$detail', '$name', '$email', '$datetime')";
    $result=mysql_query($sql); 
    لاحظ المتغيرات التي يرسلها المشارك في الجمله ستجدها محوطه بعلامة '
    فإذا قام المشارك بوضعها في المتغيرات السابقه فسوف يؤدي هذا الى ظهور خطأ في جملة الـ SQL وبعدها يبدأ المشارك ( المخترق المخرب ) بإستثمار هذا الخطأ لعمل شيء ما يريده كالتعديل في موضوع اخر لا يخصه او حذف موضوع شخص اخر ......... الخ
    ولكن هناك نقطه يجب توضيحها
    قام مطوروا الـ php بوضع خاصيه داخل الـ php تسمى magic_quotes وهذه الخاصيه تقوم بأخذ المتغيرات والبحث عن العلامات الحساسه وتعطيلها بعلامة الـ / بحيث تصبح علامة التنصيص المفرده في مثالنا بعد إرسالها بالشكل التالي /'
    ولكن ماذا لو كانت هذه الخاصيه معطله داخل الـ php من قبل المستضيف مالذي سوف يحدث في مثالنا ؟؟
    سيحدث خطأ طبعاً لذلك يجب تأمين المتغيرات المرسله في حالة كانت هذه الخاصيه معطله .
    وتأمينها يتم بالكوود التالي:
    كود PHP:
    if (!get_magic_quotes_gpc()){
    $topic addslashes($topic);
    $detail addslashes($detail);
    $name addslashes($name);
    $email addslashes($email);

    هذا الكود يقوم بفحص خاصية magic_quotes فإذا كانت معطله قام بحماية المتغيرات المرسله في هذا السكربت من العلامات الحساسه.
    هذا الكوود يتم وضعه في بداية السكربت.


    يتبع ...






  7. #22


    بعد أن إنتهينا من سكربت add_topic.php سنبدأ بسكربت add_answer.php

    سكربت add_answer.php يستقبل المتغيرات التاليه من المشارك :
    $id
    $a_name
    $a_email
    $a_answer

    هناك أكثر من جملة SQL داخل السكربت وهي كالتالي:
    كود PHP:
    // Find highest answer number. 
    $sql="SELECT MAX(a_id) AS Maxa_id FROM $tbl_name WHERE question_id='$id'";
    $result=mysql_query($sql); 
    كود PHP:
    // Insert answer 
    $sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";
    $result2=mysql_query($sql2); 
    كود PHP:
    $tbl_name2="forum_question";
    $sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'";
    $result3=mysql_query($sql3); 
    وجميع جمل الـ SQL في السكربت تحتوي على المتغيرات المرسله وتمت إحاطتها بالعلامه الحساسه ' وهذا للتأكد من أن طريقة كتابة الجمله كان صحيح.

    ونفس الكلام الذي ذكرناه في الرد السابق بخصوص العلامات الحساسه سنكرره هنا لذلك سيتم إضافة الكوود التالي لتأمين هذه المتغيرات:
    كود PHP:
    if (!get_magic_quotes_gpc()){ 
    $id addslashes($id);
    $a_name addslashes($a_name);
    $a_email addslashes($a_email);
    $a_answer addslashes($a_answer);

    ويتم إضافة هذا الكوود في اول السكربت add_answer.php

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


    يتبع..






  8. #23


    بعد أن انتهينا من سكربتات الإرسال يأتي دور سكربتات عرض المعلومات الا وهي :
    main_forum.php
    view_topic.php

    سأبدا بسكربت
    main_forum.php

    هذا السكربت يقوم بالإستعلام من قاعدة البيانات عن معلومات معينه وبعد ذلك يقوم بعرض هذه المعلومات على المتصفح الخاص بالزائر بصيغة html ومن المعلوم عن رموز الـ html تبدأ بعلامة أصغر من > وتنتهي بعلامة أكبر من < والذي بداخلها يسمى بالوسم.
    فإذا قام المشارك بإرسال موضوع وكان أحد المتغيرات يحمل النص التالي:
    كود HTML:
    <script>alert('أهلا بكم');</script>
    فسوف يتم تنفيذ جافا سكربت في متصفح الزائر وهذا خطأ في طريقة عرض السكربت لهذا المتغير أدت إلى حدوث ذلك وهذه هي طريقة الثغرات التي تسمى XSS .
    لذلك الحل هو تحويل علامات الأكبر من والأصغر من الى رموز نصيه تسمى htmlentity وهي تتم في لغة الـ php بدالة htmlspecialchars .

    ولتأمين المتغيرات في هذا السكربت إبحث عن
    كود PHP:
    <tr>
    <td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td>
    <td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><BR></td>
    واستبدله بالتالي:
    كود PHP:
    <tr>
    <td bgcolor="#FFFFFF"><? echo htmlspecialchars($rows['id']); ?></td>
    <td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo htmlspecialchars($rows['id']); ?>"><? echo htmlspecialchars($rows['topic']); ?></a><BR></td>
    يتبع..






  9. #24


    بعد أن انتهينا من سكربت main_forum.php سنبدأ بسكربت view_topic.php

    ونفس الكلام الذي ذكرناه بخصوص طريقة العرض في السكربت السابق موجوده في سكربت view_topic.php

    لتأمين المتغيرات في هذا السكربت إبحث عن:
    كود PHP:
    <tr>
    <td bgcolor="#F8F7F1"><strong><? echo $rows['topic']; ?></strong></td>
    </tr>

    <tr>
    <td bgcolor="#F8F7F1"><? echo $rows['detail']; ?></td>
    </tr>

    <tr>
    <td bgcolor="#F8F7F1"><strong>By :</strong> <? echo $rows['name']; ?> <strong>Email : </strong><? echo $rows['email'];?></td>
    </tr>
    إستبدله بالتالي:
    كود PHP:
    <tr>
    <td bgcolor="#F8F7F1"><strong><? echo htmlspecialchars($rows['topic']); ?></strong></td>
    </tr>

    <tr>
    <td bgcolor="#F8F7F1"><? echo htmlspecialchars($rows['detail']); ?></td>
    </tr>

    <tr>
    <td bgcolor="#F8F7F1"><strong>By :</strong> <? echo htmlspecialchars($rows['name']); ?> <strong>Email : </strong><? echo htmlspecialchars($rows['email']);?></td>
    </tr>
    ابحث عن التالي أيضاً:
    كود PHP:
    <tr>
    <td width="18%" bgcolor="#F8F7F1"><strong>Name</strong></td>
    <td width="5%" bgcolor="#F8F7F1">:</td>
    <td width="77%" bgcolor="#F8F7F1"><? echo $rows['a_name']; ?></td>
    </tr>
    <tr>
    <td bgcolor="#F8F7F1"><strong>Email</strong></td>
    <td bgcolor="#F8F7F1">:</td>
    <td bgcolor="#F8F7F1"><? echo $rows['a_email']; ?></td>
    </tr>
    <tr>
    <td bgcolor="#F8F7F1"><strong>Answer</strong></td>
    <td bgcolor="#F8F7F1">:</td>
    <td bgcolor="#F8F7F1"><? echo $rows['a_answer']; ?></td>
    </tr>
    استبدله بالاتي:
    كود PHP:
    <tr>
    <td width="18%" bgcolor="#F8F7F1"><strong>Name</strong></td>
    <td width="5%" bgcolor="#F8F7F1">:</td>
    <td width="77%" bgcolor="#F8F7F1"><? echo htmlspecialchars($rows['a_name']); ?></td>
    </tr>
    <tr>
    <td bgcolor="#F8F7F1"><strong>Email</strong></td>
    <td bgcolor="#F8F7F1">:</td>
    <td bgcolor="#F8F7F1"><? echo htmlspecialchars($rows['a_email']); ?></td>
    </tr>
    <tr>
    <td bgcolor="#F8F7F1"><strong>Answer</strong></td>
    <td bgcolor="#F8F7F1">:</td>
    <td bgcolor="#F8F7F1"><? echo htmlspecialchars($rows['a_answer']); ?></td>
    </tr>

    ابحث عن التالي:
    كود PHP:
    <td><input name="id" type="hidden" value="<? echo $id?>"></td>
    استبدله بالتالي:
    كود PHP:
    <td><input name="id" type="hidden" value="<? echo htmlspecialchars($id); ?>"></td>

    انتهى






  10. #25


    ما شاء الل اخى ما شاء الله بجد احنا كدا ممكن نعمل فريق لبرمجة منتدى عربى يتحدى كل الشركات

    فأنا اول من ينضم
    واستاى العندليب ثانى من انضم الى الفريق

    اين انتم يا مبرمجى العرب لمرة واحدة نتحد حتى نصل الى شىء

    نتحدث نتناقش حتى نصل ال اعلى مستوى من الجدية والعمل






  11. #26


    اقتباس المشاركة الأصلية كتبت بواسطة Mr.eslam
    ما شاء الل اخى ما شاء الله بجد احنا كدا ممكن نعمل فريق لبرمجة منتدى عربى يتحدى كل الشركات

    فأنا اول من ينضم
    واستاى العندليب ثانى من انضم الى الفريق

    اين انتم يا مبرمجى العرب لمرة واحدة نتحد حتى نصل الى شىء

    نتحدث نتناقش حتى نصل ال اعلى مستوى من الجدية والعمل

    أكمل أنا معك متابع
    لا تسأل عن أحد وخلينا في المهم

    تسجيل حضور





    __________________
    al3ndaleeb[@]uk2.net

  12. #27


    اخى عندليب اتمنى ان اكون لا اخيب ظنك بى واتمنى ان ترى منى ما هو جديد
    ودعنا ننطلق

    نكمل ما بدأناه
    اليوم تعرف طريقة استرجاع باسورد عضو عند نسيه كلمة المرور هذا بحث php من خلاله تستطيع
    تعليم كيقية ارسال كلمة السر للاعضاء عن طريق عنوان البرسد الالكترونى اذا نسوا كلمة السر

    مارك جاكسن أحد أعضاءنا لَكنَّه نَسى كلمةَ سره للإتَّصالِ بالموقع. نحن سَنُرسلُه كلمةَ سر إلى عنوان بريده الإلكتروني.

    في هذا البحثِ يَنشئ ملفَ وقاعدةَ بيانات
    1. نسيت _ كلمة سر forgot_password.php
    2.ارسل كلمة السر send_password_ac.php

    قاعدة البيانات
    1. الأعضاء . members

    Syntax
    كود:
    $email_to=$_POST['email_to'];
    
    "SELECT password FROM table_name WHERE email='$email_to'";
    1/ انشاء قاعدة بيانات الاعضاء Create table "members"
    هذة قاعدة بياناتنا وهذا كلمة السر الخاصية بمارك"951412" وهذا بريده الالكترونى"mark@phpeaststep.com"

    الكود
    كود:
    CREATE TABLE `members` (
    `id` int(4) NOT NULL auto_increment,
    `name` varchar(65) NOT NULL default '',
    `lastname` varchar(65) NOT NULL default '',
    `email` varchar(65) NOT NULL default '',
    `password` varchar(65) NOT NULL default '',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; 
    -- 
    -- Dumping data for table `test_mysql`
    -- 
    
    INSERT INTO `members` VALUES (1, 'Billly', 'Blueton', 'email_1@somewhere.com', '789789');
    INSERT INTO `members` VALUES (2, 'Jame', 'Campbell', 'email_2@somewhere.com', '654123ddf');
    INSERT INTO `members` VALUES (3, 'Mark', 'Jackson', 'email_4@somewhere.com', '951412dwe');
    * يَستبدلُ البريد إلكتروني 1, 2 , 3 بعنوان بريدكَ الإلكتروني للإختبار

    2/نسيت كلمة السر forgot_password.php

    انشىء اختيار يجيب عليه حتى بتم ارسال له كلمة السر فمثلا اليربد الالكترونى
    كود:
    <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
    <tr>
    <form name="form1" method="post" action="send_password_ac.php">
    <td width="25%"><strong>Enter your email : </strong></td>
    <td width="75%"><input name="email_to" type="text" id="mail_to" size="25">
    <input type="submit" name="Submit" value="Submit">
    </td>
    </form>
    </tr>
    </table>
    3/ ارسال كلمة السرsend_password_ac.php

    ما العمل؟
    1. بعد ان تلقى الشخص جوابا بان كلمة السر سوف ترسل اليه الشكلَ الى بريده الالكترونى
    2 . فى ارسال كلمة السر send_password_ac.php نحن يَجِبُ أَنْ نَجِدَ هذا عنوان البريد الإلكتروني في قاعدةِ بياناتنا.
    3. إذا وَجدَ هذا البريد الإلكتروني في قاعدةِ بياناتنا يَعطي كلمةَ سر إلى الاسمِ المتغيّرِ "$ _ كلمة سركَ "ويُرسلُ هذه المتغيّرِ الى البريد الإلكتروني الموجود .
    4. إنْ لمْ يُوْجَدُ هذا البريد الإلكتروني في قاعدةِ البيانات، رسالة عروضِ "غير موجود بريدكَ الإلكتروني في قاعدةِ بياناتنا"

    كود:
    <?
    
    $host="localhost"; // Host name 
    $username=""; // Mysql username 
    $password=""; // Mysql password 
    $db_name=""; // Database name 
    
    
    //Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect to server"); 
    mysql_select_db("$db_name")or die("cannot select DB");
    
    // value sent from form 
    $email_to=$_POST['email_to'];
    
    // table name 
    $tbl_name=members; 
    
    // retrieve password from table where e-mail = $email_to(mark@phpeasystep.com) 
    $sql="SELECT password FROM $tbl_name WHERE email='$email_to'";
    $result=mysql_query($sql);
    
    // if found this e-mail address, row must be 1 row 
    // keep value in variable name "$count" 
    $count=mysql_num_rows($result);
    
    // compare if $count =1 row or not 
    if($count==1){
    
    $rows=mysql_fetch_array($result);
    
    // keep password in $your_password
    $your_password=$rows['password'];
    
    
    // ---------------- SEND MAIL FORM ---------------- 
    
    // send e-mail to ...
    $to=$email_to; 
    
    // Your subject 
    $subject="Your password here"; 
    
    // From 
    $header="from: your name <your email>"; 
    
    // Your message 
    $messages= "Your password for login to our website \r\n";
    $messages.="Your password is $your_password \r\n";
    $messages.="more message... \r\n";
    
    // send email 
    $sentmail = mail($to,$subject,$messages,$header); 
    
    }
    
    // if $count not equal 1 
    else {
    echo "Not found your email in our database";
    } 
    
    // if your email succesfully sent 
    if($sentmail){
    echo "Your Password Has Been Sent To Your Email Address.";
    }
    else {
    echo "Cannot send password to your e-mail address";
    }
    
    ?>
    اسف لستخدامى اسم اجنبى لان هذا ما موجود فى الصور








  13. درس مفيد جدا جدا


    بالتوفيق انشاء الله .,..





    __________________
    ownersınnı
    ALdiraZi BLoOoG | Contact Me | lt.tl - shorten your URL

  14. #29


    مرحباً اخي Mr.eslam

    الصراحة موضوع حول جداً بل مميز

    لي كذا اقتراح

    الأول انشاء ملف sconfig.php
    يحتوي على بينات الاتصال بالقاعدة
    ويتم استدعائه من قبل ملف global.php
    الذي يقوم بدوره بعمل اتصال بالقاعدة وينفذ الاوامر المرسلة له
    ويغلق الاتصال

    بكذا بترتاح من تكرار المتغيرات
    ولا تنسى تفرغها
    وانا من المتابعين اول بأول

    وإذا ما تمكنت من عمل الي ذكرته لك
    انا ممكن اسويه لك
    لكن واضح عليك ما شاء الله باشا





    __________________
    http://www.vb2plus.com/index.php?action=news&id=12
    أقوى نظام بنرات عرفته المنتديات



  15. السلام عليكم

    ممتاز جداً ، ووفقك الله
    اود ان اشارك ولو بشي بسيط

    تشفير كلمة المرور في قاعدة البيانات ،
    تشفير الباسويرد عن طريق الدالة MD5 وهي احد دوال التشفير وبكل تاكيد الكل يعرفها
    ،،، طبعا سوف يتم تخزين كلمة المرور في قاعدة البيانات مشفرة
    واتمنى قبول مقترحي هذا ،،،،
    (ملاحظة: مستعد ان ابرمج لك كود ملف الـlogin و كود ملف register )
    بس في بالي سؤال ، ماهي التقنية التي تود استخدامها بالنسبة للانترفيس اي هل تريد برمجة نظام قوالب خاص ام تريد ان تستخدم نظام قوالب موجود !!!
    ولك ألف تحيه ، وسوف اعود مجددا





    __________________
    ################################ PHP.SD ########
    We're not first,But We're the BEST

    ##





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

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