دیتالایف انجین فارسی

عدم نمایش مجدد لیست نظرسنجی، برای کاربرانی که در نظرسنجی شرکت کرده اند

تاریخ انتشار: 1 خرداد 1391
ارسال کننده: IMP
یکی از مشکلات همیشگی دیتالایف انجین در قسمت نظر سنجی این هست که اگر کاربری در یک نظر سنجی شرکت کرده باشد، هنگامی که صفحه را بارگزاری مجدد میکند، لیست نظر سنجی دوباره نمایش داده میشود. هرچند که کاربر نمیتواند دوباره رای دهد و رای آن محاسبه نمیشود، اما نشان دادن دوباره نظر سنجی زیاد مناسب نمیباشد. بوسیله هکی که برای شما آماده کردم، این مشکل برطرف میشود و هنگامی که کاربر در نظر سنجی شرکت کند، همیشه نتیجه نظر سنجی برای آن کاربر به نمایش گذاشته میشود.
  • آموزش نصب
۱. ابتدا فایل engine/modules/vote.php را باز کرده و کد زیر را پیدا کنید:
if( $vote_action == "vote" ) {
    $_IP = $db->safesql( $_SERVER['REMOTE_ADDR'] );
    
    if( isset( $member_id['name'] ) ) $nick = $db->safesql($member_id['name']);
    else $nick = '';

    if ($user_group[$member_id['user_group']]['allow_vote']) {
    
        if( $is_logged ) $row = $db->super_query( "SELECT count(*) as count FROM " . PREFIX . "_vote_result WHERE vote_id='$rid' AND name='$nick'" );
        else $row = $db->super_query( "SELECT count(*) as count FROM " . PREFIX . "_vote_result WHERE vote_id='$rid' AND ip='$_IP'" );
        
        if( !$row['count'] AND count( explode( ".", $_IP ) ) == 4 ) $is_voted = false;
        else $is_voted = true;

    } else $is_voted = true;
    
    $flag = 1;

۲. به جای کد بالا، کد زیر را قرار دهید:
$_IP = $db->safesql( $_SERVER['REMOTE_ADDR'] );    
    if( isset( $member_id['name'] ) ) $nick = $member_id['name'];
    else $nick = '';    
    if( $is_logged ) $row = $db->super_query( "SELECT count(*) as count FROM " . PREFIX . "_vote_result WHERE vote_id='$rid' AND name='$nick'" );
    else $row = $db->super_query( "SELECT count(*) as count FROM " . PREFIX . "_vote_result WHERE vote_id='$rid' AND ip='$_IP'" );    
    if( $row['count'] == 0 ) $is_voted = false;
    else $is_voted = true;
if ($is_voted )
  {
      $flag = 1;
  }
if( $vote_action == "vote" ) {    
    $flag = 1;

مراحل نصب در اینجا به اتمام رسید، اما دوستانی که هک نمایش نظر سنجی به صورت مدرن را نصب کرده اند، مرحله زیر را نیز انجام دهند تا ظاهر نظر سنجی آنها مثل گذشته باشد:
۱. در همان فایل vote.php کد زیر را پیدا کنید:
<div class=\"vote\" align=\"right\">$body[$i] - $num ($proc%)</div>
      <div class=\"vote\" align=\"right\">
        <img src=\"" . $config['http_home_url'] . "templates/" . $config['skin'] . "/dleimages/poll{$pn}.gif\" height=\"10\" width=\"".intval($proc)."%\" style=\"border:1px solid black\">
      </div>\n

۲. کد زیر را به جای کد بالا قرار دهید:
<div class=\"vote\" align=\"right\">$body[$i] - $num</div>
<div class=\"progress voted progress_{$pn}\"><span style=\"width: ".intval($proc)."%;\"><b>{$proc}%</b></span></div>\n
14 نفر (14 کاربر و 0 میهمان) از این مطلب تشکر کرده اند.
تشکر
عضو سایت
01 خرداد 1391 - 07:52
سلام ، ممنون دوست عزیز ، خیلی کاربردی هستش ...

اما در سایت من برای کسی که قبلا نظر داده است، فقط نتایج نمایش داده می شود. من میخوام جمله " شما قبلا در نظر سنجی شرکت کرده اید " نمایش داده شود ....
مدیر بازنشسته
01 خرداد 1391 - 07:54
متاسفانه فعلا امکان همچین کاری نیست.
عضو سایت
02 خرداد 1391 - 12:45
اگه اینطور میشد عالی میشد

ولی در کل imp همیشه داره به ما وجه میاره
flower
عضو سایت
02 خرداد 1391 - 23:02
flower

--------------------
عضو سایت
09 خرداد 1391 - 16:40
بسم الله
سلام
آیا امکان حذف نمایش از نظر سنجی هست
یعنی نتایج نظر سنجی خصوصی باشد.
عضو سایت
18 خرداد 1391 - 21:13
imamali,
من از group استفاده کردم ، یعنی فقط خودم می تونم نتایج را ببینم ...
مدیر بازنشسته
18 خرداد 1391 - 21:24
شما میتونید ۲ بار از group استفاده کنید، یعنی نتایج رو برای خودتون نمایش بده با استفاده از group=1 و یک بار دیگه از این تگ استفاده کنید برای سایر کاربران به صورت group=2,3,4,5 و داخل این تگ بنویسید که نتایج برای کاربران نمایش داده نمیشود.
جهت ارسال نظر، فرم زیر را تکمیل نمائید:
نام:*
ایمیل:*
متن نظر:

 
پررنگکج خط دارخط دار در وسط|سمت چپوسط سمت راست|قرار دادن شکلکانتخاب رنگ|پنهان کردن متنقراردادن نقل قولتبدیل نوشته ها به زبان روسیقراردادن Spoiler
کد امنیتی: *