توضیح مختصر: همانطور که می دانید و در مطلبی که توسط خودم برای توضیح مشخصات نسخه 7.5 دیتالایف انجین خواندید، نسخه 7.5 دیتالایف انجین که حدوداً 2 روز پیش به وب عرضه شد، دارای یک امکان بسیار قدرتمند و بسیار پرکاربرد به نام smartphones یا همان تلفن های همراه می باشد.
توسط این امکان می توانید سایت خود را توسط تلفن همراه مشاهده و یا مدیریت کنید. حتی توانایی فعال/غیرفعال و تنظیم کردن آن هم دارید.
امتحان شده بر روی: نسخه 7.2
نویسنده هک: Dr. Soft Soft
توجه: این هک بر روی نسخه 7.2 هنوز باگ هایش تعمیر نشده، اما جای هیچگونه نگرانی نیست. بالاخره یک ریسک هست.
مرحله اول: دانلود فایل ضمیمه
مرحله دوم: نصب هک با اطمینان خاطر کامل و دقتی بالا
فایل adminpanel.lng زبان خود را باز کنید و بدنبال کد زیر بگردید:
'charset' => "windows-1251",
در زیر آن کدهای زیر را قرار دهید:
'opt_smartphone' => "تنظیم کردن پشتیبان و کار کردن با تلفن های همراه",
'opt_sys_smart' => "فعال سازی خودکار پشتیبان برای تلفن های همراه",
'opt_sys_smartd' => "اگر شما این پشتیبان را فعال کنید برای نمایش سایتتان به کاربران، سیسم تلفن همراه استفاده خواهد کرد از یک قالب سبکتر برای سایت. قبل از انجام این انتخاب, مطمئن شوید که فولدر templates / templates / یک فولدر با نام قالب است <b>تلفن همراه</b>.",
'opt_sys_sm_im' => "یک عکس هنگام نمایش در مطالب با تلفن همراه قرار دهید",
'opt_sys_sm_imd' => "اگر 'بله' باشد, مطالب بدون تغییر نمایش داده خواهند شد, اگر 'خیر' باشد, سیستم تلفن همراه تمام تصاویر مطالب را حذف خواهد کرد.",
'opt_sys_smart' => "فعال سازی خودکار پشتیبان برای تلفن های همراه",
'opt_sys_smartd' => "اگر شما این پشتیبان را فعال کنید برای نمایش سایتتان به کاربران، سیسم تلفن همراه استفاده خواهد کرد از یک قالب سبکتر برای سایت. قبل از انجام این انتخاب, مطمئن شوید که فولدر templates / templates / یک فولدر با نام قالب است <b>تلفن همراه</b>.",
'opt_sys_sm_im' => "یک عکس هنگام نمایش در مطالب با تلفن همراه قرار دهید",
'opt_sys_sm_imd' => "اگر 'بله' باشد, مطالب بدون تغییر نمایش داده خواهند شد, اگر 'خیر' باشد, سیستم تلفن همراه تمام تصاویر مطالب را حذف خواهد کرد.",
فایل inc\options.php را باز کنید و بدنبال متن زیر بگردید:
document.getElementById('rss').style.display = "none";
در زیر آن کد زیر را قرار دهید:
document.getElementById('smartphone').style.display = "none";
در همان فایل بدنبال متن زیر بگردید:
if(selectedOption == 'imagesconf') {document.getElementById('imagesconf').style.display = "";}
در زیر آن کد زیر را قرار دهید:
if(selectedOption == 'smartphone') {document.getElementById('smartphone').style.display = "";}
مجدد در همان فایل بدنبال کد زیر بگردید:
<td class=tableborder><a href="javascript:ChangeOption('imagesconf');"><img title="$lang[opt_imagesys]" src="engine/skins/images/conf_images.png" border="0"></a>
کد زیر را در زیر آن اضافه کنید:
<td class=tableborder><a href="javascript:ChangeOption('smartphone');"><img title="$lang[opt_smartphone]" src="engine/skins/images/smartphone.jpg" border="0"></a>
مجدد در همان فایل بدنبال متن زیر بگردید:
echo <<<HTML
<tr style='display:none' id="rss"><td>
<tr style='display:none' id="rss"><td>
در بالای آن کد زیر را قرار دهید:
echo <<<HTML
<tr style='display:none' id="smartphone"><td>
<table width="100%">
<tr>
<td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">{$lang['opt_smartphone']}</div></td>
</tr>
</table>
<div class="unterline"></div><table width="100%">
HTML;
showRow( $lang['opt_sys_smart'], $lang['opt_sys_smartd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[allow_smartphone]", "{$config['allow_smartphone']}" ) );
showRow( $lang['opt_sys_sm_im'], $lang['opt_sys_sm_imd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[allow_smart_images]", "{$config['allow_smart_images']}" ) );
echo "</table></td></tr>";
<tr style='display:none' id="smartphone"><td>
<table width="100%">
<tr>
<td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">{$lang['opt_smartphone']}</div></td>
</tr>
</table>
<div class="unterline"></div><table width="100%">
HTML;
showRow( $lang['opt_sys_smart'], $lang['opt_sys_smartd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[allow_smartphone]", "{$config['allow_smartphone']}" ) );
showRow( $lang['opt_sys_sm_im'], $lang['opt_sys_sm_imd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[allow_smart_images]", "{$config['allow_smart_images']}" ) );
echo "</table></td></tr>";
فایل inc\templates.php را باز کنید و بدنبال کد زیر بگردید:
if(strtolower($do_template) == "default" OR strtolower($do_template) == ''){ msg("Error", $lang['opt_error'], $lang['opt_error_4'], "$PHP_SELF?mod=templates&user_hash={$dle_login_hash}");
متن زیر را با کد بالا جایگزین کنید:
if( strtolower( $do_template ) == "default" OR strtolower( $do_template ) == "smartphone" OR strtolower( $do_template ) == '' ) {
msg( "Error", $lang['opt_error'], $lang['opt_error_4'], "$PHP_SELF?mod=templates&user_hash={$dle_login_hash}" );
msg( "Error", $lang['opt_error'], $lang['opt_error_4'], "$PHP_SELF?mod=templates&user_hash={$dle_login_hash}" );
در همان فایل بدنبال کد زیر بگردید:
if(strtolower($do_template) == "default"){ msg("Error", $lang['opt_error'], $lang['opt_error_4'], "$PHP_SELF?mod=templates&user_hash={$dle_login_hash}");
با زیر را با کد بالا جایگزین کنید:
if( strtolower( $do_template ) == "default" OR strtolower( $do_template ) == "smartphone" ) {
msg( "Error", $lang['opt_error'], $lang['opt_error_4'], "$PHP_SELF?mod=templates&user_hash={$dle_login_hash}" );
msg( "Error", $lang['opt_error'], $lang['opt_error_4'], "$PHP_SELF?mod=templates&user_hash={$dle_login_hash}" );
مجدد در همان فایل بدنبال کد زیر بگردید:
if($do_template == '' or !$do_template){
$do_template = $config['skin'];
$show_delete_link = '';
}elseif($do_template != $config['skin']){
$show_delete_link = "[<a class=\"maintitle\" href=\"$PHP_SELF?mod=templates&subaction=delete&user_hash={$dle_login_hash}&do_template=$do_template\">$lang[opt_dellink]</a>]";
}
$do_template = $config['skin'];
$show_delete_link = '';
}elseif($do_template != $config['skin']){
$show_delete_link = "[<a class=\"maintitle\" href=\"$PHP_SELF?mod=templates&subaction=delete&user_hash={$dle_login_hash}&do_template=$do_template\">$lang[opt_dellink]</a>]";
}
کدهای زیر را با کد بالا جایگزین کنید:
$show_delete_link = '';
if( $do_template == '' or ! $do_template ) {
$do_template = $config['skin'];
} elseif( $do_template != $config['skin'] AND $do_template != "smartphone" ) {
$show_delete_link = "[<a class=\"maintitle\" href=\"$PHP_SELF?mod=templates&subaction=delete&user_hash={$dle_login_hash}&do_template=$do_template\">$lang[opt_dellink]</a>]";
}
if( $do_template == '' or ! $do_template ) {
$do_template = $config['skin'];
} elseif( $do_template != $config['skin'] AND $do_template != "smartphone" ) {
$show_delete_link = "[<a class=\"maintitle\" href=\"$PHP_SELF?mod=templates&subaction=delete&user_hash={$dle_login_hash}&do_template=$do_template\">$lang[opt_dellink]</a>]";
}
فایل engine\init.php را باز کنید و بدنبال کد زیر بگردید:
$config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];
کد زیر را در زیر کد بالا قرار دهید:
$smartphone_detected = false;
if( isset( $_REQUEST['action'] ) and $_REQUEST['action'] == "mobiledisable" ) $_SESSION['mobile_disable'] = "1";
if ( $config['allow_smartphone'] AND !$_SESSION['mobile_disable'] ) {
if ( check_smartphone() ) {
if ( @is_dir ( ROOT_DIR . '/templates/smartphone' ) ) {
$config['skin'] = "smartphone";
$smartphone_detected = true;
$config['ajax'] = false;
$config['allow_comments_wysiwyg'] = "no";
}
}
}
if( isset( $_REQUEST['action'] ) and $_REQUEST['action'] == "mobiledisable" ) $_SESSION['mobile_disable'] = "1";
if ( $config['allow_smartphone'] AND !$_SESSION['mobile_disable'] ) {
if ( check_smartphone() ) {
if ( @is_dir ( ROOT_DIR . '/templates/smartphone' ) ) {
$config['skin'] = "smartphone";
$smartphone_detected = true;
$config['ajax'] = false;
$config['allow_comments_wysiwyg'] = "no";
}
}
}
مجدد در همان فایل بدنبال کد زیر بگردید:
if ($member_id['pm_unread'] > intval($_COOKIE['dle_newpm'])) {
کد زیر را با کد بالا جایگزین کنید:
if ($member_id['pm_unread'] > intval ( $_COOKIE['dle_newpm'] ) AND !$smartphone_detected) {
فایل modules\fullsearsh.php را باز کنید و بدنبال کد زیر بگردید:
$searchtable .= <<<HTML
<input type="hidden" name="result_from" id="result_from" value="$result_from">
<input type="hidden" name="result_from" id="result_from" value="$result_from">
کد زیر را در بالای آن اضافه کنید:
if ( $smartphone_detected ) {
$link_full_search = "";
} else {
$link_full_search = "<input type=\"button\" class=\"bbcodes\" style=\"width:150px\" name=\"dofullsearch\" id=\"dofullsearch\" value=\"{$lang['s_ffullstart']}\" onClick=\"javascript:full_submit(1); return false;\" />";
}
$link_full_search = "";
} else {
$link_full_search = "<input type=\"button\" class=\"bbcodes\" style=\"width:150px\" name=\"dofullsearch\" id=\"dofullsearch\" value=\"{$lang['s_ffullstart']}\" onClick=\"javascript:full_submit(1); return false;\" />";
}
مجدد در همان فایل بدنبال کد زیر بگردید:
<input type="button" class="bbcodes" style="width:150px" name="dofullsearch" id="dofullsearch" value="{$lang['s_ffullstart']}" onClick="javascript:full_submit(1); return false;" />
کد زیر را جایگزین کد بالایی کنید:
{$link_full_search}
در همان فایل بدنبال کد زیر بگردید:
$tpl->set('{result-text}', "<div id='news-id-".$row['id']."'>".$row['story']."</div>");
در بالای آن کد زیر را قرار دهید:
if ($smartphone_detected AND !$config['allow_smart_images']) {
$row['story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['story'] );
$row['story'] = preg_replace( "#<img(.+?)>#is", "", $row['story'] );
}
$row['story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['story'] );
$row['story'] = preg_replace( "#<img(.+?)>#is", "", $row['story'] );
}
فایل modules\functions.php را باز کنید و بدنبال کد زیر بگردید:
if(@is_dir("./templates/$file") and ($file != "." and $file!="..")){
کد زیر را با کد بالا جایگزین کنید:
if( @is_dir( "./templates/$file" ) and ($file != "." AND $file != ".." AND $file != "smartphone") ) {
مجدد در همان فایل بدنبال کد زیر بگردید:
closedir($handle);
در زیر آن اضافه کنید:
sort($templates_list);
در همان فایل بدنبال کد زیر بگردید:
global $db, $is_logged, $member_id, $xf_inited, $cat_info, $config, $user_group, $category_id, $_TIME, $lang, $smartphone_detected;
در آخر قبل از ?> کد زیر را اضافه کنید:
function check_smartphone() {
$phone_array = array('iphone', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
$agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
foreach ($phone_array as $value) {
if ( strpos($agent, $value) !== false ) return true;
}
return false;
}
$phone_array = array('iphone', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
$agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
foreach ($phone_array as $value) {
if ( strpos($agent, $value) !== false ) return true;
}
return false;
}
فایل modules\searsh.php را باز کنید و بدنبال کد زیر بگردید:
$searchtable .= <<<HTML
<input type="hidden" name="result_from" id="result_from" value="$result_from">
<input type="hidden" name="result_from" id="result_from" value="$result_from">
در بالای آن اضافه کنید:
if ( $smartphone_detected ) {
$link_full_search = "";
} else {
$link_full_search = "<input type=\"button\" class=\"bbcodes\" style=\"width:150px\" name=\"dofullsearch\" id=\"dofullsearch\" value=\"{$lang['s_ffullstart']}\" onClick=\"javascript:full_submit(1); return false;\" />";
}
$link_full_search = "";
} else {
$link_full_search = "<input type=\"button\" class=\"bbcodes\" style=\"width:150px\" name=\"dofullsearch\" id=\"dofullsearch\" value=\"{$lang['s_ffullstart']}\" onClick=\"javascript:full_submit(1); return false;\" />";
}
مجدد در همان فایل بدنبال کد زیر بگردید:
<input type="button" class="bbcodes" style="width:150px" name="dofullsearch" id="dofullsearch" value="{$lang['s_ffullstart']}" onClick="javascript:full_submit(1); return false;" />
بعد از کد زیر را قرار دهید:
{$link_full_search}
مجدد در همان فایل بدنبال کد زیر بگردید:
$tpl->set('{result-text}', "<div id='news-id-".$row['id']."'>".$row['story']."</div>");
کد زیر را در بالای آن قرار دهید: (دقت داشته باشید که از کد بالا دو تا وجود داره و شما باید کد زیر را بالای کد اولی قرار دهید)
if ($smartphone_detected AND !$config['allow_smart_images']) {
$row['story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['story'] );
$row['story'] = preg_replace( "#<img(.+?)>#is", "", $row['story'] );
}
$row['story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['story'] );
$row['story'] = preg_replace( "#<img(.+?)>#is", "", $row['story'] );
}
فایل modules\show.custom.php را باز کنید و بدنبال کد زیر بگردید:
$tpl->set('{short-story}', stripslashes($row['short_story']));
در بالای آن کد زیر را قرار دهید:
if ($smartphone_detected AND !$config['allow_smart_images']) {
$row['short_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['short_story'] );
$row['short_story'] = preg_replace( "#<img(.+?)>#is", "", $row['short_story'] );
}
$row['short_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['short_story'] );
$row['short_story'] = preg_replace( "#<img(.+?)>#is", "", $row['short_story'] );
}
فایل modules\show.full.php را باز کنید و بدنبال کد زیر بگردید:
$tpl->set('{title}', $metatags['title']);
در زیر آن کد زیر را قرار دهید:
if ($smartphone_detected AND !$config['allow_smart_images']) {
$row['short_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['short_story'] );
$row['short_story'] = preg_replace( "#<img(.+?)>#is", "", $row['short_story'] );
$row['full_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['full_story'] );
$row['full_story'] = preg_replace( "#<img(.+?)>#is", "", $row['full_story'] );
}
$row['short_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['short_story'] );
$row['short_story'] = preg_replace( "#<img(.+?)>#is", "", $row['short_story'] );
$row['full_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['full_story'] );
$row['full_story'] = preg_replace( "#<img(.+?)>#is", "", $row['full_story'] );
}
فایل modules\show.short.php را باز کنید و بدنبال کد زیر بگردید:
if( $config['rss_format'] == 2 ) {
$row['full_story'] = htmlspecialchars( strip_tags( stripslashes( $row['full_story'] ) ) );
if( $row['full_story'] == "" ) $row['full_story'] = $row['short_story'];
$tpl->set( '{full-story}', $row['full_story'] );
}
} else {
$row['full_story'] = htmlspecialchars( strip_tags( stripslashes( $row['full_story'] ) ) );
if( $row['full_story'] == "" ) $row['full_story'] = $row['short_story'];
$tpl->set( '{full-story}', $row['full_story'] );
}
} else {
کد زیر را بعد از آن قرار دهید:
if ($smartphone_detected AND !$config['allow_smart_images']) {
$row['short_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['short_story'] );
$row['short_story'] = preg_replace( "#<img(.+?)>#is", "", $row['short_story'] );
}
$row['short_story'] = preg_replace( "#<!--TBegin-->(.+?)<!--TEnd-->#is", "", $row['short_story'] );
$row['short_story'] = preg_replace( "#<img(.+?)>#is", "", $row['short_story'] );
}
نکته: دقت کنید که کد بالا نه بالاییش در آخر دارای { و } است. شما باید کد بالا رو در بین این دو قرار بدید!
دانلود فایل ضمیمه:
توجه: بدلیل طولانی و حساس بودن نحوه نصب و احتمال خرابی در کد های بالا، فایل نصب به دو زبان انگلیسی و روسی در فایل ضمیمه قرار داده شده است.
تنها در صورت برخورد با مشکل نظر ارسال کنید. تشکر