My Theory
69 subscribers
47 photos
8 videos
9 files
1 link
🧲 My Theory: My brain's cache channel.

#️⃣ Solutions tags: #PHP, #Laravel, #CRM, #CMS, #MySQL

Crafted Solutions: @MyHEMISBot
IDIBOYEV - Coding Studio
Download Telegram
$admins = [
'75598273' => "Admin_ismi_1",
'726944898' => "Admin_ismi_2",
'184843852' => "Admin_ismi_3",
'520634303' => "Admin_ismi_4"
];

$admin_name = isset($admins[$user_id]) ? $admins[$user_id] : "👨🏻‍💻 <b>Admin</b>";


📌 Botga bir necha admin qo'shgandan va ularga nom yoki ismini saqlash usuli.
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥1
MP3, FLAC, va WAV formatlarining farqlari:

1. MP3 (MPEG Audio Layer III):
- Siqilish turi: Yo'qotuvchan siqilish (lossy compression).
- Fayl o'lchami: Kichik, chunki ba'zi ma'lumotlar sifatni kamaytirish evaziga o'chiriladi.
- Sifat: Siqilish darajasiga qarab o'zgaradi, lekin odatda CD sifatidan pastroq.
- Qo'llanishi: Ko'proq musiqa pleyerlar, telefonlar, va onlayn striming xizmatlarida ishlatiladi.

2. FLAC (Free Lossless Audio Codec):
- Siqilish turi: Yo'qotuvsiz siqilish (lossless compression).
- Fayl o'lchami: MP3dan kattaroq, lekin asl audio sifati saqlanadi.
- Sifat: CD yoki asl ovoz sifatiga teng.
- Qo'llanishi: Audiophillar va yuqori sifatli audio tizimlar uchun ishlatiladi.

3. WAV (Waveform Audio File Format):
- Siqilish turi: Yo'qotuvsiz va siqilmagan (raw) formatda saqlanadi.
- Fayl o'lchami: Juda katta, chunki hech qanday siqilish yo'q.
- Sifat: CD yoki asl ovoz sifatiga teng, juda yuqori sifatli.
- Qo'llanishi: Professional audio va tahrir qilish dasturlari uchun ishlatiladi.

Har bir formatning o'z afzallik va kamchiliklari bor. MP3 formatini joylashni tejash va moslashuvchanlik uchun ishlatilsa, FLAC va WAV formatlari yuqori sifatli audio saqlash uchun ishlatiladi.

🗿 Ps: Men faqat FLAC eshitaman.
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥1💔1
Bundan ortiq misol keltirosh yo'q bo'sa kerak. 🗿
Please open Telegram to view this post
VIEW IN TELEGRAM
if ($text == "♻️ Kesh tozalash") {
$pendingCount = json_decode(file_get_contents("https://api.telegram.org/bot" . TOKEN_BOT . "/getWebhookInfo"), true)['result']['pending_update_count'];
$count = array_sum(array_map('unlink', glob("step/*")));
$user->sendMessage([
'chat_id' => $user_id,
'text' => " <b>Kesh tozalandi.</b>

Botda $pendingCount ta so'rovlar bor.
🗑 <b>$count ta fayl o'chirildi.</b>",
'parse_mode' => "html"
]);
exit();
}


📌 Telegram-Bot uchun [step] papkasidagi vaqtinchalik fayllarni o'chirib tashlovchi kod.

🗂 Kerak bo'lib qoladi.
Please open Telegram to view this post
VIEW IN TELEGRAM
#️⃣ array_sum funksiyasi PHPda massiv ichidagi barcha qiymatlarni yig'ish uchun ishlatiladi. Bu funksiya massivdagi elementlarning summasini hisoblaydi va natijani qaytaradi. Quyidagi misolni ko'rib chiqamiz:

<?php
$numbers = array(2, 4, 6, 8, 10);
$sum = array_sum($numbers);

echo "Massiv elementlarining yig'indisi: " . $sum;
?>


➡️ Ushbu kod 2, 4, 6, 8, 10 qiymatlarini o'z ichiga olgan massivni yaratadi va array_sum funksiyasi yordamida bu qiymatlarning summasini hisoblaydi. Natijada, ekranda "Massiv elementlarining yig'indisi: 30" deb ko'rsatiladi.

array_sum funksiyasi sonlar va raqamli satrlarni yig'adi. Agar massivda raqamli satrlar bo'lsa, ular ham yig'indiga qo'shiladi. Biroq, agar massivda raqamli bo'lmagan satrlar yoki boshqa turdagi ma'lumotlar bo'lsa, ular e'tiborga olinmaydi.

💬 Quyidagi misol buni ko'rsatadi:

<?php
$values = array(1, "2", "uch", 4);
$sum = array_sum($values);

echo "Massiv elementlarining yig'indisi: " . $sum;
?>


➡️ Bu kodda 1, "2", va 4 qiymatlari yig'iladi, lekin "uch" qiymati raqamli bo'lmaganligi sababli e'tiborga olinmaydi. Natijada, ekranda "Massiv elementlarining yig'indisi: 7" deb ko'rsatiladi.

@phpdevelopers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Cookie — bu veb-sayt tomonidan brauzerda saqlanadigan kichik hajmdagi ma'lumotlar. Ular foydalanuvchining veb-sayt bilan bo'lgan o'zaro aloqalarini eslab qolish uchun ishlatiladi. Masalan, foydalanuvchi veb-saytga qayta kirganda, cookie'lar orqali uning avvalgi sozlamalari, tanlovlari yoki sessiyalari saqlanadi va avtomatik ravishda yuklanadi.

Cookie'lar turli xil maqsadlarda ishlatilishi mumkin, jumladan:

1. Sessiya boshqaruvi: Foydalanuvchining kirish holatini eslab qolish uchun.
2. Shaxsiylashtirish: Foydalanuvchiga mos ravishda kontentni taqdim etish.
3. Izohli ma'lumotlar: Foydalanuvchining xatti-harakatlarini kuzatish va tahlil qilish.

Cookie'lar odatda qisqa vaqt ichida amal qiladi va foydalanuvchi ularni o'chirib qo'yishi yoki bloklashi mumkin.
Timestamp (vaqt belgisi) — bu aniq bir vaqtni ko'rsatadigan raqam yoki belgidir. U asosan ikki maqsadda ishlatiladi:

1. Vaqtni belgilash: Timestamps, ma'lumotlar yoki hodisalar qachon sodir bo'lganligini aniqlash uchun ishlatiladi. Masalan, fayl yaratilgan yoki tahrirlangan vaqtni belgilashda, ma'lumotlar bazasidagi yozuv qachon kiritilganligini ko'rsatishda, yoki tizimda foydalanuvchi kirgan vaqtni qayd etishda foydalaniladi.

2. Vaqtni hisoblash: Timestamps vaqtdan kelib chiqadigan turli hisoblashlarni amalga oshirish uchun ishlatiladi, masalan, ikki hodisa orasidagi vaqt farqini aniqlash yoki vaqt bo'yicha ma'lumotlarni tartiblashda.

Unix tizimlarida timestamp odatda 1970-yil 1-yanvardan boshlab soniyalarni hisoblaydigan raqam sifatida ifodalanadi (Unix epoch). Bu ko'p dasturlash tillarida vaqt bilan ishlashni osonlashtiradi.
Ha, PHP date() funksiyasida ko'plab boshqa format turlari ham mavjud. Mana ular orasidan ba'zilari:

### Sana bilan bog'liq turlar:
- `d` - Kunning sanasi (2 raqamli, oldindan nol bilan), masalan: 16
- `D` - Haftaning qisqartirilgan nomi, masalan: Mon
- `j` - Kunning sanasi (nol bilan oldirilmagan), masalan: 16
- `l` (kichik `L`) - Haftaning to'liq nomi, masalan: Monday
- `F` - Oyning to'liq nomi, masalan: September
- `m` - Oy (2 raqamli), masalan: 09
- `n` - Oy (nol bilan oldirilmagan), masalan: 9
- `t` - Joriy oydagi kunlar soni, masalan: 30

### Yil bilan bog'liq turlar:
- `Y` - To'liq yil (4 raqamli), masalan: 2024
- `y` - Yilning 2 raqamli ko'rinishi, masalan: 24
- `L` - Kabisa yili (kabisa bo'lsa 1, bo'lmasa 0), masalan: 1 (kabisa yili)

### Vaqt bilan bog'liq turlar:
- `H` - 24 soatlik formatda soat (oldindan nol bilan), masalan: 14
- `h` - 12 soatlik formatda soat (oldindan nol bilan), masalan: 02
- `G` - 24 soatlik formatda soat (nol bilan oldirilmagan), masalan: 14
- `g` - 12 soatlik formatda soat (nol bilan oldirilmagan), masalan: 2
- `a` - AM yoki PM (kichik harflar), masalan: pm
- `A` - AM yoki PM (katta harflar), masalan: PM
- `i` - Daqiqa (2 raqamli), masalan: 45
- `s` - Sekund (2 raqamli), masalan: 30
- `u` - Mikrosekund (masalan: 654321)
- `v` - Millisekund (masalan: 654)

### Hafta bilan bog'liq turlar:
- `w` - Haftaning kuni (0 = Yakshanba, 6 = Shanba), masalan: 1
- `W` - Yilning haftasi, masalan: 37 (yilning 37-haftasi)

### Zona va vaqti:
- `O` - GMTdan (soat va daqiqalar bo'yicha) og'ish, masalan: +0500
- `P` - GMTdan og'ish (soat va daqiqalar, 2 ta nuqta bilan ajratilgan), masalan: +05:00
- `T` - Vaqt zonasi qisqartmasi, masalan: UTC, EST
- `Z` - Vaqt zonasining UTCdan farqi soniyalar bo'yicha, masalan: 21600 (UTC +6:00 uchun)

### Kun bilan bog'liq turlar:
- `z` - Yilning kuni (0 dan boshlab), masalan: 258 (sentyabrning 16-kuni yilning 258-kuni)

### Misollar:
echo date('Y-m-d H:i:s'); // 2024-09-16 14:45:30
echo date('l, F j, Y'); // Monday, September 16, 2024
echo date('g:i a'); // 2:45 pm
echo date('W'); // 37 (hafta raqami)


Bu turlarni birlashtirib, o'zingiz xohlagan formatda vaqtni chiqarishingiz mumkin.
1
P2P (Peer-to-Peer) – bu to'g'ridan-to'g'ri ulanish modeli, bunda ikki yoki undan ortiq kompyuterlar yoki qurilmalar markaziy serverga ehtiyoj sezmasdan, ma'lumotlarni almashishi yoki xizmatlarni bir-biriga ko'rsatishi mumkin.

P2P tizimining asosiy xususiyatlari:

1. Markaziy server yo'q: Barcha ishtirokchilar teng huquqli bo'lib, server yoki mijoz-mijoz modelidan foydalanilmaydi.


2. Resurslarni bo'lishish: Foydalanuvchilar o'zlarining resurslarini (fayllar, internet ulanish, hisoblash kuchi va boshqalar) tarmoq orqali bo'lishishadi.


3. Katta hajmdagi ma'lumotlarni tarqatish: Masalan, torrent texnologiyasi P2P asosida ishlaydi, bu esa bir faylni bir vaqtning o'zida bir nechta manbalardan yuklab olish imkonini beradi.



P2P qo'llanilish sohalari:

Fayl almashinuvi: Torrent dasturlari (BitTorrent, uTorrent).

Kriptovalyutalar: Bitcoin va boshqa kriptovalyutalar P2P asosida ishlaydi.

VoIP xizmatlari: Skype va boshqa ovozli va video qo'ng'iroqlar xizmatlari.

O'yinlar: Ba'zi multiplayer o'yinlar P2P ulanishi orqali ishlaydi.


Afzalliklari:

Markaziy nuqtada nosozlik bo'lmaydi.

Tarmoqning kengayuvchanligi yuqori.

Resurslardan samarali foydalanadi.


Kamchiliklari:

Havfsizlik masalalari: Oson hujum qilish yoki zararli dasturlarni tarqatish xavfi.

Barqarorlik muammolari: Har bir ishtirokchining tarmoq sifati tizimga ta'sir ko'rsatadi.


Agar qo'shimcha ma'lumot kerak bo'lsa, xabar bering!
🔥1
Mana, MySQL’da vaqt va sana bilan ishlash uchun ba'zi foydali funksiyalar va ularning ishlatish misollari:

### 1. CURDATE() – Faonly sana (YYYY-MM-DD)
- Misol: Bugungi sanani olish:
   SELECT CURDATE();  -- 2025-02-07


### 2. NOW() – Sana va vaqtni (YYYY-MM-DD HH:MM:SS)
- Misol: Hozirgi sana va vaqtni olish:
   SELECT NOW();  -- 2025-02-07 15:34:02


### 3. CURTIME() – Hozirgi vaqt (HH:MM:SS)
- Misol: Hozirgi vaqtni olish:
   SELECT CURTIME();  -- 15:34:02


### 4. DATE() – Sana qismini olish (YYYY-MM-DD)
- Misol: Sana qismini olish:
   SELECT DATE(NOW());  -- 2025-02-07


### 5. TIME() – Vaqt qismini olish (HH:MM:SS)
- Misol: Vaqt qismini olish:
   SELECT TIME(NOW());  -- 15:34:02


### 6. YEAR(), MONTH(), DAY() – Yil, oy va kunni ajratib olish
- Misol: Yil, oy va kunni olish:
   SELECT YEAR(NOW());   -- 2025
SELECT MONTH(NOW()); -- 02
SELECT DAY(NOW()); -- 07


### 7. DATE_FORMAT() – Sana va vaqtni formatlash
- Misol: Sana va vaqtni o'zgartirilgan formatda olish:
   SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');  -- 2025-02-07
SELECT DATE_FORMAT(NOW(), '%H:%i:%s'); -- 15:34:02
SELECT DATE_FORMAT(NOW(), '%d/%m/%Y'); -- 07/02/2025
SELECT DATE_FORMAT(NOW(), '%W, %M %d, %Y'); -- Friday, February 07, 2025


### 8. TIMESTAMP() – Sana va vaqtni timestamp formatida olish
- Misol: Sana va vaqtni timestamp formatida olish:
   SELECT TIMESTAMP(NOW());  -- 2025-02-07 15:34:02


### 9. UNIX_TIMESTAMP() – Sana va vaqtdan UNIX timestampga o‘zgartirish
- Misol: Sana va vaqtni UNIX timestampga aylantirish:
   SELECT UNIX_TIMESTAMP(NOW());  -- 1675742042


### 10. FROM_UNIXTIME() – UNIX timestampdan sana va vaqtni qaytarish
- Misol: UNIX timestampdan sana va vaqtni olish:
   SELECT FROM_UNIXTIME(1675742042);  -- 2025-02-07 15:34:02


### 11. ADDDATE(), DATE_ADD() – Sana va vaqtga qo'shish
- Misol: Sana va vaqtga 5 kun qo'shish:
   SELECT ADDDATE(NOW(), INTERVAL 5 DAY);  -- 2025-02-12 15:34:02
SELECT DATE_ADD(NOW(), INTERVAL 5 DAY); -- 2025-02-12 15:34:02


### 12. SUBDATE(), DATE_SUB() – Sana va vaqtni kamaytirish
- Misol: Sana va vaqtni 5 kun kamaytirish:
   SELECT SUBDATE(NOW(), INTERVAL 5 DAY);  -- 2025-02-02 15:34:02
SELECT DATE_SUB(NOW(), INTERVAL 5 DAY); -- 2025-02-02 15:34:02


### 13. DATEDIFF() – Ikki sana o'rtasidagi kunlar farqini olish
- Misol: Bugungi sana bilan boshqa sana o'rtasidagi farq:
   SELECT DATEDIFF(NOW(), '2025-01-01');  -- 37


### 14. TIMEDIFF() – Ikki vaqt o'rtasidagi farqni olish
- Misol: Ikki vaqt o'rtasidagi farqni olish:
   SELECT TIMEDIFF('15:34:02', '12:30:00');  -- 03:04:02


### 15. NOW() + INTERVAL – Sana va vaqtni ma'lum vaqtga qo'shish
- Misol: 1 soat qo'shish:
   SELECT NOW() + INTERVAL 1 HOUR;  -- 2025-02-07 16:34:02


### 16. LAST_DAY() – Oylik oxirgi kunni olish
- Misol: Joriy oy oxirgi kunini olish:
   SELECT LAST_DAY(NOW());  -- 2025-02-28


### 17. EXTRACT() – Sana va vaqt qismlarini olish
- Misol: Yil va oyni olish:
   SELECT EXTRACT(YEAR FROM NOW());   -- 2025
SELECT EXTRACT(MONTH FROM NOW()); -- 2


### 18. SEC_TO_TIME() – Sekundlarni vaqt formatiga aylantirish
- Misol: 3600 sekundni vaqtga aylantirish:
   SELECT SEC_TO_TIME(3600);  -- 01:00:00


### 19. TIME_TO_SEC() – Vaqtni sekundlarga aylantirish
- Misol: 1 soatni sekundlarga aylantirish:
   SELECT TIME_TO_SEC('01:00:00');  -- 3600


### 20. MAKE_DATE() – Yil, oy va kundan sana yaratish
- Misol: Yil, oy va kundan sana yaratish:
   SELECT MAKE_DATE(2025, 2, 7);  -- 2025-02-07


### 21. MAKE_TIME() – Soat, daqiqa va sekunddan vaqt yaratish
- Misol: Soat, daqiqa va sekunddan vaqt yaratish:
   SELECT MAKE_TIME(15, 34, 2);  -- 15:34:02


Bu funksiyalarni yordamida MySQLda sana va vaqt bilan turli manipulyatsiyalarni amalga oshirishingiz mumkin.
👨‍💻
htmlspecialchars() funksiyasi PHP-da XSS hujumlaridan himoyalanish uchun ishlatiladi. U foydalanuvchi tomonidan kiritilgan HTML maxsus belgilarini shifrlaydi va brauzer bajarib yubormasligi uchun matn sifatida ko‘rsatadi.

Misol (XSS hujumiga qarshi)
<?php
$user_input = "<script>alert('XSS hujumi!');</script>";
echo htmlspecialchars($user_input);
?>

🔹 Natija:
&lt;script&gt;alert('XSS hujumi!');&lt;/script&gt;

Bu kod brauzerda matn sifatida ko‘rinadi va bajarmaydi.

Asosiy o‘zgartirishlar
| Belgi | O‘zgargan holati |

| < | &lt; |
| > | &gt; |
| " | &quot; |
| ' | &#039; |
| & | `&amp; |

Qo‘shimcha foydalanish
htmlspecialchars($text, ENT_QUOTES, 'UTF-8', false);

- ENT_QUOTES – Ikkala tirnoqni (", ') ham shifrlaydi.
- UTF-8 – Kodlash formatini belgilaydi.
- false – Oldin shifrlangan belgilarni qayta shifrlamaydi.

Xulosa: Har doim foydalanuvchi kiritgan HTML kodlarini xavfsiz chiqarish uchun htmlspecialchars() funksiyasidan foydalaning! 🚀
### 🛑 SQL Injection xavfi nima?
SQL Injection (SQLi) — bu hujum turi bo‘lib, xaker foydalanuvchi tomonidan kiritilgan ma’lumotlar orqali SQL so‘rovlariga zararli kod qo‘shib, bazani boshqarishga harakat qiladi.

---

## ⚠️ SQL Injection qanday ishlaydi?
Agar siz foydalanuvchidan kelayotgan ma’lumotlarni to‘g‘ridan-to‘g‘ri SQL so‘rovga qo‘shsangiz, hujumchi so‘rovni buzib, zararli buyruqlarni bajarishi mumkin.

Noto‘g‘ri kod (SQL Injection xatarlik)
$user_input = $_GET['username']; 
$query = "SELECT * FROM users WHERE username = '$user_input'";
$result = mysqli_query($connect, $query);

🔴 Agar hujumchi shunday kiritish kiritsa:
' OR '1'='1

Shunda SQL so‘rovi shunday bo‘lib qoladi:
SELECT * FROM users WHERE username = '' OR '1'='1'

➡️ Bu hamma foydalanuvchilarni chiqarib yuboradi, chunki '1'='1' doim TRUE.

---

## 🛡 SQL Injectiondan himoyalanish usullari
1️⃣ mysqli_real_escape_string() – ma’lumotlarni tozalash
2️⃣ Prepared Statements (Tayyorlangan so‘rovlar) – xavfsiz usul

---

### 1. mysqli_real_escape_string() bilan himoya qilish
$user_input = mysqli_real_escape_string($connect, $_GET['username']);
$query = "SELECT * FROM users WHERE username = '$user_input'";
$result = mysqli_query($connect, $query);

🔹 Natija: Hujumchi qo‘shgan zararli ' OR '1'='1 kod odatdagi matn sifatida ko‘riladi, SQL so‘rov buzilmaydi.

---

### 2. Prepared Statements (Tavsiya etiladi!)
$stmt = $connect->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $_GET['username']);
$stmt->execute();
$result = $stmt->get_result();

🔹 Tayyorlangan so‘rovlar hujumchi kiritgan buyruqlarni bajariladigan kod emas, balki matn sifatida ko‘radi.

---

## 🚀 Sizning kodingizda SQL Injectiondan himoyalanish
Sizning fayl nomlarini bazaga kiritish kodini quyidagicha xavfsizroq qildim:
$safe_original_file_name = mysqli_real_escape_string($connect, $file_name_only);
$safe_translated_file_name = mysqli_real_escape_string($connect, $converted_file_name);
$file_extension = mysqli_real_escape_string($connect, $file_extension);

$query = "INSERT INTO database (original_file_name, translated_file_name, file_size, file_mime_type, file_url, created_at)
VALUES ('$safe_original_file_name', '$safe_translated_file_name', '$file_size', '$file_extension', '$file_url', NOW())";

Endi foydalanuvchi zararli kod kiritishga harakat qilsa ham, SQL Injection ishlamaydi! 🚀
JWT (JSON Web Token) — bu JSON formatidagi ma'lumotlarni xavfsiz tarzda uzatish uchun ishlatiladigan ochiq standart (RFC 7519). JWT autentifikatsiya va ma'lumotlarni tasdiqlash uchun keng qo‘llaniladi.

JWT qanday ishlaydi?

JWT uchta asosiy qismdan iborat:

1. Header (Sarlavha) – Algoritm va token turi haqida ma’lumot saqlaydi.


2. Payload (Yuk) – Token ichidagi ma’lumotlar (masalan, foydalanuvchi ID, rollar, vaqtlar).


3. Signature (Imzo) – Tokenning to‘g‘riligini tekshirish uchun ishlatiladi.



JWT quyidagi shaklda bo‘ladi:

header.payload.signature

Har bir qismi Base64Url formatida kodlanadi va nuqta (.) bilan ajratiladi.

JWT dan qanday foydalaniladi?

1. Foydalanuvchi tizimga kirganda, server unga JWT token yaratib beradi.


2. Har bir so‘rovda foydalanuvchi shu tokenni Authorization sarlavhasi orqali yuboradi:

Authorization: Bearer YOUR_JWT_TOKEN


3. Server tokenni tekshiradi va agar u yaroqli bo‘lsa, so‘rovni bajaradi.



JWT token yaratish (PHP misolida)

PHP-da JWT yaratish uchun Firebase\JWT kutubxonasidan foydalanish mumkin:

use Firebase\JWT\JWT;

$key = "secret_key"; // Maxfiy kalit
$payload = [
"user_id" => 123,
"role" => "admin",
"iat" => time(), // Yaratilgan vaqti
"exp" => time() + 3600 // 1 soatdan keyin eskiradi
];

// JWT yaratish
$jwt = JWT::encode($payload, $key, 'HS256');

echo $jwt;

JWT tokenni tekshirish

use Firebase\JWT\JWT;
use Firebase\JWT\Key;

try {
$decoded = JWT::decode($jwt, new Key($key, 'HS256'));
print_r($decoded);
} catch (Exception $e) {
echo "Token noto‘g‘ri yoki eskirgan!";
}

Afzalliklari

✔️ Sessiyalarni saqlash shart emas
✔️ JSON formatda oson ishlash mumkin
✔️ Avtorizatsiya jarayonini tezlashtiradi

Kamchiliklari

Tokenni bekor qilish qiyin
Xavfsizlik uchun maxfiy kalitni yaxshi himoyalash kerak

Agar siz JWT autentifikatsiyani Telegram botingiz yoki boshqa tizimlar bilan bog‘lamoqchi bo‘lsangiz, maxfiy kalit va token muddatlarini to‘g‘ri sozlash juda muhim.

public function bot($method, $datas = [])
{
static $ch = null;

$url = "https://api.telegram.org/bot" . MYHEMIS . "/" . $method;

if ($ch === null) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/x-www-form-urlencoded"
]);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TCP_FASTOPEN, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); // 2 soniya ichida bog‘lanmasa, bekor qilinadi
curl_setopt($ch, CURLOPT_TIMEOUT, 4); // Maksimal kutish vaqti
curl_setopt($ch, CURLOPT_NOSIGNAL, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, false);
curl_setopt($ch, CURLOPT_FORBID_REUSE, false);
}

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($datas));

$res = curl_exec($ch);

return $res ? json_decode($res, true) : curl_error($ch);
}


Bu kod Telegram Bot API so‘rovlarini tezlashtirish uchun curl sessiyasini qayta ishlatadi.

🔹 Asosiy optimallashtirishlar:
- static $chBitta `curl` sessiyasidan qayta foydalanadi.
- CURLOPT_TCP_FASTOPENTez ulanish imkonini beradi.
- CURLOPT_CONNECTTIMEOUT = 2, CURLOPT_TIMEOUT = 4Tez javob olish uchun cheklovlar.
- CURLOPT_FRESH_CONNECT = false, CURLOPT_FORBID_REUSE = falseSessiyani qayta ishlatadi.

🚀 Natija: Kam resurs talab qiladi, tez ishlaydi!
function this($column, $table)
{
static $cache = [];
global $connect, $user_id;

$key = $table . '_' . $column . '_' . $user_id;
if (isset($cache[$key])) {
return $cache[$key];
}

$query = "SELECT `$column` FROM `$table` WHERE user_id = '{$user_id}' LIMIT 1";
$result = $connect->query($query);
$cache[$key] = ($result && $row = $result->fetch_assoc()) ? $row[$column] : null;

return $cache[$key];
}


🗂 Bu kerakli bazaning kerakli ustunining qiymatini olishning optimal usuli.
🔗 Namuna: $login = this('login', 'users'); // users bazasining login ustuni qiymatini olish.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
20250330_061022.jpg
6.9 MB
Ayyom muborak bo'lsin.
🔥3
if ($data == "video_note") {
$user->request('sendMessage', [
'chat_id' => $chat_id,
'text' => "Video yuboring, men dumaloq video shaklida qilib beraman.",
'parse_mode' => 'markdown',
'reply_markup' => $round_video_menu,
]);
file_put_contents("step/convert/$chat_id.step", "awaiting_round_video");
exit();
}

$current_step = file_get_contents("step/convert/$chat_id.step");
if ($current_step == "awaiting_round_video") {
$uploaded_video = $message->video;
$video_file_id = $uploaded_video->file_id;

$file_info = $user->request('getFile', ['file_id' => $video_file_id]);
$file_path = $file_info->result->file_path;

$local_video_path = "convert/$chat_id.mp4";
file_put_contents($local_video_path, file_get_contents("https://api.telegram.org/file/bot" . API_KEY . "/" . $file_path));

$user->request('sendVideoNote', [
'chat_id' => $chat_id,
'videonote' => new CURLFile($local_video_path),
]);

unlink($local_video_path);
unlink("step/convert/$chat_id.step");

$user->request('sendMessage', [
'chat_id' => $chat_id,
'text' => "♻️ Bajarildi ✓",
'parse_mode' => 'markdown',
'reply_markup' => $convert_menu,
]);
exit();
}

👥 Videoni yumaloq video korinishiga aylantiruvchi kod.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Composer — bu PHP loyihalaringizga kerakli kutubxonalarni oson o‘rnatish va boshqarish uchun ishlatiladigan vosita. U avtomatik yuklash, versiya nazorati va bog‘liq kutubxonalarni ham hal qiladi.

@phpdevelopers