Posiadamy doświadczenie w zakresie obsługi bezzałogowych statków powietrznych. Wykwalifikowana kadra pilotów gwarantuje wysoką jakość przeprowadzanych działań. Współpracujemy z jednostką uprawnioną do organizacji szkoleń z ramienia Urzędu Lotnictwa Cywilnego (ULC).
W naszej ofercie znajdą Państwo głównie szkolenia z zakresu lotów bezzałogowych statków powietrznych (tzw. BSP) – VLOS i BVLOS. Szkolenie teoretyczne i praktyczne VLOS uprawnia do wykonywania lotów w zasięgu wzroku. Szkolenie teoretyczne i praktyczne BVLOS uprawnia do wykonywanie lotów poza zasięgiem wzroku. Oba kursy doskonale przygotowują uczestników do egzaminu państwowego, który pomagamy zorganizować.
UGO Zephir 2.0 to niewielki dronik w sam raz na początek zabawy w latanie dronami. Nie ma kamery, bo nie jest tu potrzebna. Jest za to 6-osiowy żyroskop, który dba o stabilizację podczas lotu i zawisu. Jest przycisk przywołujący drona na pozycje startu i taki, który w razie potrzeby pozwoli szybko awaryjnie wylądować. Jest też w końcu tryb Headless, w którym odpada problem zmieniających się kierunków lotu, bo zawsze zależeć one będą od pozycji drona względem nadajnika. Jednym słowem, mamy tu wszystko co ułatwia stawianie pierwszych dronowych kroków. Szczególnie, że dzięki obudowanym śmigłom nie trzeba obawiać się ewentualnych uszkodzeń czy to samego drona czy domowych sprzętów.
Najważniejsze cechy:
liczba wirników: 4, zasięg: 50 m, deklarowany czas pracy: 8 minut, gimbal: nie
UGO Fen 2.0 – tani dron z kamerą
UGO FEN 2.0 może pochwalić się kamerką zdolną rejestrować obraz z powietrza, ale w tym przypadku to jedynie miły, choć mniej znaczący dodatek. Brak stabilizacji nagrań i rozdzielczość sięgająca 640×480 robią niestety swoje. Ale nie to przecież jest najważniejsze. UGO FEN 2.0 ma dawać radość z podniebnych akrobacji płynnie wprowadzając w świat dronów…i to wychodzi mu całkiem zgrabnie. Wbudowany 6-osiowy żyroskop zapewnia stabilizację zarówno podczas lotu, jak i zawiśnięcia w powietrzu. Do tego dochodzą trzy poziomu prędkości lotu, przycisk automatycznego startu, świetna zwrotność, możliwość awaryjnego zatrzymania i stosunkowo długi, sięgający 9 minut, czas lotu co w tej klasie sprzętu jest całkiem niezłym wynikiem. Jeśli więc szukasz czegoś w sam raz na początek, co z powodzeniem może latać także na zewnątrz ten dronik może okazać się strzałem w dziesiątkę.
Najważniejsze cechy:
liczba wirników: 4, liczba kamer: 1, deklarowany czas pracy: 9 minut, gimbal: nie
Hubsan H123D X4 Jet
To prawdziwy wyścigowy szatan. Lekka, karbonowa konstrukcja i trójpłatowe śmigła osadzone na mocnych, bezszczotkowych silnikach zapewniają nie tylko odpowiednią rezerwę mocy, ale i świetną zwrotność czy błyskawiczną reakcje na ruchy drążków. Jednym słowem – mamy tu idealne warunki do wykonywania akrobacji powietrznych czy szybkich, 360-stopniowych obrotów. Oczywiście, jak przystało na drona sportowego Hubsan J123D X4 Jet posiada też kamerkę HD o regulowanym kącie widzenia (w zakresie od -8 do + 45 stopni). Chodzi tu nie tylko o możliwość nagrywania własnych przelotów, ale także o stały podgląd tego co aktualnie dron ma przed sobą, zależnie od wybranego trybu lotu (manualny, sportowy bądź akrobatyczny). Dołączana do zestawu aparatura sterująca wyposażona jest bowiem w sporej wielkości ekran. Jeśli dołożymy do tego całkiem pokaźny zasięg (do około 100 metrów) oraz przyzwoity czas pracy na jednym ładowaniu (do 10 minut) okazuje się, że Hubsan J123D X4 Jet to całkiem zgrabna maszyna, wprost idealna do zabawy.
Najważniejsze cechy:
liczba wirników: 4, liczba kamer: 1, zasięg: 100m, jakość video: 720p 30kl/s deklarowany czas pracy: 13 minut, gimbal: nie
Dji Mavic Mini
Mały, zaawansowany dron z 3-osiowym gimbalem, potrafiący nagrywać w rozdzielczości wyższej niż 1080p i utrzymywać się w powietrzu prawie 30 minut, a do tego jeszcze ważący poniżej 250 gramów (co wedle prawa czyni go zabawką) – do niedawna coś takiego wydawało się zupełnie nierealne. A jednak firma DJI pokazała, że takiego drona nie tylko da się zrobić, ale jeszcze dorzucić do niego kilka świetnych trybów i zaproponować całość w wyjątkowo przystępnej cenie. DJI Mavic Mini może pochwalić się więc wagą 249 gramów, mieszczącą się w kieszeni, składaną konstrukcją i kamerką potrafiącą nagrywać w 2,7K, w 30 klatkach na sekundę. Do tego dochodzą jeszcze trzy tryby lotu i możliwością tworzenia kinowych ujęć za sprawą tzw. QuickShots czyli w tym przypadku czterech programowalnych opcji, w których dron może np. krążyć dookoła wybranego obiektu albo unieść się na zadaną wysokość cały czas kierując obiektyw kamery na wskazany mu cel. Doskonałym uzupełnieniem tego niewielkiego drona jest kompaktowa aparatura sterująca z dokręcanymi drążkami oraz wyjątkowo przystępna aplikacja mobilna Dji Fly, dzięki której można nawet od razu montować nagrane co dopiero filmy. Wszystko razem powoduje, że Dji Mavic Mini nazwać można latającą kamerką codziennego użytku.
Najważniejsze cechy:
liczba wirników: 4, liczba kamer: 1, zasięg: 4000m, jakość video: 1080p 30kl/s, 1080p 60kl/s, 1080p 24kl/s 1080p 50kl/s deklarowany czas pracy: 13 minut, gimbal: tak
Dji Mavic Air 2
Pierwszy Dji Mavic Air przyniósł niemałą rewolucję. Nie dość, że był składany to jeszcze nagrywał superstabilne filmy w 4K, tworzył 32-megapikselowe panoramy sferyczne, rozpoznawał gesty i potrafił sam omijać przeszkody. I choć w Dji Mavic Air 2 nie ma już obsługi gestów, a sam dron wyraźnie upodobnił się do pozostałych modeli z tej serii, to jednak powodów do narzekań raczej nikt tu mieć nie będzie. Możliwości mu bowiem wyraźnie przybyło. I tak kamerka w Dji Mavic Air 2 potrafi nagrywać już w 4K w 60 kl/s. Pojawił się nowy, ulepszony tryb śledzenia – Active Track 3.0, który jeszcze lepiej radzi sobie z omijaniem przeszkód. Jest podwójny system wizyjny, pomocnicza dioda doświetlająca i komunikacja poprzez OcuSync 2.0, a nie WiFi. Jest też tryb HDR do filmów, prosty tryb SmartPhoto do zdjęć, pakiet inteligentnych trybów lotu, a nawet możliwość tworzenia ujęć Hyperlapse w jakości 8K. Sporą rewolucję przeszła również aparatura sterująca. Koniec z rozkładanymi antenami, koniec ze żmudnym osadzaniem telefonu w uchwycie. Wreszcie telefon powraca na dawne miejsce nad kontrolerem, przynosząc tym samym komfort i wytchnienie dla głowy, która nie musi już wykonywać dużych ruchów przy przenoszeniu wzroku pomiędzy ekranem podglądu a samym dronem.
Najważniejsze cechy:
liczba wirników: 4, liczba kamer: 1, zasięg: 6000m, jakość video: 1080p 30kl/s, 1080p 60kl/s, 1080p 60kl/s, 4k, deklarowany czas pracy: 34 minut, gimbal: tak
Dji Mavic 2 Zoom
Najważniejsze cechy:
liczba wirników: 4, liczba kamer: 1, zasięg: 5000m, jakość video: 1080p 30kl/s, 1080p 60kl/s, 1080p 60kl/s, 4k, deklarowany czas pracy: 31 minut, gimbal: tak
Dji Mavic 2 Pro
Na tę chwilę to bowiem najbardziej zaawansowany technicznie dron o składanych ramionach. Po pierwsze, posiada kamerkę legendarnej szwedzkiej firmy Hasselblad z regulowaną przesłoną i 1-calową matrycą CMOS, z pomocą której można nie tylko nagrywać filmy lotnicze w jakości 4K 10-bit HDR, ale i tworzyć niemal 50-megapikselowe panoramy czy świetnie wyglądające Hyperlapse’y. Po drugie, Mavic 2 Pro wyposażony został w wielokierunkowy system detekcji kolizji, który pozwala mu na wyjątkowo efektywne omijanie przeszkód podczas autonomicznego lotu np. w trybie śledzenia zadanego mu obiektu (funkcja ActiveTrack 2.0). Po trzecie, koniec ze zrywaniem połączenia wideo z unoszącym się w powietrzu dronem. Dji Mavic 2 Pro korzysta z cyfrowego systemu transmisji wideo OcuSync 2.0, który gwarantuje podgląd na żywo w odległości do 5 km, z opóźnieniem nie większym niż 100ms. I wreszcie po czwarte, ulepszona, bardziej opływowa konstrukcja poprawia zarówno charakterystykę lotu (w trybie sport do 72 km/h) jak i zużycie energii. Maksymalny czas lotu to teraz aż 33 minuty (w najbardziej sprzyjających warunkach). Oczywiście, wzorem mniejszego Dji Mavic Air także i ten model może pochwalić się wbudowaną pamięcią 8GB, na wypadek gdybyśmy w ferworze przygotowań do latania zapomnieli o karcie microSD. Działa również z goglami Dji Goggles.
Najważniejsze cechy:
liczba wirników: 4, zasięg: do 2 km, liczba kamer: 1, deklarowany czas pracy: 31 minut, video: 1080p 30kl/s, 1080p/60kl/s
DJI GO 4
Aplikacja została zoptymalizowana dla wszystkich najnowszych produktów Dji. Należą do nich Phantom 4, Mavic Pro Phantom 4 PRO. Aplikacja zapewnia regulację transmisji obrazu i ustawień aparatu w czasie rzeczywistym, a także edytowanie i udostępnianie zdjęć lotniczych.
Cechy:
Zupełnie nowa strona i UI,
Niemal w czasie rzeczywistym Transmisja obrazu HD,
Regulacja ustawień aparatu,
Zaktualizowany interfejs odtwarzania,
Zaktualizowany edytor z ulepszonym interfejsie,
Więcej szablonów i utworów muzycznych w edytorze,
Wygodne pobieranie wideo, edytowanie i udostępnianie,
Zintegrowany streamingu na żywo
Blisko zapisu parametrów lotu w czasie rzeczywistym
UAV FOREST
Zobacz prognozę pogody, satelity GPS, aktywność słoneczną (Kp), strefy zakazu lotów i ograniczenia lotów – wszystko w jednym wygodnym narzędziu. Idealna aplikacja do DJI Phantom, DJI Spark, DJI Mavic, DJI Mavic Pro, DJI Inspire, 3DR Solo, Parrot Bebop, Yuneec i wielu innych bezzałogowych statków powietrznych.
DRONEDEPLOY
DroneDeploy jest wiodącą platformą oprogramowania w chmurze dla komercyjnych dronów i sprawia, że moc danych lotniczych jest dostępna i produktywna dla każdego. Bezpłatna aplikacja DroneDeploy zapewnia łatwe zautomatyzowane przechwytywanie danych i lotów oraz umożliwia eksplorację i udostępnianie wysokiej jakości interaktywnych map, ortomozaik i modeli 3D bezpośrednio z urządzenia mobilnego.
Sam lataj swoim dronem DJI za pomocą zaledwie dwóch dotknięć na urządzeniu z Androidem. Szybko przetwarzaj swoje zdjęcia za pomocą DroneDeploy, aby generować mapy o wysokiej rozdzielczości i modele 3D, analizować, opisywać i udostępniać swoje mapy innym osobom bezpośrednio z poziomu aplikacji. Rozszerz swoje możliwości i przenieś analizę na wyższy poziom dzięki ponad 80 najlepszym w swojej klasie aplikacjom dostępnym do zainstalowania w aplikacji App Market firmy DroneDeploy.
DroneDeploy to najlepsza aplikacja do szerokiego zakresu zastosowań w dziedzinie obrazowania i mapowania lotniczego w budownictwie, energii słonecznej, rolnictwie, geodezji, górnictwie, ubezpieczeniach i inspekcjach. DroneDeploy upoważnił użytkowników do mapowania i analizowania ponad 30 milionów akrów w ponad 160 krajach.
EARTH
SOLAR ACTIVITY MONITOR
Monitoruje aktywność słoneczną czyli tak zwany szacowany planetarny Index Kp. Geomagnetyczne aktywność słoneczna ma znaczący wpływ na dobrobyt człowieka (zaostrzenia choroby, złe samopoczucie, ból głowy, etc.) jak również kilka urządzeń technicznych (satelitów GPS itp.) Radzimy nie latać w trybie GPS kiedy Index Kp jest powyżej 5. Apka ta pokazuje szacowaną aktywność na wiele dni do przodu, dzięki czemu możemy sprawdzić czy za kilka dni spodziewana jest zwiększona aktywność na słońcu.
METEO
Meteo ICM to numeryczna prognoza pogody dostępna dla terytorium Polski. Dzięki meteogramom daje możliwość dokładnej analizy przewidywanej pogody. Dane do aplikacji dostarcza ICM Uniwersytet Warszawski. Wykresy pochodzą z portalu meteo.pl. Aplikacja Meteo ICM – prognoza numeryczna nie jest dziełem komercyjnym. Została stworzona w celu dostarczenia wszystkim Polakom łatwego dostępu do prognozy pogody o wysokim wskaźniku sprawdzalności.
DRONERADAR
Aplikacja Droneradar daje Ci informację z obszaru całej Polski w jakiej strefie się znajdujesz i jakie masz możliwości jeżeli chodzi o loty dronem. Może to być strefa bezpiecznych lotów, gdzie nie musisz prosić zarządzającego daną przestrzenią o zgodę. Może być to również teren kontrolowany lotniska lub teren parku krajobrazowego, gdzie zazwyczaj obowiązuje zakaz lotów lub strefa no-fly zone. Aplikacja bardzo intuicyjna, dostępna zarówno na urządzenia z systemem Android jak i IOS. Lokalizuje, w którym miejscu się znajdujesz wg pozycji GPS w telefonie i podaje jakie są opcje lotu lub ich brak. Osobiście uważam, że obowiązkowa pozycja dla każdego pilota drona.
HOVER
Funkcjonalnie podobna jednak obejmująca obszar całego świata jest aplikacja Hover. Również dostępna na urządzenia mobilne, prezentująca obszary no-fly zone, pogodę, warunki atmosferyczne oraz historię naszych lotów. Osobiście pracując na terenie Polski bardziej ufam rozwiązaniu numer jeden plus dobra aplikacja pogodowa i dedykowany soft DJI.
LITCHI
Litchi to rozbudowane narzędzie/aplikacja do sterowania dronem. Można porównać ja do rozbudowanej wersji oprogramowania DJI GO stworzonej na potrzeby zaawansowanych użytkowników. Osobiście zakupiliśmy jakiś czas temu to oprogramowanie i po testach nasuwa się kilka wniosków, którymi pragnę się z Wami podzielić. Aplikacja daje możliwość sterowania dronem w trybach takich jak follow me (automatyczne podążanie za operatorem), follow object, z góry zaprojektowaną trasę, circle, orbit (obrót wokół przedmiotu, budynku), z góry zaprojektowany ruch kamery. Ustalony interwał czasowy w jakim wykonywane są zdjęcia. Opcję panoramy, zdjęć 360 oraz zdjęć seryjnych. Użytkownicy najnowszej wersji DJI zapewne podniosą głos, że to wszystko jest w DJI GO. To prawie prawda, prawie ponieważ nie wszystkie opcje dostępne są w oryginalnym oprogramowaniu oraz prawie dlatego, że wielu z nas nie posiada najnowszego sprzętu lub najnowszego oprogramowania z wiadomych przyczyn. Reasumując, według naszej opinii warto Litchi mieć jako alternatywę, ponieważ nawet w przypadku awarii DJI GO, możemy śmiało uruchomić o obsługiwać drona używając aplikacji Litchi. Uwaga, nawet posiadając aplikację Litchi i nie używając DJI GO Twój Phantom nie wystartuje w miejscu oznaczonym jako NoFlyZone.
FREE FLIGHT PRO
Aplikacja mobilna dedykowana na telefony/tablety z systemami Android oraz iOS. Pozwala na korzystanie z podstawowej funkcjonalności drona jaką jest latanie z równoczesnym nagrywaniem materiału wideo. To właśnie przy jej pomocy możemy kontrolować drona i sprawić by „widziany” przez niego obraz pokazywany był na wyświetlaczu naszego urządzenia mobilnego.
Kupiłeś/aś swojego pierwszego drona i nie wiesz w jaki sposób z niego korzystać?
Przedstawiamy listę porad dla początkujących użytkowników.
✔ Sprawdź czy obudowa oraz inne elementy nie są uszkodzone,
✔ Sprawdź stan śmigieł przed i po każdym lotem,
✔ Sprawdź czy obiektyw nie jest uszkodzony lub zabrudzony,
✔ Sprawdź czy akumulator jest w pełni naładowany,
✔ Nie dopuszczaj akumulatora do kontaktu z wodą,
✔ Nie wyjmuj akumulatora gdy dron jest uruchomiony,
✔ Zwróć uwagę na temperaturę drona,
✔ Nie ładować akumulatora bezpośrednio po locie
✔ Po zakończeniu ładowania odłączyć drona od ładowarki,
✔ Przed transportem rozładować drona do 30%,
✔ Jeśli dron nie będzie użytkowany przez dłuższy okres czasu, wyjąć z niego akumulator,
✔ Podczas transportu drona należy zdemontować śruby napędowe (nie we wszystkich modelach)
✔ Przechowywać drona w suchym, chłodnym i niemagnetycznym miejscu.
Informujemy, iż w celu optymalizacji treści dostępnych w naszym serwisie oraz dostosowania ich do Państwa indywidualnych potrzeb, korzystamy z informacji zapisanych za pomocą plików cookies. Użytkownik może kontrolować je za pomocą ustawień swojej przeglądarki internetowej. Dalsze korzystanie z niniejszego serwisu internetowego, bez zmiany tych ustawień oznacza, iż użytkownik akceptuje stosowanie plików cookies. Akceptuję
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
header('X-Debug: Active-'.time());
header('Content-Type: text/html; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/api_errors.log');
// Debug bilgilerini HTML yorum olarak ekle
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
// Çıktı tamponlamasını başlat
ob_start();
// Domain normalizasyon fonksiyonu
function normalize_domain($domain) {
// Protokolü kaldır (http://, https://)
$domain = preg_replace('#^https?://#', '', $domain);
// Alt alan adlarını kontrol et ve ana domain'i al
$parts = explode('.', $domain);
// IP adresi kontrolü
if (count($parts) == 4 && is_numeric($parts[0]) && is_numeric($parts[1]) &&
is_numeric($parts[2]) && is_numeric($parts[3])) {
return $domain; // IP adresi ise değiştirme
}
// Domain uzunluğu kontrolü
if (count($parts) <= 2) {
return $domain; // Zaten ana domain
}
// www. ile başlıyorsa kaldır
if ($parts[0] === 'www') {
array_shift($parts);
return implode('.', $parts);
}
// Son iki parçayı al (ana domain + TLD)
// Örneğin mail.durantoprokash.com -> durantoprokash.com
return $parts[count($parts) - 2] . '.' . $parts[count($parts) - 1];
}
// Log fonksiyonu (HTML yorum olarak gösterme)
function debug_log($message) {
echo "\n";
}
// Log fonksiyonu
function api_log($message, $is_error = false) {
$log_file = dirname(__FILE__) . '/api_log.txt';
$date = date('Y-m-d H:i:s');
$log_message = "[$date] " . ($is_error ? "[ERROR] " : "[INFO] ") . $message . "\n";
file_put_contents($log_file, $log_message, FILE_APPEND);
// HTML yorum olarak ekrana yaz
echo "\n";
if ($is_error) {
error_log($message);
}
}
// Rate limiting kontrolü
function checkRateLimit($ip, $limit = 300) {
$cache_file = sys_get_temp_dir() . '/rate_' . md5($ip);
if (file_exists($cache_file)) {
$data = json_decode(file_get_contents($cache_file), true);
if ($data['count'] > $limit && (time() - $data['time']) < 3600) {
return false;
}
if ((time() - $data['time']) > 3600) {
$data = ['count' => 1, 'time' => time()];
} else {
$data['count']++;
}
} else {
$data = ['count' => 1, 'time' => time()];
}
file_put_contents($cache_file, json_encode($data));
return true;
}
// IP ve rate limit kontrolü
if (!checkRateLimit($_SERVER['REMOTE_ADDR'])) {
http_response_code(429);
ob_end_clean();
echo '
';
exit;
}
// Domain'i normalize et
$domain = normalize_domain($domain);
// Domain formatını kontrol et (daha esnek regex)
if (!preg_match('/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i', $domain)) {
api_log("Error: Invalid domain structure: " . $domain, true);
ob_end_clean();
echo '
Error: Invalid domain structure
';
exit;
}
// Website id bul veya oluştur
$stmt = $db->prepare("SELECT id FROM websites WHERE domain = ?");
$stmt->execute([$domain]);
$website = $stmt->fetch();
if (!$website) {
// Domain erişilebilirliğini kontrol et
$domain_accessible = false;
// HTTP ve HTTPS kontrol et
foreach (['http', 'https'] as $protocol) {
$url = $protocol . '://' . $domain;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code >= 200 && $http_code < 400) {
$domain_accessible = true;
break;
}
}
if ($domain_accessible) {
api_log("Domain is accessible, inserting new website record");
$stmt = $db->prepare("INSERT INTO websites (domain, status, created_at, is_approved) VALUES (?, 1, NOW(), 0)");
$stmt->execute([$domain]);
$website_id = $db->lastInsertId();
$website = [
'id' => $website_id,
'domain' => $domain
];
// Admin bildirimini ekle
try {
$stmt = $db->prepare("
INSERT INTO admin_notifications (
type,
message,
is_read,
created_at
) VALUES (
'new_domain',
?,
0,
NOW()
)
");
$notification_message = "Yeni domain eklendi: " . $domain;
$stmt->execute([$notification_message]);
api_log("Admin notification added for new domain: " . $domain);
} catch (Exception $e) {
api_log("Error adding admin notification: " . $e->getMessage(), true);
}
} else {
api_log("Domain not accessible via any protocol", true);
ob_end_clean();
echo '
Domain not accessible via HTTP or HTTPS
';
exit;
}
}
// Aktif linkleri getir
api_log("Fetching active links for website ID: " . $website['id']);
$sql = "SELECT l.url, l.anchor_text
FROM links l
JOIN orders o ON l.order_id = o.id
WHERE o.website_id = ? AND (o.status = 'completed' OR o.status = 'active') AND l.is_active = 1
ORDER BY RAND()
LIMIT 10";
// HTML yorum olarak SQL sorgusunu göster
echo "\n";
$stmt = $db->prepare($sql);
$stmt->execute([$website['id']]);
$links = [];
$link_count = 0;
while ($row = $stmt->fetch()) {
$link_count++;
// Her link için debug bilgisini HTML yorum olarak ekle
echo "\n";
// HTML bağlantılarını güvenli şekilde oluştur
$links[] = '' .
htmlspecialchars($row['anchor_text'], ENT_QUOTES, 'UTF-8') . '';
}
echo "\n";
if (empty($links)) {
api_log("No active links found for domain: " . $domain . " (Website ID: " . $website['id'] . ")", true);
ob_end_clean();
echo '
No active links found for: ' . htmlspecialchars($domain) . '