Mavzu: Johncmsni o‘rganamiz!
So'rov natijasi
O‘zgina bo‘lsada bilimga ega bo‘ldingizmi?
Xa (5)
Yo‘q (1)
15. MasterLeo (M) (527) [off] | TXT | 27| 17 Sep 2017, 19:53
REYXAN (17 Sep 2017, 17:48):
Yana yozibdimi maqola ubu narsa tuzmaptimi ko'rib o'rganardik ?
REYXAN, bor albatta. Xammasini birdan yozsam charchab qolishadi. Berilgan darslarni amalda sinashga xam vaqt qoldiryapman. xisoblab. :-)
16. MasterLeo (M) (527) [off] | TXT | 27| 17 Sep 2017, 19:58
O'rgangan narsalaringiz bo'yicha tajribalar o'tkazib turishni unutmang! Demak, endigi darsimiz: yadro funksiyalari (functions).


JohnCMS yadrosi incfiles/core.php fayli bo'lib, bu fayl bir qancha "class" fayllarga ega. Bu fayllar esa incfiles/classes/ papkasi ichida joylashgan. Bugun biz shu "class"lardan biri bo'lgan "functions"ni o'rganamiz. Functions bizga ko'plab amallarni qisqartirishda yordam beradi. Bir boshidan boshlaylik.

functions::antiflood()

Bu funksiya user qoldirayotgan xabarlar flood yoki flood emasligini aniqlab beradi. Ya'ni avvalgi posti bilan hozirgi posti oralig'i juda kam emasligini aniqlab beradi. Agar flood qoldirayotgan bo'lsa funksiya javobi TRUE, aks holda FALSE bo'ladi. Ishlatish tartibi esa quyidagicha:

$flood = functions::antiflood();
if ($flood)
$error = $lng['error_flood'] . ' ' . $flood . ' ' . $lng['seconds'];


Ishlash tartibi: $flood o'zgaruvchisi anflood funksiyasiga teng. Agar o'zgaruvchi mavjud holatda (TRUE) qaytsa, u holda $error o'zgaruvchisiga xabar biriktiriladi. (u haqida keyingi darslarda).


Keyingi funksiya:
functions::antilink($var)

Antilink funksiyasi belgilangan matndagi link (ssilka)larni matndan olib tashlaydi/o'zgartirib qo'yadi. Qavs ichi bo'sh emas, $var o'zgaruvchisi borligiga sabab esa, bu funkiya antifloodga o'xshab so'rovga javob yubormaydi, ish bajaradi. $var => bu turli hil belgilardan iborat matn ekanini bilib olsangiz yetarli)) albatta, bu funksiyadan foydalanishda bu o'zgaruvchini yozmaymiz, batafsil tasnifini keyinchalik bilib olasiz. Antilink ishlash tartibi:
$gap = 'Sizlarni

Создание и разработка сайтов в Ташкенте, Узбекистан - Sayt.Uz

Sayt.uz занимается созданием сайтов для малого и среднего бизнеса по всей Узбекистан. Большой выбор готовых отраслевых решений и дизайнов, индивидуальное изготовление по требованиям заказчика. Закажите сайт и получите первый год хостинга бесплатно. Дополнительные услуги и сервисы по продвижению бизнеса в интернете.

http://sayt.uz
saytiga taklif qilaman!';
$natija = functions::antilink($gap);
echo $natija;

Bu funksiya brauzerga quyidagicha jumla yuklaydi:
Sizlarni ### saytiga taklif qilaman!

Demak, ishlash tartibi bilan tanishib oldingiz a? Keyingi funksiya:
functions::checking($str)

Buning ham ishlash tartibi antilinkga o'xshash, faqat uslubi boshqacha, bu belgilangan jumladagi UTF-8 kodirovkasiga tegishli bo'lmagan belgilarni olib tashlaydi. Masalan emojilar (messenjerlar smayllari) UTF-8ga begona, demak bu funksiya qo'llanganida bular matndan olib tashlanadi.


Navbatdagi funksiya:
functions::checkout($str, $br = 0, $tags = 0)

Bu funksiya matnni oydinlashtiradi. Ya'ni agar matnda belgilar holda bo'lganida, bularni filtrlab, belgilarning asl holatini (masalan ' ) brauzerga uzatadi. Agar $br=1 qilinsa, r n tartibida qator tashlashlar yozilgan bo'lsa, shularni filtrlab, r n larni haqiqiy qator tashlashga o'zgartirib, brauzerga uzatadi. $tags=1 qilinganida esa, matnda bb kodlar ishlashi taminlanadi. Agar $br va $tags o'zgaruvchilari funksiyaga kiritilmasa, default holatda "0" deb olinadi. Ishlatib ko'ramiz:

$matn = 'Salom r n qaleysan?';
$natija = functions::checkout($matn, $br=1, $tags=0);
echo $natija;

Bu kod brauzerga quyidagicha yuklanadi:
Salom
Qaleysan?

Ko'rib turganingizdek, rn qator tashlashga o'zgartirildi. $tagsni ko'rsatmaganimiz sabab default nol deb hisoblanadi va matnda bb kodlardan foydalanganimizda ham ish bermaydi.

Navbatdagi funksiya:
functions::display_counters()

ushbu funksiya juda oddiy, ko'rsatilgan joyga bazada mavjud hisoblagichlarni (top-reyting hisoblagichlarni demoqchiman) chiqaradi. Ishlatish ham juda oddiy:

functions::display_counters();


17. MasterLeo (M) (527) [off] | TXT | 27| 17 Sep 2017, 20:04
Davomi
...
Bu kod esa brauzerga belgilangan tartibdagi top-reyting hisoblagichlari va/yoki bannerlarn chiqaradi. Bular, o'z navbatida, admin paneli orqali qo'shiladi va boshqariladi.

Navbatdagi funksiya:
functions::display_date($var)

Agar shu funksiya bo'lmaganida huddi cho'loqqa o'xshab qolardim)) Bu funksiya vazifasi Unix time stamp formatidagi vaqtni (raqamlarni, bu haqida o'tgan darsda ma'lumot oldingiz) Sana ko'rinishiga, kecha, bugun qo'shimchalari bilan brauzerga uzatadi. Masalan:
$vaqt = time();
echo functions::display_date($vaqt);

Buning natijasi esa, brauzerga quyidagi javobni yuboradi:
Bugun, 17:25

Bu holatda yozilgan xabarlarning vaqti aniq holatda brauzerga uzatiladi. Agar $vaqt kechagi vaqt bo'yicha bo'lsa, u holda javob:
Kecha, 17:25 ko'rinishida bo'ladi. Agar kechadan oldingi bo'lsa, u holda sana to'liq holda yoziladi:
09.02.2015 / 17:25


Navbatdi funksiya:
functions::display_error($error = '', $link = '')


Ushbu funksiyadan xatoliklarni aks ettirishda foydalaniladi. Brauzerda ko'rinishi esa qizil fon ichida xatolik haqida yoziladi va agar link yozilgan bo'lsa, ostiga o'xsha link kiritiladi. Ishlatish:
$matn = 'XATOLIK! Siz so'rayotgan sahifa mavjud emas!';
$manzil = '<a href="'.$home.'">Bosh sahifaga</a>';
echo functions::display_error($error = $matn, $link = $manzil);
yoki:
echo functions::display_error($matn, $manzil);

Yoki qavs ichiga faqat xatolik haqidagi matnni kiritish ham mumkin:

echo functions::display_error('Bnday sahifa mavjud emas!');

Menimcha tushunarli bo'ldi. Qolganini mashqlar jarayonida anglab yetasiz. Biz esa keyingi funksiyaga o'tamiz:

functions::display_pagination($url, $start, $total, $kmess)


Bu funksiya sahifalashda foydalaniladi. Va user sozlamalarida belgilangandan ortiqcha detallar (masalan: postlar, smslar, boshqa ro'yxatlar) esa keyingi sahifaga o'tadi. Bu haqida batafsil keyinroq, vaqti kelganida gaplashamiz))

functions::rus_lat($str) va functions::trans($str)


Bu ikkalasini birga yozganimni sababi, vazifasi deyarli bir xil, faqat bir-biriga teskari amalni bajaradi.

Ushbu funksiyalar belgilangan matnni kirill alifbosidan lotin alifbosiga yoki lotin alifbosidan kirill alifbosiga o'giradi.
$matn = 'Калеслар?';
echo functions::rus_lat($matn);

bu holat brauzerga
Kaleslar?
degan jumlani uzatadi.

$matn = 'Kaleslar?';
echo functions::trans($matn);

Bu holatda esa brauzerga
Калеслар?
Jumlasi uzatiladi.


functions::timecount($var)


Ushbu funksiya vaqtni sanaydi. Ya'ni kiritilgan soniyalar necha kun, soat, daqiqa ekanini brauzerga uzatadi. Bundan misol uchun userning saytda o'tkazga vaqtlarini (`total_on_site`) hisoblashda foydalaniladi


functions::format($name)

Ushbu funksiya belgilangan faylni formatini aniqlab beradi. Masalan:
$file = $home.'/files/file.zip';
echo functions::format($file);

Bu brauzerimizda .zip bo'lib chiqadi.

18. BlackCat (743) [off] | TXT | 27| 17 Sep 2017, 20:08
:t :joyy:
19. MasterLeo (M) (527) [off] | TXT | 27| 17 Sep 2017, 21:47
smilelar t xarfda chiqqan uzur g
20. Tayotabek (1511) [off] | TXT | 27| 26 Sep 2017, 22:49
Shu xolosmi??
Davomi böladimi...
21. MasterLeo (M) (527) [off] | TXT | 56| 2 Jan 2018, 11:52
Endi userlarning ma'lumotlari bilan ishlashni, aniqrog'i userni "aks ettirish"ni o'rganamiz. Bu ham yadroning funksiyalaridan biri, va bu funksiya ishimizni yahshigina yengillashtirib beradi.

functions::get_user($id)

ushbu funksiyani ishlash prinspi oddiy, belgilangan ID raqamdagi user ma'lumotlari joylashgan qatorni (mysql bazasidagi qatorni) belgilab beradi.
Masalan:
$admin = functions::get_user('1');
echo $admin['name'];

ko'rib turganingizdek bu mysql so'rov yozib vaqt ketkazishga zarurat qoldirmaydi. Bu yo'l bilan `users` jadvalidagi har bir ustun ma'lumotini aks ettirish mumkin. Menimcha bu funksiya shundoq ham tushunarli, endi asosiy funksiya haqida gaplashsak:

functions::display_user($user = 0, $arg = array())


Bu funksiya userning avatari, niki, statusi, IP-adresi va user-agent ma'lumotlarni aks ettirish va bu ma'lumotlarga qo'shimcha ma'lumotlar (masalan: xabarlar)ni biriktirishda ishlatiladi va eng men uchun ham eng kerakli funksiyalardan biri hisoblanadi.
Agar biz admin haqidagi malumotlarni (avatar, nik, status, ON-Off, IP, user-agent) aks ettirmoqchi bo'lsa, quyidagicha yo'l tutamiz:
$admin = functions::get_user('1');
echo functions::display_user($admin);

Ko'rib turganingizdek, bu funksiyaga userning ID raqami kamlik qiladi, unga shu ID joylashgan qatorni to'laligicha biriktirish zarur. Yuqoridagi ikkita funksiya sharofati bilan ortiqcha kodlar "boshog'riq"idan qutulyapmiz.

E'tibor bersangiz, yuqorida array() keltirilgandi, lekin biz uni ishlatmadik. Endi shu arrayni ishlatishni ham o'rganamiz. Avvalo array() nima ekani haqida to'xtalsak: bu bir qancha malumotlarni bitta o'zgaruvchiga biriktirish yo'lidir. Biz bu arrayga quyidagi ma'lumotlarni biriktira olamiz:
'header',
'body',
'sub'

'header'ga kiritilgan ma'lumot userning niki yonida aks ettiriladi. Bunga asosan yozilgan xabarning vaqtini, javob berish tugmalarini kiritsak to'g'ri bo'ladi

'body'ga esa, tana qismi - nik/statuslar va user-agent ma'lumotlari oralig'iga kiritiladigan ma'lumot biriktiriladi. Bunga qoldirilgan xabar matnini kiritish to'g'ri bo'ladi, yoki, masalan statusini (nik ostidagi status emas, klass bosiladigan status) kiritish ham mumkin.

'sub' bunda ostki ma'lumot joylanadi. Sub classda userning user agenti va IP ma'lumotlari kiritiladi. Arrayning sub ma'lumotida esa shu malumot yuqorisida turadi. Bunga misol tariqasida O'chirish | Tahrirlash tugmalarini kiritish mumkin. Demak, tushunchaga ega bo'ldingiz deb o'ylayman, endi buni qo'llashni mashq qilib ko'ramiz.
$user = functions::get_user('7');
$head = '';
$matn = $user['about'];
$sub = '';
$arg = array(
'header' => $head,
'body' => $matn,
'sub' => $sub
);

echo functions::display_user($user, $arg);


Taxlil qilamiz, ma'lumotda [ON] yoki [Off] belgisi yonida ma'lumot chiqishi kerak emas deb hisoblab, headerni bo'sh qoldirdik, yoki NULLga teng o'zgaruvchi biriktirdik. Body qismiga esa userning "O'zi haqida" yoziladigan malumotlarini chiqardik va sub class ham NULL bo'ldi. Bu kod nimani aks ettirishini esa, tajribada sinab bilib olasiz. Endi bu funksiyaga qo'shimcha buyruqlar yuklashni o'rganamiz

$arg = array(
'header' => $head,
'body' => $matn,
'sub' => $sub,
'stshide' => 1
);

'stshide' buyrug'i userning statusini (nik ostidahi status) yashiradi.

$arg = array(
'header' => $head,
'body' => $matn,
'sub' => $sub,
'iphide' => 1
);

'iphide' esa user-agent va IP ma'lumotlarni yashiradi.

core::$user_set['avatar'] = 0;
echo functions::display_user($user, $arg);

yuqoridagi core::$user_set['avatar'] = 0 buyrug'i bilan biz ma'lumotlarda avatar aks etmasligi kerakligini uqtirdik. Ko'rib turganingizdek, bu buyruq array()ga kiritilmaydi.


O'zingiz mustaqil ravishda yuqoridagi funksiyalarni turli tarzda tajriba qilishdan to'xtamang.

Ma'lumotlar
Mavzu id raqami: 1830
Mavzuga oid xabarlar soni: 36 ta
So'ngi faollik vaqti: 5 Aug 2018, 23:49
Mavzuni ko'rishgan: 60 kishi
» txt shaklida yuklab olish
» Mavzudagi yangi xabarlardan xabardor bo'lishni rad etish
uzmasters.ru Onlayn 265 (0/265)
uzmasters.ru Forumga a'zo bo'lish
uzmasters.ru Forumdan qidirish
uzmasters.ru Bosh sahifa
Яндекс.Метрика UzMasterS.Ru