برای این ساعت از بیست اسکریپت برای شما عزیزان لیست توابع مهم و پرکاربرد شیرترانیکس آماده کرده ایم که گرد آوری این مجموعه توسط گروه بیست اسکریپت انجام شده است . در ادامه باما همراه باشید تا از این توابع پرکاربرد در استفاده هرچه آسان تر شیرترانیکس بهره ببرید.
مسدود کردن دسترسی از رنج آیپی :
اگر قصد دارید دسترسی از طریق یک آیپی را به سایت خود مسدود نمایید، از کد زیر در انتهای فایل .htaccess (ریشه) استفاده نمایید :
order allow,deny deny from 192.168.44.201 allow from all
همچنین برای محدود کردن چند آیپی، به صورت زیر عمل کنید :
order allow,deny deny from 192.168.44.201 deny from 224.39.163.12 deny from 172.16.7.92 allow from all
اما اگر قصد دارید دسترسی از یک رنج آیپی را محدود کنید، از کد زیر استفاده کنید :
order allow,deny deny from 192.168. allow from all
همچنین برای چند رنج آیپی، به صورت زیر عمل کنید :
order allow,deny deny from 192.168. deny from 10.0.0. allow from all
در پایان، لازم است بدانید از طریق php هم میتوانید یک رنج آیپی را محدود کنید :
$range_low = ip2long("100.100.100.100"); $range_high = ip2long("200.200.200.200"); $ip = ip2long($_SERVER['REMOTE_ADDR']); if ($ip >= $range_low && $ip <= $range_high) { exit; }
کافیاست کد ذکر شده را در لاین 2 از فایل LOADER.php (فولدر system) قرار دهید.
- نکته اول) از کد php و htaccess به صورت همزمان استفاده نکنید.
- نکته دوم ) آیپی یا آیپیهای موردنظر خود را جایگزین آیپی درج شده در کد نمایید.
افزایش تعداد کاراکتر ارسال پست :
شیرترانیکس به صورت پیشفرض از محدودیت در کاراکتر برای ارسال پست برخورداره …
برای افزایش محدودیت کاراکتر کوئری زیر رو در دیتابیس اجرا کنید :
ALTER TABLE posts CHANGE message message VARCHAR( 10000 ) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL
- در کوئری ذکر شده عدد 10000 رو به عدد دلخواه تغییر بدید …
متغیرهای مرتبط با صفحه بندی :
برای این منظور، به فایل conf_system.php در فولدر system شیرترانیکس رجوع کرده و کد زیر رو مشاهده کنید :
$C->PAGING_NUM_USERS = 24; $C->PAGING_NUM_POSTS = 15; $C->PAGING_NUM_GROUPS = 24; $C->PAGING_NUM_COMMENTS = 5; $C->POST_LAST_COMMENTS = 5;
5 متغیر ذکر شده برای صفحه بندی در نظر گرفته شدن، که به شرح زیر هستند :
- PAGING_NUM_USERS : تعداد نمایش کاربر در هر صفحه / مقدار تعیین شده : 24
- PAGING_NUM_POSTS : نعداد نمایش پست در هر صفحه / مقدار تعیین شده : 15
- PAGING_NUM_GROUPS : تعداد نمایش گروه در هر صفحه / مقدار تعیین شده : 24
- PAGING_NUM_COMMENTS : تعداد نمایش دیدگاه در هر صفحه / مقدار تعیین شده : 5
- POST_LAST_COMMENTS : تعداد نمایش آخرین دیدگاههای پست / مقدار تعیین شده : 5
- در بین متغیرهای ذکر شده PAGING_NUM_COMMENTS برای نسخه موبایل ساده بهره گرفته میشه که به صورت پیشفرض و به اشتباه در بین 5 متغیر قرار گرفته، اما باقی متغیرها تنها بر روی نسخه دسکتاپ تاثیرگذار هستند.
اما در همین فایل، برای API_ID با شناسه عددی 1 «که همون نسخه موبایل ساده و لمسی هست» شرطی در نظر گرفته شده تا بشه صفحه بندی نسخه موبایل رو از نسخه دسکتاپ متمایز کرد :
if( $C->API_ID == 1 ) { $C->PAGING_NUM_USERS = 10; $C->PAGING_NUM_POSTS = 5; $C->PAGING_NUM_GROUPS = 10; $C->PAGING_NUM_COMMENTS = 5; }
کافیه متناسب با نیاز خودتون مقدار متغیرهای ذکر شده رو تغییر داده و تغییرات رو ذخیره کنید.
جایگزینی نسخه موبایل لمسی به جای ساده :
در صورتی که تمایل دارید نسخه لمسی به جای نسخه ساده در استفاده از موبایل فراخوانی شود، به class_page.php رجوع کرده و کد زیر را بیابید :
$this->controllers .= 'mobile/';
کد زیر را جایگزین کنید :
$this->controllers .= 'mobile_iphone/';
نحوه پیشفرض کردن برگه همه ارسالها :
برای پیشفرض کردن همه ارسالها در داشبورد به مسیر Dashbord.php در فولدر کنترلر رجوع نموده و کد زیر را بیابید :
$tab = 'all'; if( $this->param('tab') && in_array($this->param('tab'), $tabs) ) { $tab = $this->param('tab'); }
مقدار all را در متغیر tab$ به everybody تغییر دهید ؛ مشابه :
$tab = 'everybody'; if( $this->param('tab') && in_array($this->param('tab'), $tabs) ) { $tab = $this->param('tab'); }
فایل htaccess. شیرترانیکس :
فایل htaccess. در فولدر ریشه شیرترانیکس قرار داره (یا حداقل باید وجود داشته باشه)، که شامل کدهای زیر در حالت پیشفرض میشه :
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [NE,L] RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] </IfModule>
تنها تغییراتی که در این فایل هنگام نصب شیرترانیکس انجام میشه، آدرس دهی هست که توسط Installer صورت میگیره ؛ با اینحال میتونید چک کنید، اگر شیرترانیکس در فولدر Public_html نصب شده، آدرس دهی باید بصورت زیر باشه :
RewriteBase /
اگر در فولدر فرعی قرار داره (مثل microblog)، باید به صورت زیر باشه :
RewriteBase /microblog/
و حتما بعد از اسم فولدر باید / قرار بگیره.
- این فایل یکی از ملزومات شیرترانیکس به حساب میاد و نبودش یعنی نقص عملکرد …
- بستهی پلتفورمی که دانلود میکنید قبل از نصب ممکنه هر آدرس دهیای داشته باشه، اما اینستالر اصلاحش میکنه
- بعد از تکمیل فرایند نصب، آدرس دهی اشتباه این فایل باعث میشه صفحات داخلی شبکه با ارور مواجه باشن
- اگر هنگام نصب، در آدرسبار آدرسی بغیر از آدرسی که صحیح هست میبینید، فایل مذکور رو بصورت دستی اصلاح کنید
- این فایل ممکن هست در فایل منیجر هاست شما بصورت مخفی باشه !
تغییر آدرس شیرترانیکس :
تغییر آدرس در شیرترانیکس شامل 3 حالت کلی میشه :
- انتقال سایت به دامنه دیگر یا تغییر دامین
- انتقال سایت از فولدر فرعی به ریشه یا برعکس
- انتقال سایت به لوکال هاست یا برعکس
بالا در خصوص htaccess توضیحاتی داده شد ؛ بنابراین در خصوص گزینهی 2 و 3 علاوه بر توضیحاتی که در این مبحث داده میشه، باید htaccess هم متناسب با تغییرات تغییر کنه ؛ اما تنظیمات اصلی در تغییر دامین در 2 متغیر از فایل conf_main.php که در فولدر system قرار داره، صورت میگیره :
$C->DOMAIN = 'yoursite.ir'; $C->SITE_URL = 'http://yoursite.ir/';
به عنوان مثال، اگر قصد داریم آدرس سایتمون رو از yoursite.ir به yoursite.com تغییر بدیم، تغییرات به صورت زیر خواهد بود :
$C->DOMAIN = 'yoursite.com'; $C->SITE_URL = 'http://yoursite.com/';
اگر قصد داریم به فولدری فرعی انتقال بدیم، باید مقدار متغیر SITE_URL تغییر کنه و اسم فولدر ذکر بشه :
$C->DOMAIN = 'yoursite.ir'; $C->SITE_URL = 'http://yoursite.ir/gold/';
همینطور اگر میخوایم به لوکال تغییر بدیم، به صورت زیر :
$C->DOMAIN = 'localhost'; $C->SITE_URL = 'http://localhost/';
و برای فولدر فرعی در لوکال، به صورت زیر خواهد بود :
$C->DOMAIN = 'yoursite.ir'; $C->SITE_URL = 'http://yoursite.ir/gold/';
نکته) توجه داشته باشیم که همواره در انتهای مقدار متغیر SITE_URL باید / قرار بگیره.
بررسی وضعیت ارسال ایمیل :
در شیرترانیکس ایمیلها از طریق تابع mail ارسال میشوند که با توجه به حجم بالای ایمیلهای اطلاعرسان ارسالی از شبکه، یکی از معایب این پلتفورم به شمار رفته و به کاربران شیرترانیکس پیشنهاد میشود بهینه سازی انجام داده و همچنین ایمیلها را از طریق smtp ارسال نمایند ؛ اما برای اینکه از وضعیت ارسال ایمیل توسط شبکه خود اطمینان حاصل کنیم، دو راه پیش رو داریم :
- آیپی یا آدرس سایت خود را در لیست بلکلیستها چک کنیم
- وضعیت ارسال توسط تابع mail را مورد بررسی قرار دهیم
برای بررسی تابع mail کافیاست فایلی با نام و فرمت mail.php بر روی public_html ایجاد کرده و محتویات زیر را در آن ذخیره نماییم :
<?php mail('girandeh@test.com', 'Onvan e Email', 'Matn e Email'); ?>
- همانطور که مشخص است، ورودیها شامل آدرس ایمیل فرد گیرنده، عنوان ایمیل و متن ایمیل میباشند
- برای بررسی کافیاست ایمیل شخصی خود را درج کرده و به آدرس http://yoursite.ir/mail.php رجوع نمایید
متغیرهای پرکاربرد در شیرترانیکس :
متغیر فراخوانی آدرس شبکه :
$C->SITE_URL
متغیر فراخوانی عنوان شبکه :
$C->SITE_TITLE
متغیر فراخوانی ایمیل شبکه :
$C->SYSTEM_EMAIL
متغیر فراخوانی عنوان قالب فعال :
$C->THEME
متغیر فراخوانی زبان پیشفرض شبکه :
$C->LANGUAGE
متغیر فراخوانی تایمزون :
$C->DEF_TIMEZONE
متغیر فراخوانی آدرس فولدر i :
$C->IMG_URL
متغیر فراخوانی عنوان تصویر کاربری پیشفرض :
$C->DEF_AVATAR_USER
متغیر فراخوانی عنوان تصویر گروه پیشفرض :
$C->DEF_AVATAR_GROUP
متغیر فراخوانی محدودیت کاراکتر پست :
$C->POST_MAX_SYMBOLS
متغیر فراخوانی وضعیت نسخه موبایل :
$C->MOBI_DISABLED
متغیر فراخوانی وضعیت ثبتنام :
$C->USERS_EMAIL_CONFIRMATION
تعریف متغیر برای عنوان قالب در js :
برای فراخوانی آدرس سایت در جاوا اسکریپت از متغیر siteurl استفاده میشود، که این کد در header قالب تعریف شده است :
<script type="text/javascript"> var siteurl = "<?= $C->SITE_URL ?>"; </script>
برای تعریف متغیری که در بر دارندهی نام قالب فعال شبکه باشد، کد زیر را جایگزین میکنیم :
<script type="text/javascript"> var siteurl = "<?= $C->SITE_URL ?>"; var mytheme = "<?= $C->THEME ?>"; </script>
– بدینترتیب دیگر نیازی به درج نام قالب به صورت دستی در فایل جاوا اسکریپت نخواهد بود.
تابع load_langfile :
این تابع فایل زبان موردنظر را فراخوانی میکند.
$this->load_langfile('inside/header.php');
- ورودی : رشته
- مسیر ریشه : system/languages/fa
تابع is_logged :
برای تشخیص لاگین بودن یا لاگین نبودن کاربر میتوان از تابع is_logged استفاده کرد.
if( $this->user->is_logged ) { // لاگین است } if( !$this->user->is_logged ) { // لاگین نیست }
تابع load_template :
این تابع فایل موردنظر در فولدر html قالب را بر میگرداند.
بیشترین کاربرد load_template در فراخوانی فایل header و footer میباشد …
$this->load_template('header.php');
– نوع ورودی : رشته
مخفی سازی آدرس فایل آپلود شده در فولدر تمپ :
در صورتی که تمایل داشته باشید به منظور افزایش ضریب ایمنی آدرس موقت فایل آپلود شده (در فولدر i/temp) به کاربر نمایش داده نشود میتوانید به فایل ajax_postform-attach.php در مسیر system/controllers رجوع کرده و کد زیر را بیابید :
echo '<attach text="'.htmlspecialchars('<a href="'.$C->SITE_URL.'getfile/tmpid:'.$post_temp_id.'/'.htmlspecialchars($ff->title).'" onfocus="this.blur();" title="'.htmlspecialchars($ff->title).'">'.htmlspecialchars(str_cut_link($ff->title,16)).'</a>').'" />';
این کد را جایگزین کنید :
echo '<attach text="'.htmlspecialchars('<a onfocus="this.blur();" title="'.htmlspecialchars($ff->title).'">'.htmlspecialchars(str_cut_link($ff->title,16)).'</a>').'" />';
این قطعه کد را بیابید :
echo '<attach text="'.htmlspecialchars('<a href="'.$C->TMP_URL.$i->file_original.'" target="_blank" onfocus="this.blur();" title="'.htmlspecialchars($i->title).'">'.htmlspecialchars(str_cut($i->title,16)).'</a>').'" />';
کد زیر را جایگزین کنید :
echo '<attach text="'.htmlspecialchars('<a onfocus="this.blur();" title="'.htmlspecialchars($i->title).'">'.htmlspecialchars(str_cut($i->title,16)).'</a>').'" />';
در نهایت کد زیر را یافته :
echo '<attach text="'.htmlspecialchars('<a href="'.$C->TMP_URL.$ii->file_original.'" target="_blank" onfocus="this.blur();" title="'.htmlspecialchars($ii->title).'">'.htmlspecialchars(str_cut($ii->title,16)).'</a>').'" />';
کد زیر را به جای آن قرار دهید :
echo '<attach text="'.htmlspecialchars('<a onfocus="this.blur();" title="'.htmlspecialchars($ii->title).'">'.htmlspecialchars(str_cut($ii->title,16)).'</a>').'" />';
نکته امنیتی : بهتر است از فایلهای پیوست شده توسط کاربران بر روی سرور دیگری نگهداری نمایید.
توابع امنیتی برای ثبتنام توسط ایمیل :
به طور پیشفرض ثبتنام در شیرترانیکس از کد امنیتی یا Captcha برخورداره، اما در عضویت از طریق ایمیل یا عضویت از طریق دعوتنامه کد امنیتی در نظر گرفته نشده! برای اضافه کردن کد امنیتی کافیه به فایل signup.php رجوع کرده و کد زیر رو پیدا کنیم :
if( $C->USERS_EMAIL_CONFIRMATION ) { $reg_id = intval($this->param('regid')); $reg_key = $db1->e($this->param('regkey')); $db1->query('SELECT email, fullname, invited_code FROM unconfirmed_registrations WHERE id="'.$reg_id.'" AND confirm_key="'.$reg_key.'" LIMIT 1'); if( ! $obj = $db1->fetch_object() ) { $D->submit = FALSE; $D->error = TRUE; $D->errmsg = 'signup_err_confirmlink'; $D->errmsg_lngkeys = array(); $D->steps = 3; $this->load_template('signup-step1.php'); return; } $invited_code = trim(stripslashes($obj->invited_code)); $D->email = stripslashes($obj->email); $D->fullname = stripslashes($obj->fullname); } else { $D->captcha_key = ''; $D->captcha_word = ''; $D->captcha_html = ''; list($D->captcha_word, $D->captcha_html) = generate_captcha(5); $D->captcha_key = md5($D->captcha_word.time().rand()); $_SESSION['captcha_'.$D->captcha_key] = $D->captcha_word; }
کد زیر رو جایگزین کنیم :
if( $C->USERS_EMAIL_CONFIRMATION ) { $reg_id = intval($this->param('regid')); $reg_key = $db1->e($this->param('regkey')); $db1->query('SELECT email, fullname, invited_code FROM unconfirmed_registrations WHERE id="'.$reg_id.'" AND confirm_key="'.$reg_key.'" LIMIT 1'); if( ! $obj = $db1->fetch_object() ) { $D->submit = FALSE; $D->error = TRUE; $D->errmsg = 'signup_err_confirmlink'; $D->errmsg_lngkeys = array(); $D->steps = 3; $this->load_template('signup-step1.php'); return; } $invited_code = trim(stripslashes($obj->invited_code)); $D->email = stripslashes($obj->email); $D->fullname = stripslashes($obj->fullname); $D->captcha_key = ''; $D->captcha_word = ''; $D->captcha_html = ''; list($D->captcha_word, $D->captcha_html) = generate_captcha(5); $D->captcha_key = md5($D->captcha_word.time().rand()); $_SESSION['captcha_'.$D->captcha_key] = $D->captcha_word; } else { $D->captcha_key = ''; $D->captcha_word = ''; $D->captcha_html = ''; list($D->captcha_word, $D->captcha_html) = generate_captcha(5); $D->captcha_key = md5($D->captcha_word.time().rand()); $_SESSION['captcha_'.$D->captcha_key] = $D->captcha_word; }
این کد رو پیدا کنیم :
if( !$D->error && !$C->USERS_EMAIL_CONFIRMATION ) { if( !isset($_POST['captcha_key'],$_POST['captcha_word']) || !isset($_SESSION['captcha_'.$_POST['captcha_key']]) || $_SESSION['captcha_'.$_POST['captcha_key']]!=strtolower($_POST['captcha_word']) ) { $D->error = TRUE; $D->errmsg = 'signup_err_captcha'; } }
اینو جایگزین کنیم :
if( !$D->error ) { if( !isset($_POST['captcha_key'],$_POST['captcha_word']) || !isset($_SESSION['captcha_'.$_POST['captcha_key']]) || $_SESSION['captcha_'.$_POST['captcha_key']]!=strtolower($_POST['captcha_word']) ) { $D->error = TRUE; $D->errmsg = 'signup_err_captcha'; } }
بعدش به signup-step2.php در فولدر html قالب رجوع کرده و کد زیر رو پیدا کنیم :
<?php if( ! $C->USERS_EMAIL_CONFIRMATION ) { ?> <tr> <td class="regparam" style="padding-top:13px;"><?= $this->lang('signup_step2_form_captcha') ?></td> <td dir="ltr"> <input type="hidden" name="captcha_key" value="<?= $D->captcha_key ?>" /> <?= $D->captcha_html ?><br /> <input type="text" maxlength="20" name="captcha_word" value="" autocomplete="off" class="reginp" style="width:168px; margin-top:5px;" /> </td> </tr> <?php } ?>
این کد رو جایگزین کنیم :
<tr> <td class="regparam" style="padding-top:13px;"><?= $this->lang('signup_step2_form_captcha') ?></td> <td dir="ltr"> <input type="hidden" name="captcha_key" value="<?= $D->captcha_key ?>" /> <?= $D->captcha_html ?><br /> <input type="text" maxlength="20" name="captcha_word" value="" autocomplete="off" class="reginp" style="width:168px; margin-top:5px;" /> </td> </tr>
جلوگیری از ثبتنام با ایمیل موقت :
صدها سایت ارائه سرویس Temporary Mail یا ایمیل موقت در اینترنت وجود دارند که چند مورد از اونها ایرانی هستند و به واسطهی چنین سرویسهایی کاربر میتونه بدون استفاده از ایمیل اصلی خودش اقدام به ثبت نام کرده و حتی ایمیل کاربری خودش رو در مدت زمان کوتاهی تایید کنه!
برای جلوگیری از ثبتنام توسط ایمیلهای موقت کافیه به فایل signup.php از فولدر کنترلر رجوع کرده، کد زیر رو پیدا کنیم :
if( !$D->error && empty($D->fullname) ) {
این کد رو قبل از اون قرار بدیم :
if ( preg_match('/^[a-z0-9._%+-]+@(?:emeil.ir|emeil.in|emeil.cf|inbax.tk|mailfa.tk|emall.ml|azmeil.tk|chapar.ga|emailirani.ir|chaparmail.tk|[a-z])$/', $D->email) ) { $D->error = TRUE; $D->errmsg = 'signup_err_email_invalid_address'; }
و البته برای تکمیل کار به system/languages/fa/outside/signup.php رجوع کرده و کد زیر رو اضافه کنیم :
'signup_err_email_invalid_address' => 'عضویت از طریق سرویس دهندهی ایمیل مذکور مقدور نمیباشد.',
چگونه صفحه جدید ایجاد کنیم ؟!
برای ایجاد یک صفحه دلخواه، مثلاً یک صفحه مناسبتی مراحل زیر را دنبال کنید …
- به system/controllers رجوع کرده و یک فایل جدید با فرمت php بسازید ؛ مثلاً stx.php
- محتویات زیر را درون آن کپی کنید :
<?php $D->page_title = $C->SITE_TITLE.' - عنوان صفحه'; $this->load_template('stx.php'); ?>
- به فولدر themes، قالب موردنظر، سپس فولدر html رجوع کرده و فایل جدیدی با همان نام و فرمت بسازید
- اگر فایلی که ساخته بودید stx.php بود، اینجا هم باید stx.php بسازید
- محتویات زیر را درون آن کپی کنید :
<?php $this->load_template('header.php'); ?> <div id="pagebody"> <div class="ttl"><div class="ttl2"><h3>عنوان صفحه</h3></div></div> <div class="greygrad"> <div class="greygrad2"> <div class="greygrad3"> توضیحات صفحه ... </div> </div> </div> </div> <?php $this->load_template('footer.php'); ?>
حالا با رجوع به http://yoursite.ir/stx میتوانید به صفحه مورد نظر خود دسترسی داشته باشید …
دسترسی به نسخه موبایل از سابدامنه :
در شیرترانیکس دسترسی به نسخه موبایل به صورت اتوماتیک و با شناسایی HTTP_USER_AGENT از طریق Class_page صورت میپذیرد. به صورت پیشفرض آدرس درنظر گرفته شده برای نسخه موبایل در حالت ساده و لمسی yoursite.ir/m میباشد که میتوان با ایجاد یک ساب دامنه آن را به m.yoursite.ir تغییر داد. در ادامه میبایست به فولدر m ساخته شده در public_html رجوع کرده و پس از ایجاد index.php، محتویات زیر را در آن کپی و ذخیره نمایید :
require_once('../system/LOADER.php');
جلوگیری از Copy/Paste در ادیتور :
در صورتی که تمایل دارید کاربران شبکه شما نتونن متنی رو در ادیتور ارسال پست یا ارسال دیدگاه Paste کنند، کد زیر رو در فایل footer.php یا header.php قالب سایتتون قرار بدید :
<script type="text/javascript"> $(document).ready(function() { $('textarea').bind('copy paste', function (e) { e.preventDefault();}); }); </script>
آدرسدهی فایلها در فولدر theme :
برای آدرسدهی فولدر theme از کد زیر استفاده میشود :
<?= $C->SITE_URL.'themes/'.$C->THEME ?>
بدینترتیب، نمونهای از آدرسدهی فایل css به شکل زیر خواهد بود :
<link href="<?= $C->SITE_URL.'themes/'.$C->THEME ?>/css/inside.css" type="text/css" rel="stylesheet" />
همچنین، آدرسدهی فایل js بدین صورت میباشد :
<link href="<?= $C->SITE_URL.'themes/'.$C->THEME ?>/css/inside.css" type="text/css" rel="stylesheet" />
برای فراخوانی یک تصویر نیز از این کد استفاده میشود :
<img class="colorbox-1292" src="<?= $C->SITE_URL.'themes/'.$C->THEME ?>/imgs/tasvir.jpg" />
پایان امیدوارم از این مجموعه لذت ببرید 🙂 بیست اسکریپت
- مشکلی دارید؟ جواب خود را در پست فروم بگیرید
- منبع : بیست اسکریپت لطفا رعایت کنید