| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| حلول برمجية (5) PHP : إيقاف التصويت المتعدد إذا كان لديك برنامج تصويت، فإنه يمكن أن يعبث متصفح بواحد بنتائج التصويت؛ وذلك بتكرار العملية. هناك عدة حلول : 1 - الحل الأول : أن تجعل التصويت للأعضاء. فإذا (صوّت) عضو فإن رقمه يسجل في قاعدة البيانات، ولا يمكن أن يصوت مرة أخرى. وهذه الطريقة معمول بها في المنتديات. 2 - الحل الثاني : أن تعتمد على ملف البصمة(cookie)؛ لحفظ معلومات المتصفح. وهذه الطريقة تقلل العبث، ولا تقضي عليه؛ لأنه يمكن حذف ملف البصمة؛ لكن الغالب أن متصفح الشبكة لا يهتمون بمثل هذه الأمور. 3 - الحل الثالث : الاعتماد على ملفات نصية أو قاعدة البيانات في حفظ معلومات المتصفح. وهي أفضل من الطريقة السابقة؛ لأنه لا يمكن للعابث أن يحذف المعلومات. أما الحل الأول فهو واضح؛ وذلك بأن تضع في حقل التصويت حقلا باسم كود PHP: وقبل إدخال قيمة التصويت يُتحقق من وجود الرقم أو لا؟ كود PHP: كود PHP: vote_id يساوي التصويت المختار. لأننا نريد التأكد هل صوت في هذا التصويت أو لا؟ الأمر الثاني : طلب هذا الاستعلام من قاعدة البيانات وجعله في متغير باسم $result كود PHP: عمل حقلة تكرار لأرقام الأعضاء بحيث نستعرض أرقام الأعضاء الذين صوّتوا في هذا التصويت. while (list ($member_id)=mysql_fetch_array ($result)) { الأمر الرابع : في أثناء حقلة التكرار نستعرض كل رقم على حدة؛ لنرى هذا يوافق رقم العضو الرقم المخزن في قاعدة البيانات؟ فـ $member_id هم رقم العضو المخزن في القاعدة. و $m_id هو رقم العضو الذي جلبناه عنده تسجيله الدخول كود PHP: إذا كان رقم العضو يتفق مع الرقم في قاعدة البيانات فهذا يعني أنه سبق أن صوت؛ فنظهر له رسالة، ثم نوقف العمل. كود PHP: كود PHP: هذه طريقة الحل الأول؛ وهو التصويت الخاص بالأعضاء الحل الثاني : الاعتماد على ملف البصمة : قبل التصويت علينا أن نحصل على معلومات معينة عن الزائر كود PHP: القديمة : $HTTP_SERVER_VARS يمكنك عن طريق هذا المتغير تحديد عدة معلومات حسب النوع؛ ويمكنك معرفة الأنواع التي يمكن جلبها من هنا : أو البحث في دليل php في VII. Appendixes ثم Appendix G. List of Reserved Words ثم Predefined Variables في السطر الأول طلبنا معلومات معلومات النظام والمتصفح ($_SERVER['HTTP_USER_AGENT'];)؛ فإذا كان الزائر يستخدم نظام XP ومتصفح إنترنت إكسبلورر فستظهر معلومات مشابهة لهذه : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461) في السطر الثاني : طلبنا معلومات الرقتفي ( مصطلح من بدلا من آيبي ) ($_SERVE['REMOTE_ADDR']) في السطر الثالث طلبنا معلومات مقدم الخدمة ($_SERVER['REMOTE_HOST']) وحفظنا هذه المعلومات في المتغيرات الثلاث : كود PHP: ثم نضيف متغيرا آخر وهو رقم التصويت : كود PHP: كود PHP: ثم طلبنا إنشاء ملف البصمة ؛ حيث يحمل الاسم rateinfo ورقم التصويت الحالي كود PHP: تلحظ أنن وضعنا رقم التصويت مع اسم ملف البصمة؛ وذلك لئلا تحصل مشكلات عند تعدد التصويت؛ لأننا لو وضعنا اسم ملف البصمة هكذا rateinfo فإنه لن يسمح إلا بالمشاركة في تصويت واحد فقط؛ فلو كان لديك كل يوم تصويت فلن يتمكن الزائر من المشاركة في كلها؛ لهذا من الأفضل أن نحدد اسم ملف البصمة برقم التصويت ثم أعلمنا الدالة أن تحفظ المعلومات المخزنة في المتغير $cookieinfo في ملف البصمة ثم أعلمنا الدالة أن تحفظ هذه المعلومات لمدة خمسة أيام. لأن الساعة فيه 3600 ثانية ( نظام الحفظ يعتمد على الثواني) واليوم فيه 24 ساعة، وخمسة أيام تعني 120 ساعة فضربنا عدد الثواني في الساعة بعدد الساعات في خمسة أيام بعد هذا نغلق قوس الشرط } الآن حفظت المعلومات. هذه المعلومات تكون في صفحة عرض التصويت rate.php وفي صفحة اعتماد التصويت dorate.php نضع الأوامر التالية : كود PHP: ونضيف إليها : كود PHP: المتغير $_COOKIE يضمن أن المعلومات المجلوبة هي من ملف البصمة وليس من متغير آخر، فمثلا لو وضعت $rateinfo فإنه يمكن خداع البرنامج عن طريق المتصفح، وتمرير المتغير منه! لكن $_COOKIE لا يسمح بمثل هذا، وهذا المتغير اختصار للمتغير في الإصدارات السابقة $HTTP_COOKIE_VARS الآن نطلب المعلومات المحفوظة : كود PHP: هذا المتصفح، وجعلها في خانات باسم كود PHP: كود PHP: السطر الأول يجلب المعلومة في الخانة ذات الرقم صفر والثاني يجلب المعلومة في الخانة ذات الرقم 1 والثالث يجلب المعلومات في الخانة ذات الرقم 2 لأننا وضعنا متغير ملف البصمة بهذا الترتيب كود PHP: الآن نتحقق هل المعلومات المسحلة عن الزائر توافق المعلومات المحفوظة في ملف البصمة؟ كود PHP: كود PHP: } ثم ننفذ عملية إدراج التصويت. انتهى الحل الثاني : الحل الثالث : مثل الطريقة السابقة إلا في طريقة حفظ المعلومات، فبدلا من حفظها في ملف البصمة تحفظ المعلومات في ملف نصي أو في قاعدة البيانات. ولعلي أتفرغ لشرح الحل الثالث بالتفصيل | |||||
|
| |||||
|
شكرا لك على هذا الدرس الجميل وجزاك الله الف خير ----- اذا ممكن اخى تشوف هذا السؤال هذا احد الاشخاص سئل هذا السوال وانا محتاج نفس الشى للجواب ضرورى ![]() http://www.phpvillage.com/phpBB2/viewtopic.php?t=1626
__________________ php | |||||
|
| |||||
|
جزاك الله خير اخوي افدتني كثيرااااااا
__________________ مؤسسة المهمات البرمجية 00966507585887 0507585887 www.mr-php.com.sa www.mr-php.com | |||||
|
| |||||
|
مثلا لوقلنا عندنا صف فى جدول member اسمه vote -- وانا عامل صفحه مظهر فيها اول 10 مواضيع -- وبجانب كل موضوع شيك بوكس والعضو يختار كذا واحد موضوع ويتخزن فى vote ايد المواضيع الى اختارها مثلا 3 5 8 ياليت شرح وافى وشكرا لكم مقدما ان شاء الله تكون فهمت قصدى
__________________ php | |||||
|
| |||||
|
حقيقة لم تصلني الفكرة ![]() لكن اقرأ هذا الموضوع ربما ينفعك http://www.swalif.net/softs/showthre...threadid=41840 | |||||
|
| |||||
|
جزاك الله خيراً على هذا الموضوع القيّم و من باب المشاركة في العلم لا حظت استعمالك للشرط WHERE في الاستعلام لرقم التصويت فقط ثم استعمال جملة التكرير مع الشرط لإيجاد رقم المستخدم للتصويت ، كما ذكرت فيما يلي : كود PHP: كود PHP: بحيث نختبر متغيّر $result بعد عد صفوف القاعدة العائدة فيه و نختبر وجود قيمه داخله من باب التأكيد كالتالي : كود PHP: كود PHP: آمل إن كنتم ترون أنّ طريقتي في صياغة هذه الجملة ليست مناسبة ألا تبخلوا بتوجيهي و تصويبي فلم يحدوني للمشاركة إلا طلب العلم و التعلم فقط و السلام .
__________________ قل خيراً أو اصمت .. | |||||
|
| |||||
|
يا اخوان شرحكم ممتاز جدا ولكن عندي مشكله في مجلة النيوك اقدر اصوت الف مره ولا يمنعني ومع انه الكود موجود وسليم ولكن احس انه في شي غلط؟؟ لماذا لا يعمل ؟ كل شي ماشي صح في الكود! كود PHP: وين الغلط؟ لاحظ انه يقوم بإرسال الايبي والوقت ورقم التصويت وكل شي تمام! الصورة بالمرفقات** طبعا الصورة لسيرفر محلي ونفس الموقع موجود عندي بالجهاز تقدرون تجربون هنا http://sootk.com/modules.php?name=Nowdays&pollID=46 | |||||
|
| |||||
|
الموضوع سنتين له ..
__________________ ██████████ ██████████ ██████████ مهارات سوفت مهارات سوفت للبرامج وتطوير المواقع والمنتديات والتبادل التجاري. للتواصل .. 00967733873335 باب الحارة .. للبيع ..!! | |||||
|
![]() |
| أدوات الموضوع | |
| |