PDA

View Full Version : سوال: میخوام مقدار یک فیلد رو بگیریم ولی نمیشه



iner30
یک شنبه 14 شهریور 1389, 20:58 عصر
سلام خدمت دوستان
چند وقت پیش یه سوال پرسیدم که گفتم میخوام با جاوا مقدار یک فیلد رو بدست بیارم و شما گفتید از بخش مربوطه بپرسم ولی متاسفانه در اون بخش جواب خاصی نگرفتم

تغییر رمز همین انجمن رو در نظر بگیرید، بعد از اینکه کاربر فرم رو تکمیل کرد مقادیر برای همون صفحه دوباره ارسال میشن ولی من نمیتونم اون مقادیر رو با $_POST دریافت کنم.
کدهای موجود درون صفحه هم از کلاس استفاده کرده که من هر چی خوندم متوجه نشدم از کجا مقدار اون فیلد رو میگیره.
حالا به نظر شما باید چیکار کنم؟

sama01
یک شنبه 14 شهریور 1389, 21:05 عصر
کدهات رو بذار ببینم مشکل کجا است.

iner30
یک شنبه 14 شهریور 1389, 21:58 عصر
دوست عزیز نمیشه 4000 خط کد رو گذاشت اینجا که.....

sama01
یک شنبه 14 شهریور 1389, 22:24 عصر
1.
چرا دو تاپیک موازی ایجاد کرده‌اید؟

2.
چه طور انتظار دارید با این توضیحات شما، بتونیم راه نمایی کنیم؟

3.
آیا تمام 4000 خط شما مرتبط با مشکل شما هستند؟

iner30
یک شنبه 14 شهریور 1389, 22:27 عصر
if ($_POST['do'] == 'updatepassword')
{
$vbulletin->input->clean_array_gpc('p', array(
'currentpassword' => TYPE_STR,
'currentpassword_md5' => TYPE_STR,
'newpassword' => TYPE_STR,
'newpasswordconfirm' => TYPE_STR,
'newpassword_md5' => TYPE_STR,
'newpasswordconfirm_md5' => TYPE_STR,
'email' => TYPE_STR,
'emailconfirm' => TYPE_STR
));

// instanciate the data manager class
$userdata =& datamanager_init('user', $vbulletin, ERRTYPE_STANDARD);
$userdata->set_existing($vbulletin->userinfo);

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

// if this is a Facebook only user, we will only use this form to add a password
// so we will ignore old password, email, and set the user logintype to be a vB user
if (is_facebookenabled() AND $vbulletin->userinfo['logintype'] == 'fb')
{
$userdata->set('logintype', 'vb');
// if a new email was not submitted, use whats already in the DB
if (!$vbulletin->GPC_exists['email'])
{
$vbulletin->GPC['email'] = $vbulletin->GPC['emailconfirm'] = $vbulletin->userinfo['email'];
}
}

// if not Facebook user, validate old password
else if ($userdata->hash_password($userdata->verify_md5($vbulletin->GPC['currentpassword_md5']) ? $vbulletin->GPC['currentpassword_md5'] : $vbulletin->GPC['currentpassword'], $vbulletin->userinfo['salt']) != $vbulletin->userinfo['password'])
{
eval(standard_error(fetch_error('badpassword', $vbulletin->options['bburl'], $vbulletin->session->vars['sessionurl'])));
}

// update password
if (!empty($vbulletin->GPC['newpassword']) OR !empty($vbulletin->GPC['newpassword_md5']))
{
// are we using javascript-hashed password strings?
if ($userdata->verify_md5($vbulletin->GPC['newpassword_md5']))
{
$vbulletin->GPC['newpassword'] =& $vbulletin->GPC['newpassword_md5'];
$vbulletin->GPC['newpasswordconfirm'] =& $vbulletin->GPC['newpasswordconfirm_md5'];
}
else
{
$vbulletin->GPC['newpassword'] =& md5($vbulletin->GPC['newpassword']);
$vbulletin->GPC['newpasswordconfirm'] =& md5($vbulletin->GPC['newpasswordconfirm']);
}

// check that new passwords match
if ($vbulletin->GPC['newpassword'] != $vbulletin->GPC['newpasswordconfirm'])
{
eval(standard_error(fetch_error('passwordmismatch' )));
}

// check to see if the new password is invalid due to previous use
if ($userdata->check_password_history($userdata->hash_password($vbulletin->GPC['newpassword'], $vbulletin->userinfo['salt']), $permissions['passwordhistory']))
{
eval(standard_error(fetch_error('passwordhistory', $permissions['passwordhistory'])));
}

// everything is good - send the singly-hashed MD5 to the password update routine
$userdata->set('password', $vbulletin->GPC['newpassword']);

// Update cookie if we have one
$vbulletin->input->clean_array_gpc('c', array(
COOKIE_PREFIX . 'password' => TYPE_STR,
COOKIE_PREFIX . 'userid' => TYPE_UINT)
);

if (md5($vbulletin->userinfo['password'] . COOKIE_SALT) == $vbulletin->GPC[COOKIE_PREFIX . 'password'] AND
$vbulletin->GPC[COOKIE_PREFIX . 'userid'] == $vbulletin->userinfo['userid']
)
{
vbsetcookie('password', md5(md5($vbulletin->GPC['newpassword'] . $vbulletin->userinfo['salt']) . COOKIE_SALT), true, true, true);
}
$activate = false;
}

// update email only if user is not banned (see bug 2142) and email is changed
// also, do not update
if ($permissions['genericoptions'] & $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'] AND ($vbulletin->GPC['email'] != $vbulletin->userinfo['email'] OR $vbulletin->GPC['emailconfirm'] != $vbulletin->userinfo['email']))
{
// check that new email addresses match
if ($vbulletin->GPC['email'] != $vbulletin->GPC['emailconfirm'])
{
eval(standard_error(fetch_error('emailmismatch'))) ;
}

// set the email field to be updated
$userdata->set('email', $vbulletin->GPC['email']);

// generate an activation ID if required
if ($vbulletin->options['verifyemail'] AND !can_moderate())
{
$userdata->set('usergroupid', 3);
$userdata->set_info('override_usergroupid', true);

$activate = true;

// wait lets check if we have an entry first!
$activation_exists = $db->query_first("
SELECT * FROM " . TABLE_PREFIX . "useractivation
WHERE userid = " . $vbulletin->userinfo['userid'] . "
AND type = 0
");

if (!empty($activation_exists['usergroupid']) AND $vbulletin->userinfo['usergroupid'] == 3)
{
$usergroupid = $activation_exists['usergroupid'];
}
else
{
$usergroupid = $vbulletin->userinfo['usergroupid'];
}
$activateid = build_user_activation_id($vbulletin->userinfo['userid'], $usergroupid, 0, 1);

$username = unhtmlspecialchars($vbulletin->userinfo['username']);
$userid = $vbulletin->userinfo['userid'];

eval(fetch_email_phrases('activateaccount_change') );
vbmail($vbulletin->GPC['email'], $subject, $message, true);
}
else
{
$activate = false;
}
}
else
{
$userdata->verify_useremail($vbulletin->userinfo['email']);
}

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

// save the data
$userdata->save();

if ($activate)
{
$vbulletin->url = 'usercp.php' . $vbulletin->session->vars['sessionurl_q'];
eval(print_standard_redirect('redirect_updatethank s_newemail', true, true));
}
else
{
$vbulletin->url = 'usercp.php' . $vbulletin->session->vars['sessionurl_q'];
eval(print_standard_redirect('redirect_updatethank s', true, true));
}
}
else if ($_GET['do'] == 'updatepassword')
{
// add consistency with previous behavior
exec_header_redirect('profile.php?do=editpassword' );
}

این اون قسمت از کدهایی هست که مربوط به ویرایش پسورد میشه.
نذاشتم چون میدونم مشکل از کدها نیست.
گفتم شاید امنیت کد نویسی باشه و شما بدونید چطوری میشه دورش زد

sama01
یک شنبه 14 شهریور 1389, 22:38 عصر
من نمی‌دونم این چه طرز سوال کردنه.
شما اول صحبت از جاوا کردید و این‌گونه تداعی شد که سوال شما مربوط به جاوااسکریپت و ajax هست.
بعد می‌بینیم که می‌آی کد می‌گذاری و معلوم می‌شه که کدها رو خودتون ننوشته‌اید و از سیستم vbulletin استفاده می‌کنید.

چه طور انتظار دارید که بشه به سوال شما جواب داد؟
من با سیستم vbulletin هیچ آشنایی‌ای ندارم و نمی‌تونم جواب بدم.
ولی سعی کنید سوال‌تان را طوری بپرسید که دیگران متوجه مشکل بشن.

iner30
یک شنبه 14 شهریور 1389, 22:41 عصر
من که گفتم تغییر رمز همین انجمن رو در نظر بگیرید
نگفتم؟

sama01
یک شنبه 14 شهریور 1389, 23:22 عصر
آیا این جمله یعنی اینکه سیستم شما هم vbulletin است؟
تصور من از چنین جمله و جملاتی، نگاه کردن به سیستم کار است. نه زبان یا framework نوشتن برنامه.

با دادن اطلاعات ناقص، هم خود و هم دیگران را به زحمت می‌اندازید.

iner30
یک شنبه 14 شهریور 1389, 23:39 عصر
شرمنده که نتونستم مفهموم رو خوب برسونم

sama01
یک شنبه 14 شهریور 1389, 23:46 عصر
حالا من که با سیستم vbulletin آشنایی ندارم.
ولی در یک نگاه گذرا از خود کدها متوجه شدم که با یکی از دو روش زیر می‌شه به مقدار یک فیلد دسترسی داشت:

$vbulletin->GPC['fieldName']
یا
$vbulletin->userinfo['fieldName']