الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه المحترف في 18 ديسمبر 2008 · 2 رد · 1,099 مشاهدة · في قواعد بيانات MySQL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

===============================================================================

لدي عداد زوار لاظهار احصائيات الموقع

الأعضاء والزوار

المشكلة لا يظهر إلا واحد فقط إما عضو أو زائر لماذا لا أدري

اسم الملف useronline.php

واعطيته الترخيص 777 من له رأي آخر في هذا الترخيص يفيدنا

محتوى الملف

$timeoutseconds		 = 3;
$timestamp=time();
$timeout=$timestamp-$timeoutseconds;
if($memberid and $memberid != ""){$mem =1;}else{$mem =0;}
$ee=mysql_query("INSERT INTO counting VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF','$mem')");



$ww=mysql_query("DELETE FROM counting WHERE timestamp<$timeout");
$result11=mysql_query("SELECT distinct ip FROM counting WHERE file='$PHP_SELF' and mem='0'");
$result112=mysql_query("SELECT distinct ip FROM counting WHERE file='$PHP_SELF' and mem='1'");
$user=mysql_num_rows($result11);
$usermem=mysql_num_rows($result112);
$usertot=$usermem+$user;
if ($user==1)
{echo"<font face=tahoma size=2></font>";} else {echo"<font face=tahoma size=2></font>";}
?>

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

حيث يتضح أن هناك عضوين من اعضاء الموقع يتصفحون الموقع الآن وليسوا زوار

08309408.jpg

ولا أدري ما سبب عدم تعبئة حقلي File و ip علما انه يتم تعبئتها على السيرفر الشخصي

وعند تصفح الموقع يظهر عضو واحد يتصفح الموقع كما في الصورة التالية

zwH09408.jpg

علما بأن كود الطباعة صحيح 100% وهو

echo "المتواجدون: ";include('online/useronline.php');  echo"$usertot (الأعضاء:$usermem	 الزوار:$user)";

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

تم تعديل هذه المشاركة بواسطة المحترف في 18 ديسمبر 2008 في 19:04

#2

اعتقد انه في خبط شويه :

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

انسخ الاستعلام نفذه على mysql مباشرة وشوف كم بيرجع لك نتائج .

مع اني افضل انك تستخدم COUNT افضل من انك ترجع الحوق بالكامل وبعدين تاخذ عددهم .. الافضل خذ عدد الزوار وخلي السكول يرجع لك بس العدد .

يعني :

اعمل لك وقت مثلا خلال 5 دقائق

احذف اي حقل تاريخ التسجيل والوقت له قبل خمس دقائق ..

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

وان لم يكن موجود اعمل اداخال له في الجدول

بعدين اعمل استعلام COUNT بس .

مش صعبته يمكن تعمله انت بدون ما تستخدام اي اسكربت .

#3

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

تغيير اسلوب تعامل PHP مع ال session بحيث يتم تخزينها في جدول في قاعدة البيانات، واحد معلومات ال session يكون ال username ممكن يكون null لل guest مثلا... وتعرف بالطريقة هذي المعلومات اللي تحتاجها.

(ببحث سريع وجدت مثال، يبدو انه قديم لكن ممكن توصل لك الفكرة منه) http://www.developertutorials.com/tutorial...0711/page1.html

اذا تحب تعرف اكثر عن الخطأ اكتب PHP_SELF Injection في اي محرك بحث.

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…