• 09-12-2012, 16:20:25
    #1
    Merhaba Arkadaşlar ;

    Vbulletin forumuma kayıt olurken kayıt olduktan sonra Msql Veri Tabanına "xxxxxx" isimli tabloya kullanıcı adı ve randomsifre isimli sütuna kullanıcı adını ve random oluşturulan şifreyi tablodaki sütunların altına eklemesini istiyorum.

    Kullanıcı kayıt olduktan sonra o oluşturulan random şifre girilmeden hesabın aktif edilmemesini istiyorum.

    Sistem aynı e-mail aktivasyon kodu gibi olacak ama bu random şifreyi sadece ben görmek istiyorum ben random şifreyi kullanıcı girmeden üyelik aktif olmasın yapamadım yardımcı olurmusunuz ?

    Bu e-maile gönderilen şifrenin oluşturuluşu gibi yaptım olmadı hem e-mail aktivasyon hemde admin aktivasyon istiyorum yardımcı olur musunuz ?

  • 09-12-2012, 20:26:00
    #2
    Bilgisi olan yok mu arkadaşlar ?
  • 09-12-2012, 20:32:12
    #3
    normal aktivasyon olayından farkı ne olacak anlamadım ?
  • 09-12-2012, 20:54:48
    #4
    Hocam normal aktivasyona ek olarak bir tane daha aktivasyon kodu oluşturmak istiyorum ama oluşturulan ikinci aktivasyon kodunu e-mail olarak göndermeyecek sadece veritabanına ekleyecek ben göreceğim onu oradan görüp kullanıcıya söyleyeceğim.
  • 09-12-2012, 21:39:11
    #5
    kod ile olması şart mı ?
    normal üye grubunun özelliklerini kısıtlasan da yeni bir üye grubu açsan izinleri normal olan ve kod vermek yerine elle o üye grubuna taşısan
  • 09-12-2012, 21:53:30
    #6
    Maalesef kod olması lazım hocam.

    Kullanıcı kayıt olduğunda ;

    http://www.xxxxxx.com.tr/forum/register.php?a=ver

    Nasıl buraya aktivasyon kodu girmeden aktif olamıyorsa bend 2. bir aktivasyon daha oluşturmak istiyorum.

    http://www.xxxxxx.com.tr/forum/register.php?b=2ver

    Bunun gibi Vbulletinin kendi kodları oynadım ama maalesef sonuç alamadım yardımcı olur musunuz ?
  • 09-12-2012, 22:16:15
    #7
    /includes/functions_user.php

    satır: 887

    Alıntı
    function build_user_activation_id($userid, $usergroupid, $type, $emailchange = 0)
    {
    global $vbulletin;

    if ($usergroupid == 3 OR $usergroupid == 0)
    { // stop them getting stuck in email confirmation group forever
    $usergroupid = 2;
    }

    $vbulletin->db->query_write("DELETE FROM " . TABLE_PREFIX . "useractivation WHERE userid = $userid AND type = $type");
    $activateid = fetch_random_string(40);
    /*insert query*/
    $vbulletin->db->query_write("
    REPLACE INTO " . TABLE_PREFIX . "useractivation
    (userid, dateline, activationid, type, usergroupid, emailchange)
    VALUES
    ($userid, " . TIMENOW . ", '$activateid' , $type, $usergroupid, " . intval($emailchange) . ")
    ");

    if ($userinfo = fetch_userinfo($userid))
    {
    $userdata =& datamanager_init('User', $vbulletin, ERRTYPE_SILENT);
    $userdata->set_existing($userinfo);
    $userdata->set_bitfield('options', 'noactivationmails', 0);
    $userdata->save();
    }

    return $activateid;
    }
    şuraya ekleme yapılabilir

    $activateid2 = fetch_random_string(40);

    yapıp

    burdaki tablo değiştirilerek istenen yere kaydedilebilir
    /*insert query*/
    $vbulletin->db->query_write("
    REPLACE INTO " . TABLE_PREFIX . "useractivation
    (userid, dateline, activationid, type, usergroupid, emailchange)
    VALUES
    ($userid, " . TIMENOW . ", '$activateid2' , $type, $usergroupid, " . intval($emailchange) . ")
    ");
  • 09-12-2012, 22:45:53
    #8
    Hocam çok teşekkür ederim veri tabanına ikinci aktivasyon kodu oluşturmayı yaptık ama e-mail aktivasyonu yapınca hesap aktif oluyor ben birde bu oluşturulan ikinci aktivasyonunun girilmeden hesabın aktif olmasını istemiyorum.

    Yani

    forum/register.php?a=ver

    Buraya girip e-mail aktivasyonu tamam ama foruma tamamen erişmek için

    forum/register.php?a2=ver2

    olarak birşey oluşturup bu oluşturulan aktivasyon kodu girilmeden hesap aktif olmasın istiyorum bu oluşturulan kodu nasıl 2. aktivasyon kodu yaparız ve bu kodu girilecek bir url oluştururuz ?
  • 09-12-2012, 22:56:45
    #9
    onun için de register.php satır: 947 ye bakmak lazım

    Alıntı
    if ($vbulletin->GPC['a'] == 'ver')
    {
    // get username and password
    if (!$vbulletin->userinfo['userid'])
    {
    $vbulletin->userinfo['username'] = '';
    }

    if ($permissions['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['canview'])
    {
    $navbits = construct_navbits(array('' => $vbphrase['activate_your_account']));
    eval('$navbar = "' . fetch_template('navbar') . '";');
    }
    else
    {
    $navbar = '';
    }

    ($hook = vBulletinHook::fetch_hook('register_activateform') ) ? eval($hook) : false;

    eval('print_output("' . fetch_template('activateform') . '");');
    }

    // ############################### start activate ###############################
    if ($_REQUEST['do'] == 'activate')
    {
    $vbulletin->input->clean_array_gpc('r', array(
    'username' => TYPE_NOHTML,
    'activateid' => TYPE_STR,

    // These three are cleaned so that they will exist and not be overwritten in the next step

    'u' => TYPE_UINT,
    'a' => TYPE_NOHTML,
    'i' => TYPE_STR,
    ));

    if ($userinfo = $db->query_first("SELECT userid FROM " . TABLE_PREFIX . "user WHERE username='" . $db->escape_string($vbulletin->GPC['username']) . "'"))
    {
    $vbulletin->GPC['u'] = $userinfo['userid'];
    $vbulletin->GPC['a'] = 'act';
    $vbulletin->GPC['i'] = $vbulletin->GPC['activateid'];
    }
    else
    {
    eval(standard_error(fetch_error('badlogin', $vbulletin->options['bburl'], $vbulletin->session->vars['sessionurl'], $strikes)));
    }
    }

    if ($vbulletin->GPC['a'] == 'ver2') diye yeni bir koşul oluşturup
    temadan da yeni form oluşturman lazım activateform deki formun kodlarını alarak activateform2 diye
    activateid2 göndermesi için

    ve
    if ($vbulletin->GPC['a'] == 'act')
    şunun içine activateid2 olması koşulunu eklersen hemen aktive olmaz