توسط این هك می توانید قسمت انتخاب تاریخ تولد را به عضویت در سایت و ویرایش مشخصات كاربری اضافه كنید.
وارد phpMyAdmin بشوید و پس از انتخاب دیتابیس، متن زیر را در SQL اجرا كنید.
ALTER TABLE `dle_users` ADD `birthdate` DATE NOT NULL ,
ADD `bdate_view` ENUM( '0', '1', '2' ) NOT NULL;
ADD `bdate_view` ENUM( '0', '1', '2' ) NOT NULL;
فایل engine/modules/functions.php رو با Notepad2 (برای اینكه نوشته های فارسی درست وارد فایل بشوند) باز كنید و پس از انتخاب Encoding آن روی UTF-8 ، به دنبال كد زیر بگردید:
function formatsize($file_size){
در بالای كدی كه پیدا كردید، كد زیر را قرار دهید:
function makeDropDown($options=array(), $name, $selected)
{
$output = '<select name="'.$name.'" >';
foreach($options as $value=>$description)
{
$output .= '<option value='.$value;
if(intval($selected) == intval($value)){
$output .= ' selected ';
}
$output .= '>'.$description.'</option>';
}
$output .= '</select>';
return $output;
}
function format_date_html($mysql_date,$bdate_view)
{
$array=explode('-',$mysql_date);
$month['01']='فروردين';
$month['02']='ارديبهشت';
$month['03']='خرداد';
$month['04']='تير';
$month['05']='مرداد';
$month['06']='شهريور';
$month['07']='مهر';
$month['08']='آبان';
$month['09']='آذر';
$month['10']='دي';
$month['11']='بهمن';
$month['12']='اسفند';
if($array[2]<10)
{
$array[2]=str_replace(0,'',$array[2]);
}
switch ($bdate_view)
{
case '0' :
return $array[2] . ' ' . $month[$array[1]] . ' ' . $array[0] . ' ';
break;
case '1' :
return $array[2] . ' ' . $month[$array[1]];
break;
case '2' :
return 'پنهان شده';
break;
}
}
{
$output = '<select name="'.$name.'" >';
foreach($options as $value=>$description)
{
$output .= '<option value='.$value;
if(intval($selected) == intval($value)){
$output .= ' selected ';
}
$output .= '>'.$description.'</option>';
}
$output .= '</select>';
return $output;
}
function format_date_html($mysql_date,$bdate_view)
{
$array=explode('-',$mysql_date);
$month['01']='فروردين';
$month['02']='ارديبهشت';
$month['03']='خرداد';
$month['04']='تير';
$month['05']='مرداد';
$month['06']='شهريور';
$month['07']='مهر';
$month['08']='آبان';
$month['09']='آذر';
$month['10']='دي';
$month['11']='بهمن';
$month['12']='اسفند';
if($array[2]<10)
{
$array[2]=str_replace(0,'',$array[2]);
}
switch ($bdate_view)
{
case '0' :
return $array[2] . ' ' . $month[$array[1]] . ' ' . $array[0] . ' ';
break;
case '1' :
return $array[2] . ' ' . $month[$array[1]];
break;
case '2' :
return 'پنهان شده';
break;
}
}
فایل Templates/Default/registration.tpl رو دوباره با Notepad2 باز كنید و پس از انتخاب Encoding روی UTF-8 به دنبال كد زیر بگردید:
<tr align=right valign="middle">
<td width="120" height="25">اطلاعت شخصي:</td>
<td colspan=2 height="25"><textarea name=info style="width:320px; height:70px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0 "></textarea></td>
</tr>
<td width="120" height="25">اطلاعت شخصي:</td>
<td colspan=2 height="25"><textarea name=info style="width:320px; height:70px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0 "></textarea></td>
</tr>
در بالای این كد، كدهای زیر را قرار دهید:
<tr align=right>
<td align=right width="120" height="25">تاريخ تولد:</td>
<td align=right>
<select name="birth_d">
<option value="0"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="birth_m">
<option value="0"></option>
<option value="1">فروردين</option>
<option value="2">ارديبهشت</option>
<option value="3">خرداد</option>
<option value="4">تير</option>
<option value="5">مرداد</option>
<option value="6">شهريور</option>
<option value="7">مهر</option>
<option value="8">آبان</option>
<option value="9">آذر</option>
<option value="10">دي</option>
<option value="11">بهمن</option>
<option value="12">اسفند</option>
</select>
<input type="text" name="birth_y" />
<br>
<select name="bdate_view">
<option value="0">نمايش سن و تاريخ تولد</option>
<option value="1">نمايش تاريخ تولد</option>
<option value="2">پنهان كردن سن و تاريخ تولد</option>
</select>
</td>
</tr>
<td align=right width="120" height="25">تاريخ تولد:</td>
<td align=right>
<select name="birth_d">
<option value="0"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="birth_m">
<option value="0"></option>
<option value="1">فروردين</option>
<option value="2">ارديبهشت</option>
<option value="3">خرداد</option>
<option value="4">تير</option>
<option value="5">مرداد</option>
<option value="6">شهريور</option>
<option value="7">مهر</option>
<option value="8">آبان</option>
<option value="9">آذر</option>
<option value="10">دي</option>
<option value="11">بهمن</option>
<option value="12">اسفند</option>
</select>
<input type="text" name="birth_y" />
<br>
<select name="bdate_view">
<option value="0">نمايش سن و تاريخ تولد</option>
<option value="1">نمايش تاريخ تولد</option>
<option value="2">پنهان كردن سن و تاريخ تولد</option>
</select>
</td>
</tr>
فایل Templates/Default/userinfo.tpl رو با Notepad2 باز كنید، و پس از انجام مراحل بالا، به دنبال كد زیر بگردید:
{land}
پس از این كد، كدهای زیر را قرار دهید:
<br />تاريخ تولد: {birthdate}
در همین فایل به دنبال كد زیر بگردید:
<tr>
<td height="25" align=right>نام کامل:</td>
<td align=right><input type="text" name="fullname" value="{fullname}" class="f_input" /></td>
</tr>
<td height="25" align=right>نام کامل:</td>
<td align=right><input type="text" name="fullname" value="{fullname}" class="f_input" /></td>
</tr>
پس از این كد، كدهای زیر را قرار دهید:
<tr>
<td height="25" align=right>تاريخ تولد:</td>
<td align=right>{birth_d_a} {birth_m_a} <input type="text" class="f_input" style="width: 48px; height: 15px;" name="birth_y" value="{birth_y}"><br>{bdate_view_a}</td>
</tr>
<td height="25" align=right>تاريخ تولد:</td>
<td align=right>{birth_d_a} {birth_m_a} <input type="text" class="f_input" style="width: 48px; height: 15px;" name="birth_y" value="{birth_y}"><br>{bdate_view_a}</td>
</tr>
فایل Engine/Modules/Profile.php را با Notepad2 باز كنید و به دنبال كد زیر بگردید:
$icq = $db->safesql($parse->process($_POST['icq']));
در پایین آن، كدهای زیر را قرار دهید:
$birth_d = $db->safesql($parse->process($_POST['birth_d']));
$birth_m = $db->safesql($parse->process($_POST['birth_m']));
$birth_y = $db->safesql($parse->process($_POST['birth_y']));
$bdate_view = $db->safesql($parse->process($_POST['bdate_view']));
$birth_m = $db->safesql($parse->process($_POST['birth_m']));
$birth_y = $db->safesql($parse->process($_POST['birth_y']));
$bdate_view = $db->safesql($parse->process($_POST['bdate_view']));
در همین فایل به دنبال كد زیر بگردید:
if (is_uploaded_file($image) AND !$stop) {
در بالای آن، كدهای زیر را قرار دهید:
if (($birth_d != '') && (($birth_m == 3) or ($birth_m == 4) or ($birth_m == 6) or ($birth_m == 9) or ($birth_m == 11)) && ($birth_d == 31))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_m != '') && (($birth_m == 2) && ($birth_d > 29)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_y != '') && (!is_numeric($birth_y)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_y != '') && (($birth_y < 1300) or ($birth_y > 1400)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
if ($birth_d == 0) $stop .= "روز تولد را انتخاب نكرده ايد.<br>";
if ($birth_m == 0) $stop .= "ماه تولد را انتخاب نكرده ايد.<br>";
if ($birth_y == '') $stop .= "سال تولد را وارد نكرده ايد.<br>";
if (($bdate_view!=0) && ($bdate_view!=1) && ($bdate_view!=2)) $stop .= "Hacking Attempt!";
$birthdate = $birth_y."-".$birth_m."-".$birth_d;
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_m != '') && (($birth_m == 2) && ($birth_d > 29)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_y != '') && (!is_numeric($birth_y)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_y != '') && (($birth_y < 1300) or ($birth_y > 1400)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
if ($birth_d == 0) $stop .= "روز تولد را انتخاب نكرده ايد.<br>";
if ($birth_m == 0) $stop .= "ماه تولد را انتخاب نكرده ايد.<br>";
if ($birth_y == '') $stop .= "سال تولد را وارد نكرده ايد.<br>";
if (($bdate_view!=0) && ($bdate_view!=1) && ($bdate_view!=2)) $stop .= "Hacking Attempt!";
$birthdate = $birth_y."-".$birth_m."-".$birth_d;
در همین فایل به دنبال كد زیر بگردید:
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";
} else {
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";
}
} else {
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";
}
تمام این كدهای كه پیدا شد رو حذف كنید و كدهای زیر را بجایش قرار دهید:
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', bdate_view='$bdate_view', birthdate='$birthdate', email='$email', info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";
} else {
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', bdate_view='$bdate_view', birthdate='$birthdate', email='$email', info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";
}
} else {
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', bdate_view='$bdate_view', birthdate='$birthdate', email='$email', info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";
}
در همین فایل به دنبال كد زیر بگردید:
else {
$tpl->set('{email}', $lang['news_nomail'], $output);
}
$tpl->set('{email}', $lang['news_nomail'], $output);
}
پس از آن، كدهای زیر را قرار دهید:
$birthdate = $row['birthdate'];
$bdate_view = $row['bdate_view'];
$birthdate_see = format_date_html($birthdate,$bdate_view);
$birthdate_array = explode('-',$birthdate);
$birth_y = $birthdate_array[0];
$birth_m = $birthdate_array[1];
$birth_d = $birthdate_array[2];
$bdate_view = $row['bdate_view'];
$birthdate_see = format_date_html($birthdate,$bdate_view);
$birthdate_array = explode('-',$birthdate);
$birth_y = $birthdate_array[0];
$birth_m = $birthdate_array[1];
$birth_d = $birthdate_array[2];
در همین فایل به دنبال كد زیر بگردید:
$tpl->set('{fullname}', stripslashes($row['fullname']));
پس از آن، كدهای زیر را قرار دهید:
$tpl->set('{birth_y}', $birth_y);
$tpl->set('{birthdate}', $birthdate_see);
$tpl->set('{birthdate}', $birthdate_see);
در همین فایل به دنبال كد زیر بگردید:
$tpl->set('{lastdate}', langdate("j F Y H:i", $row['lastdate']));
پس از آن، كدهای زیر را قرار دهید:
$months_array = array (
0=>'',
1=>'فروردين',
2=>'ارديبهشت',
3=>'خرداد',
4=>'تير',
5=>'مرداد',
6=>'شهريور',
7=>'مهر',
8=>'آبان',
9=>'آذر',
10=>'دي',
11=>'بهمن',
12=>'اسفند',
);
$days_array=array(
0=>'',
1=>'1',
2=>'2',
3=>'3',
4=>'4',
5=>'5',
6=>'6',
7=>'7',
8=>'8',
9=>'9',
10=>'10',
11=>'11',
12=>'12',
13=>'13',
14=>'14',
15=>'15',
16=>'16',
17=>'17',
18=>'18',
19=>'29',
20=>'20',
21=>'21',
22=>'22',
23=>'23',
24=>'24',
25=>'25',
26=>'26',
27=>'27',
28=>'28',
29=>'39',
30=>'30',
31=>'31',
);
$bdate_view_array = array (
0=>'نمايش سن و تاريخ تولد',
1=>'نمايش تاريخ تولد',
2=>'پنهان كردن سن و تاريخ تولد',
);
$birth_m_a = makeDropDown($months_array, 'birth_m', $birth_m);
$birth_d_a = makeDropDown($days_array, 'birth_d', $birth_d);
$bdate_view_a = makeDropDown($bdate_view_array, 'bdate_view', $bdate_view);
$tpl->set('{birth_m_a}', $birth_m_a);
$tpl->set('{birth_d_a}', $birth_d_a);
$tpl->set('{bdate_view_a}', $bdate_view_a);
0=>'',
1=>'فروردين',
2=>'ارديبهشت',
3=>'خرداد',
4=>'تير',
5=>'مرداد',
6=>'شهريور',
7=>'مهر',
8=>'آبان',
9=>'آذر',
10=>'دي',
11=>'بهمن',
12=>'اسفند',
);
$days_array=array(
0=>'',
1=>'1',
2=>'2',
3=>'3',
4=>'4',
5=>'5',
6=>'6',
7=>'7',
8=>'8',
9=>'9',
10=>'10',
11=>'11',
12=>'12',
13=>'13',
14=>'14',
15=>'15',
16=>'16',
17=>'17',
18=>'18',
19=>'29',
20=>'20',
21=>'21',
22=>'22',
23=>'23',
24=>'24',
25=>'25',
26=>'26',
27=>'27',
28=>'28',
29=>'39',
30=>'30',
31=>'31',
);
$bdate_view_array = array (
0=>'نمايش سن و تاريخ تولد',
1=>'نمايش تاريخ تولد',
2=>'پنهان كردن سن و تاريخ تولد',
);
$birth_m_a = makeDropDown($months_array, 'birth_m', $birth_m);
$birth_d_a = makeDropDown($days_array, 'birth_d', $birth_d);
$bdate_view_a = makeDropDown($bdate_view_array, 'bdate_view', $bdate_view);
$tpl->set('{birth_m_a}', $birth_m_a);
$tpl->set('{birth_d_a}', $birth_d_a);
$tpl->set('{bdate_view_a}', $bdate_view_a);
فایل Engine/Modules/Register.php را با Notepad2 باز كنید و به دنبال كد زیر بگردید:
$fullname = $db->safesql($parse->process($_POST['fullname']));
پس از آن، كدهای زیر را قرار دهید:
$birth_d = $_POST['birth_d'];
$birth_m = $_POST['birth_m'];
$birth_y = $db->safesql($parse->process($_POST['birth_y']));
$bdate_view = $_POST['bdate_view'];
$birth_m = $_POST['birth_m'];
$birth_y = $db->safesql($parse->process($_POST['birth_y']));
$bdate_view = $_POST['bdate_view'];
در همین فایل به دنبال كد زیر بگردید:
if ($stop){ msgbox ($lang['reg_err_18'], $stop); }
پس از آن، كدهای زیر را قرار دهید:
if (($birth_d != '') && (($birth_m == 3) or ($birth_m == 4) or ($birth_m == 6) or ($birth_m == 9) or ($birth_m == 11)) && ($birth_d == 31))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_m != '') && (($birth_m == 2) && ($birth_d > 29)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_y != '') && (!is_numeric($birth_y)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_y != '') && (($birth_y < 1300) or ($birth_y > 1400)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
if ($birth_d == 0) $stop .= "روز تولد را انتخاب نكرده ايد.<br>";
if ($birth_m == 0) $stop .= "ماه تولد را انتخاب نكرده ايد.<br>";
if ($birth_y == '') $stop .= "سال تولد را وارد نكرده ايد.<br>";
if (($bdate_view!=0) && ($bdate_view!=1) && ($bdate_view!=2)) $stop .= "Hacking Attempt!";
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_m != '') && (($birth_m == 2) && ($birth_d > 29)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_y != '') && (!is_numeric($birth_y)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
elseif (($birth_y != '') && (($birth_y < 1300) or ($birth_y > 1400)))
{
$stop .= "شما در وارد كردن سال تولد، اشتباه كرديد.<br>";
}
if ($birth_d == 0) $stop .= "روز تولد را انتخاب نكرده ايد.<br>";
if ($birth_m == 0) $stop .= "ماه تولد را انتخاب نكرده ايد.<br>";
if ($birth_y == '') $stop .= "سال تولد را وارد نكرده ايد.<br>";
if (($bdate_view!=0) && ($bdate_view!=1) && ($bdate_view!=2)) $stop .= "Hacking Attempt!";
در همین فایل به دنبال كد زیر بگردید:
$db->query("UPDATE " . USERPREFIX . "_users set fullname='$fullname', info='$info', land='$land', icq='$icq', xfields='$filecontents' where name='$user'");
این خط رو حذف كنید و كد زیر را بجایش قرار دهید:
$birthdate = $birth_y."-".$birth_m."-".$birth_d;
$db->query("UPDATE " . USERPREFIX . "_users set fullname='$fullname', birthdate='$birthdate', bdate_view='$bdate_view', info='$info', land='$land', icq='$icq', xfields='$filecontents' where name='$user'");
$db->query("UPDATE " . USERPREFIX . "_users set fullname='$fullname', birthdate='$birthdate', bdate_view='$bdate_view', info='$info', land='$land', icq='$icq', xfields='$filecontents' where name='$user'");