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

التصويت لمرة واحدة دون تسجيل دخول

بدأه المهندس أسامة في 13 ديسمبر 2009 · 5 رد · 1,088 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

عن طريق الـ IP لا أظن أن الطريقة مجدية لأني في كل عملة اتصال بالانترنت يدخل الجهاز بـ ip مختلف

هل هنالك طريقة لأعرف مثلاً الرقم التسلسلي للجهاز أو مثلا اسم الجهاز أو أي شي يتعلق بالجهاز ؟؟؟؟؟

أرجو المساعدة لو سمحتم

سبحان الله وبحمده سبحان الله العظيم

1
#2

الزميل المهندس أسامة تحية و بعد...

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

إليك الكود التالي..

<?php
if ($_GET["op"]=="vote_now") //now user submit to voting...
{
	//make update on database
	session_register("voted");
}

if (session_is_registered("voted"))
{
	//echo Voting Results here
	//and dont show Voting Forms here
}
else
{
	//show Voting Forms here	
}
?>

بالتوفيق...

بسم الله الرحمن الرحيم

و قل ربي زدني علماً

صدق الله العظيم

#3

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

أخي وزميلي phpspider

تم تجربة ما قلته وتمت الأمور بنجاح لكن

عندما أغلق صفحة المستعرض فإن الجلسة تنتهي Destroy

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

أنا أريد أنني لا أصوت على الموضوع أبداً غير مرة واحدة فقط ومن ثم لا استطيع التصويت حتى يتم إضافة موضوع آخر غير الموضوع الذي قد صوت عليه

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

والله الموفق

#4

من ملف php.ini ابحث عن session.cookie_lifetime هذا الخيار يحدد المدة التي تبقى فيها ال session فعالة بعد إغلاق المتصفح تستطيع ان تحددها على راحتك

−1
#5

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

لدي نصيحة لك يا أخي الكريم.. أنا لا أنصح كثيرا استخدام الـ session في هذا الأمر لأنه قد يواجهك أمر آخر تحتاج فيه الـ session فمن الغير منصوح به استخدامها في مثل هذا الغرض.. كما أن التغيير في الـ php.ini حيث أنك قد ترفع موقعك مع خدمة (رديئة نوعاً) لا تتيح لك التغيير في كل معايير هذا الملف..

استخدام الـ cookies هو الأصل الذي تعتمد عليه الـ sessions ذاتها لذا يمكنك إنشاء cookie مرتبطة برقم الموضوع.. أو التصويت بحيث لو تم تغيير التصويت يتغير رقمه و بالتالي يتاح التصويت..

مع جعل وقت الـ timeout كبير حتى لو أغلق المستخدم صفحة المتصفح فستظل هذه الـ cookie عند فتحه المتصفح مرة أخرى.. و لكن انتبه إن إجراء عملية clear history الخاصة بالمتصفح ترجع التصويت لحالته الأساسية و لا يسعفك في هذه الحالة إلا استخدام الـ IP Address و يعيقنا في هذه الحالة وجود أكثر من مستخدم خلف NAT يستخدمون IP واحد..

ها هو الكود على العموم و هو مستخدم في الحالات الطبيعية.. فلن يقوم المستخدم كل لحظة بتفريغ محتويات الـ History الخاص به..

$readId = $_COOKIE["NE" . $topicDetails->getSerial()];

if ($readId == NULL) {
setcookie("NE" . $topicDetails->getSerial(), "YES", time()+3600);
}

فقط قم بتغيير مكان جلب رقم التصويت و قم باستخدام $readId لإتاحة التصويت أو منعه..

لا تتردد في إلقاء أي أسئلة أخرى..

تحياتي،،

n622971709_461151_8573.jpg
#6

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

cert.gif

___________________

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

وليت الذي بيني وبينك عامر - وبيني وبين العالمين خـراب

اذا صح منك الود فالكل هين - وكل الذي فوق التراب تـــراب

____________________

سبحانك اللهم وبحمدك اشهد ان لا اله الا انت استغفرك واتوب اليك

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