سلام ممنون از راهنمایی شما اتفاقا قبل اینکه نظر شما رو بخونم همین کار رو کردم شاید برای دوستان هم بدرد بخوره که آموزشش رو قرار میدم :
1- همان طور که اشاره شد فایل login.tpl و registeration.tpl را باز کنید و "نام کاربری" را به "شماره موبایل" تغییر بدید.
2- به مسیر language/farsi رفته و فایل website.lng را ویرایش کنید و در اون فایل هرچی "نام کاربری" پیدا کردید به "شماره موبایل" تغییر بدین.
فقط یک نکته آرایه reg_err_3 را پیدا کنید و متن خطا رو به "شماره موبایل 11 رقمی وارد کنید" تغییر دهید. چون میخوایم درست بودن شماره موبایل در هنگام ثبت نام چک شود.
3- فایل ثبت نام engine/modules/register.php را باز کرده و خط زیر را پیدا کنید :
if (strpos( strtolower ($name) , '.php' ) !== false) $stop .= $lang['reg_err_4'];
زیر این خط این دستور را وارد کنید تا شماره موبایل بصورت صحیح وارد شود (مثلا 09 باید حتما در ابتدای شماره قرار بگیرد.)
if(preg_match("/^09[0-9]{9}$/", $name)) {}else{ $stop .= $lang['reg_err_4'];}
4- دستور زیر را پیدا کرده و اعدادی که طول رشته را در دستور شرطی زیر تعیین می کند به 11 تغییر بدین (شماره موبایل باید 11 رقم باشه)
if( dle_strlen( $name, $config['charset'] ) > 11 OR dle_strlen(trim($name), $config['charset']) < 11) $stop .= $lang['reg_err_3'];
5- در همین فایل خط زیر کد های زیر را پیدا کرده و حذف کنید (البته من کامنت کردم که اجرا نشه)
if( function_exists('mb_strtolower') ) {
$name = trim(mb_strtolower($name, $config['charset']));
} else {
$name = trim(strtolower( $name ));
}
6- دو خط پایین تر کد زیر را پیدا کنید :
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE email = '$email' OR LOWER(name) REGEXP '[[:<:]]{$search_name}[[:>:]]' OR name = '$name'" );
7- به جای کد بالا این کد را وارد کنید :
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE name = '$name'" );
خب تمام شد این فایل رو ببندید فقط تابع CheckLogin رو که بصورت آژاکس نام کاربری چک میکنه باید ویرایش کنیم برای همین مراحل زیر را دنبال کنید :
7- فایل engine/ajax/registration.php را باز کنید و در اون کد زیر را پیدا کنید : (ویرایش ها دقیقا مثل فایل قبلیه)
if( stripos(urlencode ($name), "%AD") !== false ) {
قبل از کد بالا دستور زیر را وارد کنید :
if(preg_match("/^09[0-9]{9}$/", $name)) {}else{ $stop .= $lang['reg_err_4'];}
دستور زیر را پیدا کرده و آن را حذف یا کامنت کنید :
if( function_exists('mb_strtolower') ) {
$name = trim(mb_strtolower($name, $config['charset']));
} else {
$name = trim(strtolower( $name ));
}
خط زیر پیدا کرده و طول رشته ای که در دستور شرط چک میشه به 11 تغییر بدین (چون شماره موبایل 11 رقمه )
if (dle_strlen($name, $config['charset']) > 11 OR dle_strlen(trim($name), $config['charset']) < 11)
الان دیگه نام کاربری به شماره موبایل تبدیل شد و شماره موبایل توسط سیستم چک می شود و باید 11 رقم بوده و با 09 شروع شود.
ادمین عزیز اگه بدرد میخوره تا در قسمت هک ها قرار بدم