صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 26

الموضوع: الدورة الإحترافية لجدول البيانات المؤقتة _ ب - الجلسات

  1. #1
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    169

    الدورة الإحترافية لجدول البيانات المؤقتة _ ب - الجلسات



    بإسم الله الرحمان الرحيم
    ((مَا نُنَزِّلُ الْمَلاَئِكَةَ إِلاَّ بِالْحَقِّ وَمَا كَانُوا إِذًا مُنْظَرِينَ)) (الحجر/8).
    السلام عليكم و رحمة الله و بركاته

    موضوع هدا الجزء من الدورة هو : الجلسات

    عادة يتم حفظ الجلسات عن طريق دالة session_start في php أو عن طريق القطع المعلوماتية التي يتم حفظها في جهاز المستخدم و المعروفة بالكوكيز
    و كلتا الطريقتين لهما عيوب و مميزات مختلفة في ما بينهما

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

    لن نقوم بحفظ معلومات في الكوكيز و دلك لزيادة مستوى الأمان في برمجياتنا

    لنبدأ العمل على بركة الله
    و الأمور البديهية لن أتطرق لشرحها في هدا الدرس

    في صفحة تسجيل الدخول login

    الاستعلام عن المعلومات التي قام المستخدم بإدخالها و حساب عدد النتائج في قاعدة ابيانات
    كود PHP:
    $count=mysql_num_rows(mysql_query("SELECT user, pass FROM usr WHERE user='$user' and pass='password'")); 
    لن يتم تسجيل الجلسة إلا إدا كان عدد نتائج الإستعلام السابق هو 1

    كود PHP:
    if($count==1){
    //تسجيل الجلسة

    داخل شرط تسجيل الجلسة سنقوم بالعمليات التالية
    1. تسجيل الجلسة
    2. إدخال معلومات الجلسة إلى جدول البيانات المؤقتة في قاعدة البيانات
    3. حفظ معرف الجلسة في الكوكيز
    1 تسجيل الجلسة
    كود PHP:
    session_start();
    $_SESSION['usr'] = $user

    2 تسجيل معلومات الجلسة في قاعدة البيانات
    هده العملية ستتطلب منا توفير المتغيرات اللازمة لإدخالها إلى الجدول الدي انشئناه في الجزء الأول من الدورة:

    id الرقم الترتيبي . سيتم إنشائه تلقائيا حسب التسلسل الزمني للمعلومات المدخلة
    type نوع العملية سيكون تابتا في هدا الدرس
    كود PHP:
    $type "session"
    ip رقم الأيبي سنستخرجه من المصفوفة $_SERVER
    كود PHP:
    $ip $_SERVER['REMOTE_ADDR']; 
    usr اسم المستخدم تم تعريفه مسبقا و هو $user
    crc هنا سنقوم بإدخال رمز عشوائي نستخدمه في تخديد مكان المعلومات التي ادخلناها و الرجوع إليها في أي وقت

    و سننشئه عن طريق الدالة التالية
    كود PHP:
    function rand_string($num_chars){
    $chars=array("a","A","b","8","B","c","C","9","-","d","D","0","e","1","E","f","F","g","G","h","2","H","i","I","j","J","k","3","K","7","l","_","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","4","S","t","T","u","U","6","v","V","w","W","x","5","X","y","Y","z","Z",);
    $string=array_rand($chars,$num_chars);
        foreach(
    $string as $s){
        @
    $ret.=$chars[$s];
        }
    return 
    $ret;

    المتغير $num_chars للدالة هو عدد الحروف المراد تكوين الرمز منها
    لنختر 20 تم تخزين النتيجة في متغير
    كود PHP:
    $crc rand_string(20); 
    time مدة الصلاحية لتكن إفتراضيا ساعة واحدة إنطلاقا من فترة تسجيل الدخول = 3600 ثانية
    كود PHP:
    $time time() + 3600
    الإستعلام بكل بساطة :
    كود PHP:
    mysql_query("INSERT INTO azizsoft_tmp(ip,type,crc,time,usr)VALUES('$ip','$type','$crc','$time','$user')"); 
    مع كل عملية تسجيل دخول سيتم إدخال سجل إلى قاعدة البيانات



    3 حفظ معرف الجلسة في الكوكيز
    حتى نبقي المستخدم متصلا مع السجل الخاص بجلسته في قاعدة البيانات سنقوم بوضع الرمز العشوائي الدي إحتفظنا به في المتغير $crc في الكوكيز
    إسم متغير الكوكيز : sessioncrc
    قيمته : $crc و هو الرمز العشوائي الدي أدخلناه إلى قاعدة البيانات
    مدة صلاحيته : $time نفس المدة التي أدخلناها إلى قاعدة البيانات

    كود PHP:
    setcookie('sessioncrc'$crc$time); 

    الأن إلى توضيف هده البيانات و الشرط التحققي من وجود الجلسة

    الشرط سيكون متشعب قليلا و سأحاول تبسيطه لكم ما أمكن

    هيكل الشرط الأول:
    و سيكون ثلاتيا ==> الجلسة؟ . الكوكيز؟ . لاشيئ؟
    الكود مبسط
    كود PHP:
    if(التحقق من وجود الجلسة){
    //إدا تم العتور على الجلسة يتوقف الشرط هنا
    }elseif(التحقق من وجود الكوكيز){
    //هنا التحقق من وجود الكوكيز لإستخدامه في جلب معلومات الجلسة في قاعدة البيانات
    }else{
    //إدا لم يتم تحقق أي من الشرطين السابقين فمعناه عدم وجود أي جلسة

    الأن سننتقل إلى التفصيل في الكود
    إدا إعتبرنا أن متغير الجلسة الدي نبحت عنه هو $_SESSION['usr'] و نريد تخزينه في المتغير $username
    فسيكون الجزء الأول من الشرط هكدا
    كود PHP:
    if(isset($_SESSION['usr'])){
    $username $_SESSION['usr'];

    إلى الجزء التاني من الشرط و هو الاصعب نظرا لأنه هو الأخر سيحتوي على شرط جديد و إستعلام إلى قاعدة البيانات
    ننشئ اولا متغيرا يحمل التوقيت الحالي للتحقق من صلاحية الجلسة الموجودة في قاعدة البيانات

    كود PHP:
    $time time(); 
    تم الإستعلام
    باللغة العربية : تحديد المدخلات الموجودة في جدول azizsoft_tmp دات النوع session و رقم الأيبي هو نفسه للمستخدم و معرف الجلسة هو الموجود في الكوكيز $_COOKIE['sessioncrc'] و التاريخ يجب أن يكون أكبر من التاريخ الحالي الموجود في المتغير $time

    بلغة php
    كود PHP:
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    حساب عدد السجلات المحصل عليها من الإستعلام
    كود PHP:
    $countsession=mysql_num_rows($querysession); 
    إدا كان عدد السجلات هو 1
    كود PHP:
    if($countsession==1){
    //تخزين بيانات السجل في مصفوفة
    $resultsession = @mysql_fetch_array($querysession);
    //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
    $_SESSION['usr'] = $resultsession['usr'];
    $username $resultsession['usr'];
    }else{
    //لا توجد جلسة

    هدا كله داخل الجزء التاني من الشرط الثلاتي
    أي:
    كود PHP:
    elseif(isset($_COOKIE['sessioncrc'])) {
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    $countsession=mysql_num_rows($querysession);
        if(
    $countsession==1){
        
    //تخزين بيانات السجل في مصفوفة
        
    $resultsession = @mysql_fetch_array($querysession);
        
    //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
        
    $_SESSION['usr'] = $resultsession['usr'];
        
    $username $resultsession['usr'];
        }else{
         
    //لا توجد جلسة
        
    }
     

    الجزء الإخير من الشرط التلاتي معروف
    كود PHP:
    else{
    //لا توجد جلسة

    الشرط التلاتي كاملا
    كود PHP:
    if(isset($_SESSION['usr'])){
    $username $_SESSION['usr'];
    }  
    elseif(isset(
    $_COOKIE['sessioncrc'])) {
    $time time();  
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    $countsession=mysql_num_rows($querysession);
        if(
    $countsession==1){
        
    //تخزين بيانات السجل في مصفوفة
        
    $resultsession = @mysql_fetch_array($querysession);
        
    //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
        
    $_SESSION['usr'] = $resultsession['usr'];
        
    $username $resultsession['usr'];
        }else{
         
    //لا توجد جلسة
        
    }
     
    } else{
    //لا توجد جلسة

    لأي إستفسارات حول الدرس لا تتردد بطرحها

    الشرح بواسطة عزيز سوفت
    حقوق النشر لكل مسلم





    الصور المرفقة الصور المرفقة  


  2. #2
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    169


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

    كود HTML:
    [size=3][font=Times New Roman]بإسم الله الرحمان الرحيم[/font][/size]
    [b][color=red][font=Traditional Arabic]((مَا نُنَزِّلُ الْمَلاَئِكَةَ إِلاَّ بِالْحَقِّ وَمَا كَانُوا إِذًا مُنْظَرِينَ)) [/font][/color][/b][b][font=Traditional Arabic][size=3](الحجر/8).[/size][/font][/b]
    [size=3][font=Times New Roman]السلام عليكم و رحمة الله و بركاته[/font][/size]
     
    [size=3][font=Times New Roman]موضوع هدا الجزء من الدورة هو : الجلسات[/font][/size]
     
    [size=3][font=Times New Roman]عادة يتم حفظ الجلسات عن طريق دالة session_start في php أو عن طريق القطع المعلوماتية التي يتم حفظها في جهاز المستخدم و المعروفة بالكوكيز[/font][/size]
    [size=3][font=Times New Roman]و كلتا الطريقتين لهما عيوب و مميزات مختلفة في ما بينهما[/font][/size]
     
    [size=3][font=Times New Roman]سأحاول في هدا الدرس أن اضع بين أيديكم طريقة مبسطة للدمج بين الجلسات و الكوكيز عن طريق الاعتماد على قاعدة البيانات لحفظ المعلومات الخاصة بالجلسة[/font][/size]
     
    [size=3][font=Times New Roman]لن نقوم بحفظ معلومات في الكوكيز و دلك لزيادة مستوى الأمان في برمجياتنا[/font][/size]
     
    [size=3][font=Times New Roman]لنبدأ العمل على بركة الله[/font][/size]
    [size=3][font=Times New Roman]و الأمور البديهية لن أتطرق لشرحها في هدا الدرس[/font][/size]
     
    [size=3][font=Times New Roman]في صفحة تسجيل الدخول login[/font][/size]
     
    [size=3][font=Times New Roman]الاستعلام عن المعلومات التي قام المستخدم بإدخالها و حساب عدد النتائج في قاعدة ابيانات[/font][/size]
    [php]$count=mysql_num_rows(mysql_query("SELECT user, pass FROM usr WHERE user='$user' and pass='password'"));
    [/php]
     
    لن يتم تسجيل الجلسة إلا إدا كان عدد نتائج الإستعلام السابق هو 1
     
    [php]if($count==1){
    //تسجيل الجلسة
    }[/php]
     
    داخل شرط تسجيل الجلسة سنقوم بالعمليات التالية
    [list=1][*]تسجيل الجلسة[*]إدخال معلومات الجلسة إلى جدول البيانات المؤقتة في قاعدة البيانات[*]حفظ معرف الجلسة في الكوكيز[/list]1 تسجيل الجلسة
    [php]session_start();
    $_SESSION['usr'] = $user;[/php]
     
     
    2 تسجيل معلومات الجلسة في قاعدة البيانات
    هده العملية ستتطلب منا توفير المتغيرات اللازمة لإدخالها إلى الجدول الدي انشئناه في الجزء الأول من الدورة:
     
    id الرقم الترتيبي . سيتم إنشائه تلقائيا حسب التسلسل الزمني للمعلومات المدخلة
    type نوع العملية سيكون تابتا في هدا الدرس
    [php]$type = "session";[/php]
     
    ip رقم الأيبي سنستخرجه من المصفوفة $_SERVER
    [php]$ip = $_SERVER['REMOTE_ADDR'];[/php]
     
    usr اسم المستخدم تم تعريفه مسبقا و هو $user
    crc هنا سنقوم بإدخال رمز عشوائي نستخدمه في تخديد مكان المعلومات التي ادخلناها و الرجوع إليها في أي وقت
     
    و سننشئه عن طريق الدالة التالية
    [php]function rand_string($num_chars){
    $chars=array("a","A","b","8","B","c","C","9","-","d","D","0","e","1","E","f","F","g","G","h","2","H","i","I","j","J","k","3","K","7","l","_","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","4","S","t","T","u","U","6","v","V","w","W","x","5","X","y","Y","z","Z",);
    $string=array_rand($chars,$num_chars);
        foreach($string as $s){
        @$ret.=$chars[$s];
        }
    return $ret;
    }[/php]
    المتغير $num_chars للدالة هو عدد الحروف المراد تكوين الرمز منها
    لنختر 20 تم تخزين النتيجة في متغير
    [php]$crc = rand_string(20);[/php]
    time مدة الصلاحية لتكن إفتراضيا ساعة واحدة إنطلاقا من فترة تسجيل الدخول = 3600 ثانية
    [php]$time = time() + 3600;[/php]
     
    الإستعلام بكل بساطة : 
    [php]mysql_query("INSERT INTO azizsoft_tmp(ip,type,crc,time,usr)VALUES('$ip','$type','$crc','$time','$user')");[/php]
     
    مع كل عملية تسجيل دخول سيتم إدخال سجل إلى قاعدة البيانات
     
    [IMG]http://www.swalif.net/softs/attachment.php?attachmentid=43472&stc=1&d=1038943990[/IMG]
     
    3 حفظ معرف الجلسة في الكوكيز
    حتى نبقي المستخدم متصلا مع السجل الخاص بجلسته في قاعدة البيانات سنقوم بوضع الرمز العشوائي الدي إحتفظنا به في المتغير $crc في الكوكيز
    إسم متغير الكوكيز : sessioncrc
    قيمته : $crc و هو الرمز العشوائي الدي أدخلناه إلى قاعدة البيانات
    مدة صلاحيته : $time نفس المدة التي أدخلناها إلى قاعدة البيانات
     
    [php]setcookie('sessioncrc', $crc, $time);[/php]
     
     
    الأن إلى توضيف هده البيانات و الشرط التحققي من وجود الجلسة
     
    الشرط سيكون متشعب قليلا و سأحاول تبسيطه لكم ما أمكن
     
    هيكل الشرط الأول:
    و سيكون ثلاتيا ==> الجلسة؟ . الكوكيز؟ . لاشيئ؟
    الكود مبسط
    [php]if(التحقق من وجود الجلسة){
    //إدا تم العتور على الجلسة يتوقف الشرط هنا
    }elseif(التحقق من وجود الكوكيز){
    //هنا التحقق من وجود الكوكيز لإستخدامه في جلب معلومات الجلسة في قاعدة البيانات
    }else{
    //إدا لم يتم تحقق أي من الشرطين السابقين فمعناه عدم وجود أي جلسة
    }[/php]
     
    الأن سننتقل إلى التفصيل في الكود
    إدا إعتبرنا أن متغير الجلسة الدي نبحت عنه هو $_SESSION['usr'] و نريد تخزينه في المتغير $username
    فسيكون الجزء الأول من الشرط هكدا
    [php]if(isset($_SESSION['usr'])){
    $username = $_SESSION['usr'];
    }[/php]
    إلى الجزء التاني من الشرط و هو الاصعب نظرا لأنه هو الأخر سيحتوي على شرط جديد و إستعلام إلى قاعدة البيانات
    ننشئ اولا متغيرا يحمل التوقيت الحالي للتحقق من صلاحية الجلسة الموجودة في قاعدة البيانات
     
    [php] 
    $time = time();
    [/php]
    تم الإستعلام
    باللغة العربية : تحديد المدخلات الموجودة في جدول azizsoft_tmp دات النوع session و رقم الأيبي هو نفسه للمستخدم و معرف الجلسة هو الموجود في الكوكيز $_COOKIE['sessioncrc'] و التاريخ يجب أن يكون أكبر من التاريخ الحالي الموجود في المتغير $time
     
    بلغة php 
    [php]$querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    [/php]
     
    حساب عدد السجلات المحصل عليها من الإستعلام
    [php]$countsession=mysql_num_rows($querysession);[/php]
    إدا كان عدد السجلات هو 1
    [php]if($countsession==1){
    //تخزين بيانات السجل في مصفوفة
    $resultsession = @mysql_fetch_array($querysession);
    //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
    $_SESSION['usr'] = $resultsession['usr'];
    $username = $resultsession['usr'];
    }else{
    //لا توجد جلسة
    }[/php]
    هدا كله داخل الجزء التاني من الشرط الثلاتي
    أي:
    [php]elseif(isset($_COOKIE['sessioncrc'])) {
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    $countsession=mysql_num_rows($querysession);
        if($countsession==1){
        //تخزين بيانات السجل في مصفوفة
        $resultsession = @mysql_fetch_array($querysession);
        //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
        $_SESSION['usr'] = $resultsession['usr'];
        $username = $resultsession['usr'];
        }else{
         //لا توجد جلسة
        }
     
    }[/php]
     
    الجزء الإخير من الشرط التلاتي معروف
    [php]else{
    //لا توجد جلسة
    }[/php]
     
    الشرط التلاتي كاملا
    [php]if(isset($_SESSION['usr'])){
    $username = $_SESSION['usr'];
    }  
    elseif(isset($_COOKIE['sessioncrc'])) {
    $time = time();  
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    $countsession=mysql_num_rows($querysession);
        if($countsession==1){
        //تخزين بيانات السجل في مصفوفة
        $resultsession = @mysql_fetch_array($querysession);
        //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
        $_SESSION['usr'] = $resultsession['usr'];
        $username = $resultsession['usr'];
        }else{
         //لا توجد جلسة
        }
     
    } else{
    //لا توجد جلسة
    }  
    [/php]
    لأي إستفسارات حول الدرس لا تتردد بطرحها 
     
    الشرح بواسطة عزيز سوفت 
    حقوق النشر لكل مسلم







  3. #3


    الف شكر على الشرح الاكثر من رائع

    فيه غلطة سقطت منك سهواً

    نسيت تضيف $ على متغير الباسورد
    كود PHP:
    $count=mysql_num_rows(mysql_query("SELECT user, pass FROM usr WHERE user='$user' and pass='password'")); 
    بعد التصحيح

    كود PHP:
    $count=mysql_num_rows(mysql_query("SELECT user, pass FROM usr WHERE user='$user' and pass='$password'")); 
    وشاكر ومقدر لك هذا المجهود





    __________________
    +======================+
    شبكة تصميم لتطوير المواقع
    www.tsmim.com
    سكربتات حصرية - وتصاميم مميزة لموقعك
    +======================+

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    509


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

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

    شكرا جزيلا .





    __________________
    EbNCaNa اخوكم ابن قانا

    [درس] قائمة بريدية بأسهل الطرق بواسطة PHP

    [توقيعك يجب أن لا يكون أطول من 400 حرف يتضمن تجاوز كود المنتدى] - الى متى المعاناة يا حضرة الأدارة ؟

  5. #5
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    169


    Abosaleh_2003
    مشكور على الرد و التنبيه و لا عدمناك يا الغالي

    EbNCaNa
    حسب علمي لا يمكن إختراق الجلسة إلا إدا تم إختراق السيرفر لأن معلومات الجلسة يتم حفضها في السيرفر عكس الكوكيز
    لكن ما يعيبها أنها تنتهي بمجرد إغلاق الصفحة
    ملاحظة : الكوكيز الدي إستخدمته في الشرح لا يمكن التلاعب به أبدا لأنه مرتبط برقم أيبي الجهاز و لا يمكن سرقته و إستخدامه على جهاز أخر






  6. #6
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    509


    شكرا اخوي على التوضيح وبارك الله فيك .





    __________________
    EbNCaNa اخوكم ابن قانا

    [درس] قائمة بريدية بأسهل الطرق بواسطة PHP

    [توقيعك يجب أن لا يكون أطول من 400 حرف يتضمن تجاوز كود المنتدى] - الى متى المعاناة يا حضرة الأدارة ؟

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Apr 2004
    المشاركات
    236


    جزاك الله كل خير ..
    الدورة تستحق المتابعة من الموضوع الاول و و هذا الموضوع أيضاً
    جاري التطبيق ..





    __________________
    مشاريعي الحالية :
    الحوارات |||||||||| 90%
    الأخبار |||||||||| 5%
    آخر |||||||||| 40%

  8. #8
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    509


    اخوي بس 3 ملاحظات اذا سمحت :

    1-

    كود PHP:
    elseif(isset($_COOKIE['sessioncrc'])) {
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    $countsession=mysql_num_rows($querysession);
        if(
    $countsession==1){
        
    //تخزين بيانات السجل في مصفوفة
        
    $resultsession = @mysql_fetch_array($querysession);
        
    //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
        
    $_SESSION['usr'] = $resultsession['usr'];
        
    $username $resultsession['usr'];
        }else{
         
    //لا توجد جلسة
        
    }
     

    في نهاية هذا المقطع لا داعي لأن يكون

    كود PHP:
     }else{
         
    //لا توجد جلسة
        


    لا حاجة لها لأنه عندما ينتهي الشرط الكامل هناك شرط مشابه ويؤدي نفس الوظيفة ... يمكن ان يؤدي وجود شرطين لعدم فهم المبتدئين ليس الا .


    2- لماذا الحاجة لوجود الحقل tmp_type في الجدول ؟؟ لا يوجد اي وظيفة يؤديها هذا الحقل ؟


    3- ينقص النظام أمر لحذف السجلات المنتهية صلاحيتها وهو امر مهم جدي برأيي .





    التعديل الأخير تم بواسطة EbNCaNa ; 06-12-2008 الساعة 07:13 PM
    __________________
    EbNCaNa اخوكم ابن قانا

    [درس] قائمة بريدية بأسهل الطرق بواسطة PHP

    [توقيعك يجب أن لا يكون أطول من 400 حرف يتضمن تجاوز كود المنتدى] - الى متى المعاناة يا حضرة الأدارة ؟

  9. #9
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    93


    موضوع رائع يستحق المتابعة ،،،






  10. #10
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    169


    مشكورين على الردود المشجعة

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

    2 - جدول البيانات المؤقتة يؤدي عدة وظائف سنتعرف عليها لاحقا إن شاء الله و يمكن إستخدام الحقل tmp_type للتفريق بين أنواع الوضائف التي تم تسجيل الإدخال من أجلها
    في هدا الموضوع حددنا قيمة الحقل إلى session

    يمكن تغيرها إلى active إدا إستخدمنا الإدخال لأجل تنشيط العضويات
    و ستتبين لك الأهمية الفائقة التي أنشأنا لأجلها هدا الحقل في الأجزاء القادمة إن شاء الله

    3 - إن شاء الله في الاجزاء القادمة

    وهو امر مهم جدي برأيي
    أمر مهم فقط للحفاض على حجم قاعدة البيانات من التضخم المتسارع
    أما صلاحية الإدخال فهي محدودة بواسة الحقل tmp_time

    و في النهاية ما أنا إلا بشر يخطئ و يصيب
    و شاكر لك جدا هده الملاحظات الهامة
    أخوك في الله عزيز





    التعديل الأخير تم بواسطة azizsoft ; 06-12-2008 الساعة 11:03 PM

  11. #11
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    509


    فهمت عليك اخوي ... وبخصوص الملاحظة الثانية ... ممكن نستعمل هالشي لتنشيط العضويات او في حالة " نسيت كلمة المرور " الخ ...

    الى الامام اخوي واتمنى المتابعة في عملك الرائع .





    __________________
    EbNCaNa اخوكم ابن قانا

    [درس] قائمة بريدية بأسهل الطرق بواسطة PHP

    [توقيعك يجب أن لا يكون أطول من 400 حرف يتضمن تجاوز كود المنتدى] - الى متى المعاناة يا حضرة الأدارة ؟

  12. #12
    عضو نشيط
    تاريخ التسجيل
    Apr 2004
    المشاركات
    236


    بعد التطبيق

    هناك خطأ بسيط في ال elseif

    كود PHP:
    if(isset($_SESSION['usr'])){
    $username $_SESSION['usr'];
    }  
    elseif(isset(
    $_COOKIE['sessioncrc'])) {
    $time time();  
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    $countsession=mysql_num_rows($querysession);
        if(
    $countsession==1){
        
    //تخزين بيانات السجل في مصفوفة
        
    $resultsession = @mysql_fetch_array($querysession);
        
    //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
        
    $_SESSION['usr'] = $resultsession['usr'];
        
    $username $resultsession['usr'];
        }else{
         
    //لا توجد جلسة
        
    }
     
    } else{
    //لا توجد جلسة

    الخطأ

    كود PHP:

    و الكود الصحيح

    كود PHP:
    if(isset($_SESSION['usr'])){
    $username $_SESSION['usr'];
    }  
    elseif(isset(
    $_COOKIE['sessioncrc'])) {
    $time time();  
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    $countsession=mysql_num_rows($querysession);
        if(
    $countsession==1){
        
    //تخزين بيانات السجل في مصفوفة
        
    $resultsession = @mysql_fetch_array($querysession);
        
    //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
        
    $_SESSION['usr'] = $resultsession['usr'];
        
    $username $resultsession['usr'];
       }
       }else{
         
    //لا توجد جلسة
        
    }
     
    } else{
    //لا توجد جلسة

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





    __________________
    مشاريعي الحالية :
    الحوارات |||||||||| 90%
    الأخبار |||||||||| 5%
    آخر |||||||||| 40%

  13. #13
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    169


    فهمت عليك اخوي ... وبخصوص الملاحظة الثانية ... ممكن نستعمل هالشي لتنشيط العضويات او في حالة " نسيت كلمة المرور " الخ ...
    تماما

    الى الامام اخوي واتمنى المتابعة في عملك الرائع .
    بارك الله فيك
    إن شاء الله الجزئ القادم في القريب العاجل






  14. #14
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    169


    بعد التطبيق

    هناك خطأ بسيط في ال elseif

    كود PHP:
    if(isset($_SESSION['usr'])){
    $username $_SESSION['usr'];
    }  
    elseif(isset(
    $_COOKIE['sessioncrc'])) {
    $time time();  
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    $countsession=mysql_num_rows($querysession);
        if(
    $countsession==1){
        
    //تخزين بيانات السجل في مصفوفة
        
    $resultsession = @mysql_fetch_array($querysession);
        
    //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
        
    $_SESSION['usr'] = $resultsession['usr'];
        
    $username $resultsession['usr'];
        }else{
         
    //لا توجد جلسة
        
    }
     
    } else{
    //لا توجد جلسة

    الخطأ

    كود PHP:
    }

    و الكود الصحيح

    كود PHP:
    if(isset($_SESSION['usr'])){
    $username $_SESSION['usr'];
    }  
    elseif(isset(
    $_COOKIE['sessioncrc'])) {
    $time time();  
    $querysession = @mysql_query("SELECT * FROM azizsoft_tmp WHERE `type`='session' and `ip`='".$_SERVER['REMOTE_ADDR']."' and `crc`='".$_COOKIE['sessioncrc']."' and `time`>'$time'"); 
    $countsession=mysql_num_rows($querysession);
        if(
    $countsession==1){
        
    //تخزين بيانات السجل في مصفوفة
        
    $resultsession = @mysql_fetch_array($querysession);
        
    //تخزين إسم المستخدم الموجود في قاعدة البيانات في المتغير $username و السيشن $_SESSION['usr']
        
    $_SESSION['usr'] = $resultsession['usr'];
        
    $username $resultsession['usr'];
       }
       }
        }else{
         
    //لا توجد جلسة
        
    }
     
    } else{
    //لا توجد جلسة

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

    بالنسبة لسؤالك
    إدا حدت خطأ لا ترجع للخلف
    ضع نمودج التسجيل تحت رسالة الخطأ
    و الحقل usrname تكون قيمته هي $usrname
    و قبل دلك نفد الشرط التالي
    كود PHP:
    if(isset($_POST['usrname'])){
    $usrname $_POST['usrname'];
    }else{
    $usrname "";

    أتمنى أن تكون الفكرة واضحة
    و تقبل تحيتي






  15. #15
    عضو نشيط
    تاريخ التسجيل
    Apr 2004
    المشاركات
    236


    شكرا على التنبيه للخطأ

    بالنسبة لسؤالك
    إدا حدت خطأ لا ترجع للخلف
    ضع نمودج التسجيل تحت رسالة الخطأ
    و الحقل usrname تكون قيمته هي $usrname
    و قبل دلك نفد الشرط التالي
    كود PHP:
    if(isset($_POST['usrname'])){
    $usrname $_POST['usrname'];
    }else{
    $usrname "";

    أتمنى أن تكون الفكرة واضحة
    و تقبل تحيتي
    شكراً لك الفكرة واضحة ..
    لم تذكر طريقة حذف الكوكيز و انهاء الجلسة ؟





    __________________
    مشاريعي الحالية :
    الحوارات |||||||||| 90%
    الأخبار |||||||||| 5%
    آخر |||||||||| 40%





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

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

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