اذهب إلى المحتوى

تمام عصام

الأعضاء
  • المساهمات

    41
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو تمام عصام

  1. لدي مشكلة في عدم فهرسة النشرات الجوية في موقعي بعد التعديلات ليصبح شكل رابط النشرة متوافق ما محرك البحث مثل https://ajwa4alearab.freewebhostmost.com/Blog/article_Weather/كابوس-الفيضانات-يعود-في-تونس-أجواء-العرب-ترصد-المشاهد-الصادمة-للفيضانات-التاريخية-245 لكن جوجل لا يزحف لموقع للعلم اني اضفت خريطة موقع https://ajwa4alearab.freewebhostmost.com/Blog/sitemap.xml الحل لو تكرمتم استخدم RewriteEngine On RewriteRule ^article_Weather/(.*)-(\d+)$ article_Weather.php?id=$2 [L,QSA] RewriteCond %{THE_REQUEST} /article_Weather\.php\?id=([0-9]+) [NC] RewriteRule ^ /Blog/article_Weather/%1? [R=301,L] هذا كود الصفحة <?php require 'db.php'; // دالة إنشاء slug من النص function createSlug($text) { // إزالة جميع الأحرف غير الآمنة $text = preg_replace('/[^\p{Arabic}\p{L}\p{N}\s]/u', '', $text); // استبدال المسافات بشرطات $text = preg_replace('/\s+/', '-', $text); // إزالة الشرطات من البداية والنهاية $text = trim($text, '-'); // تحويل إلى حروف صغيرة return mb_strtolower($text); } // جلب معرف المقال من الرابط if (preg_match('/-(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) { $id = $matches[1]; } else { header('Location: 404.php'); exit; } $stmt = $conn->prepare("SELECT a.title, a.content, a.category, a.created_at, a.image_url, u.username, u.profile_image, u.bio FROM articles a JOIN users u ON a.user_id = u.id WHERE a.id = ?"); $stmt->execute([$id]); $article = $stmt->fetch(); if (!$article) { header('Location: 404.php'); exit; } $title = base64_decode($article['title']); $category = base64_decode($article['category']); $content = base64_decode($article['content']); $image_url = $article['image_url']; $username = base64_decode($article['username']); $profile_image = $article['profile_image']; $bio = base64_decode($article['bio']); $slug = createSlug($title); // جلب المقالات ذات الصلة $related_articles = getRelatedArticles($conn, $article['category'], $id); // جلب المقالات المقترحة $suggested_articles = getSuggestedArticles($conn, $content, $id); // جلب المقالات الأحدث $latest_articles = getLatestArticles($conn, $id); function getRelatedArticles($conn, $category, $currentArticleId) { $stmt = $conn->prepare("SELECT id, title, image_url FROM articles WHERE category = ? AND id != ? ORDER BY created_at DESC LIMIT 3"); $stmt->execute([$category, $currentArticleId]); $articles = $stmt->fetchAll(); foreach ($articles as &$article) { $article['title_decoded'] = base64_decode($article['title']); $article['slug'] = createSlug($article['title_decoded']); } return $articles; } function getSuggestedArticles($conn, $content, $currentArticleId) { $keywords = extractKeywords($content); $stmt = $conn->prepare("SELECT id, title, content, image_url FROM articles WHERE id != ?"); $stmt->execute([$currentArticleId]); $all_articles = $stmt->fetchAll(); $suggested_articles = []; foreach ($all_articles as $article) { $article['title_decoded'] = base64_decode($article['title']); $article['slug'] = createSlug($article['title_decoded']); $articleKeywords = extractKeywords(base64_decode($article['content'])); $similarity = calculateCosineSimilarity($keywords, $articleKeywords); if ($similarity > 0.2) { $suggested_articles[] = $article; } } usort($suggested_articles, function($a, $b) use ($keywords) { $aKeywords = extractKeywords(base64_decode($a['content'])); $bKeywords = extractKeywords(base64_decode($b['content'])); return calculateCosineSimilarity($keywords, $bKeywords) <=> calculateCosineSimilarity($keywords, $aKeywords); }); return array_slice($suggested_articles, 0, 3); } function getLatestArticles($conn, $currentArticleId) { $stmt = $conn->prepare("SELECT id, title, image_url FROM articles WHERE id != ? ORDER BY created_at DESC LIMIT 3"); $stmt->execute([$currentArticleId]); $articles = $stmt->fetchAll(); foreach ($articles as &$article) { $article['title_decoded'] = base64_decode($article['title']); $article['slug'] = createSlug($article['title_decoded']); } return $articles; } function extractKeywords($text) { $text = preg_replace('/[^\p{L}\p{N}\s]/u', '', $text); $text = mb_strtolower($text); $words = preg_split('/\s+/', $text, -1, PREG_SPLIT_NO_EMPTY); $stopWords = ['و', 'في', 'من', 'على', 'إلى', 'عن', 'أن', 'هذا', 'هذه', 'ذلك', 'هؤلاء']; $words = array_diff($words, $stopWords); return array_count_values($words); } function calculateCosineSimilarity($vec1, $vec2) { $intersection = array_intersect_key($vec1, $vec2); $dotProduct = 0; $magnitude1 = 0; $magnitude2 = 0; foreach ($intersection as $key => $value) { $dotProduct += $vec1[$key] * $vec2[$key]; } foreach ($vec1 as $key => $value) { $magnitude1 += $value * $value; } foreach ($vec2 as $key => $value) { $magnitude2 += $value * $value; } $magnitude1 = sqrt($magnitude1); $magnitude2 = sqrt($magnitude2); return ($magnitude1 == 0 || $magnitude2 == 0) ? 0 : $dotProduct / ($magnitude1 * $magnitude2); } ?> <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Title & SEO Meta Tags --> <title><?= htmlspecialchars($title) ?></title> <meta name="description" content="<?= htmlspecialchars($title) ?> - <?= htmlspecialchars($category) ?> - <?= htmlspecialchars(substr(strip_tags($content), 0, 150)) ?>"> <meta name="keywords" content="<?= htmlspecialchars($category) ?>, <?= htmlspecialchars($title) ?>, مقالات, أخبار, مدونة"> <!-- Open Graph / Facebook --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"> </head> <body> <?php include 'article_navbar.php'; ?> <div class="container"> <div class="article-header"> <h1 class="article-title"><?= htmlspecialchars($category) ?> | <?= htmlspecialchars($title) ?></h1> <p class="article-date"><em><?= $article['created_at'] ?></em></p> </div> <?php if (!empty($image_url)): ?> <div class="article-images"> <img src="<?= htmlspecialchars($image_url) ?>" alt="<?= htmlspecialchars($title) ?>"> </div> <?php endif; ?> <div class="article-content"> <?= $content ?> </div> <?php include 'ad.php'; ?> <div class="article-categories"> التصنيفات: <?= htmlspecialchars($category) ?> </div> <div class="profile" onclick="toggleProfilePopup()"> <?php if (!empty($profile_image)): ?> <img src="<?= htmlspecialchars($profile_image) ?>" alt="<?= htmlspecialchars($username) ?>"> <?php endif; ?> <p class="username"><?= htmlspecialchars($username) ?></p> </div> <div id="profile-popup" class="profile-popup"> <h5><?= htmlspecialchars($username) ?></h5> <p><?= htmlspecialchars($bio) ?></p> </div> <!-- صور المقال مع وصف محسن --> <!-- المقالات ذات الصلة --> <?php if (count($related_articles) > 0): ?> <div class="related-articles"> <h2>مقالات مرتبطة</h2> <?php foreach ($related_articles as $related): ?> <a href="https://ajwa4alearab.freewebhostmost.com/Blog/article_Weather/<?= $related['slug'] ?>-<?= $related['id'] ?>" class="related-article" itemprop="relatedLink"> <img src="<?= htmlspecialchars($related['image_url']) ?>" alt="<?= htmlspecialchars($related['title_decoded']) ?>" title="<?= htmlspecialchars($related['title_decoded']) ?>"> <div class="related-article-title"><?= htmlspecialchars($related['title_decoded']) ?></div> </a> <?php endforeach; ?> </div> <?php endif; ?> <!-- المقالات المقترحة --> <?php if (count($suggested_articles) > 0): ?> <div class="suggested-articles"> <h2>اقتراحات مبنية على قراءتك</h2> <?php foreach ($suggested_articles as $suggested): ?> <a href="https://ajwa4alearab.freewebhostmost.com/Blog/article_Weather/<?= $suggested['slug'] ?>-<?= $suggested['id'] ?>" class="suggested-article" itemprop="suggestedLink"> <img src="<?= htmlspecialchars($suggested['image_url']) ?>" alt="<?= htmlspecialchars($suggested['title_decoded']) ?>" title="<?= htmlspecialchars($suggested['title_decoded']) ?>"> <div class="suggested-article-title"><?= htmlspecialchars($suggested['title_decoded']) ?></div> </a> <?php endforeach; ?> </div> <?php endif; ?> <!-- أحدث المقالات --> <?php if (count($latest_articles) > 0): ?> <div class="suggested-articles"> <h2>جديدنا</h2> <?php foreach ($latest_articles as $latest): ?> <a href="https://ajwa4alearab.freewebhostmost.com/Blog/article_Weather/<?= $latest['slug'] ?>-<?= $latest['id'] ?>" class="suggested-article" itemprop="latestLink"> <img src="<?= htmlspecialchars($latest['image_url']) ?>" alt="<?= htmlspecialchars($latest['title_decoded']) ?>" title="<?= htmlspecialchars($latest['title_decoded']) ?>"> <div class="latest-article-title"><?= htmlspecialchars($latest['title_decoded']) ?></div> </a> <?php endforeach; ?> </div> <?php endif; ?> </div> <?php include 'footer.php'; ?> <script> function toggleProfilePopup() { var popup = document.getElementById('profile-popup'); popup.style.display = popup.style.display === 'block' ? 'none' : 'block'; } </script> </body> </html>
  2. السلام عليك لدي مشكلة و هي انني مشترك بخطة مجانية و ان المساحة المخصصة هي 125 ميغا و المساحة المستهلكة منها هي 92 ميغا للعلم ان مجموع حجم ملفات موقعي لا تتجاوز 30_40 ميغا اذا كيف تم استهلاك 92 ميغا ما هو السبب و الحل لقد تفقدت ملفات و مجلدات موقعي و وجدت عدة مجلدات و ملفات خارج الجذر ماذا افعل للعلم انه قبل بيوم كانة المساحة المستهلكة هي 85 ميغا و قبلها بحوالي اسبوع 80 ميغا
  3. كيف احصل على بيانات. وصور الاقمار الاصطناعية من eumetsat و كيف اضعها و في موقعي مثل هذا الموقع او ما شابه https://www.yanbuweather.com/pages/cloudsat/Arabian_Sea/ او اي مصدر اخر غير eumetsat لا بأس
  4. لقد بحثت كثيرا و لم اجد الطريقة الصحيح لكيف استخدام و انشاء خريطة رادرار المطر او السحب من rainviewer لقد وجدت هذه الصفحة https://www.rainviewer.com/sa/api/single-radar-data.html و https://www.rainviewer.com/sa/api/weather-maps-api.html و كذلك وجدت https://api.rainviewer.com/public/weather-maps.json عند فتحه تظهر {"version":"2.0","generated":1724487332,"host":"https://tilecache.rainviewer.com","radar":{"past":[{"time":1724479800,"path":"/v2/radar/1724479800"},{"time":1724480400,"path":"/v2/radar/1724480400"},{"time":1724481000,"path":"/v2/radar/1724481000"},{"time":1724481600,"path":"/v2/radar/1724481600"},{"time":1724482200,"path":"/v2/radar/1724482200"},{"time":1724482800,"path":"/v2/radar/1724482800"},{"time":1724483400,"path":"/v2/radar/1724483400"},{"time":1724484000,"path":"/v2/radar/1724484000"},{"time":1724484600,"path":"/v2/radar/1724484600"},{"time":1724485200,"path":"/v2/radar/1724485200"},{"time":1724485800,"path":"/v2/radar/1724485800"},{"time":1724486400,"path":"/v2/radar/1724486400"},{"time":1724487000,"path":"/v2/radar/1724487000"}],"nowcast":[{"time":1724487600,"path":"/v2/radar/nowcast_c277f4444b28"},{"time":1724488200,"path":"/v2/radar/nowcast_c2771b16e7ac"},{"time":1724488800,"path":"/v2/radar/nowcast_c2774d641e05"}]},"satellite":{"infrared":[{"time":1724479800,"path":"/v2/satellite/74d1db794db1"},{"time":1724480400,"path":"/v2/satellite/fc79b636f1b0"},{"time":1724481000,"path":"/v2/satellite/8d0d6cbef209"},{"time":1724481600,"path":"/v2/satellite/dbe1699d2f79"},{"time":1724482200,"path":"/v2/satellite/945aa568e0fc"},{"time":1724482800,"path":"/v2/satellite/1d77942251f2"},{"time":1724483400,"path":"/v2/satellite/1a5413b2ff29"},{"time":1724484000,"path":"/v2/satellite/a2e9cad3283e"},{"time":1724484600,"path":"/v2/satellite/0e03dc39bd2f"},{"time":1724485200,"path":"/v2/satellite/41891264b535"},{"time":1724485800,"path":"/v2/satellite/ea77e0fc095b"},{"time":1724486400,"path":"/v2/satellite/339139b8ce98"},{"time":1724487000,"path":"/v2/satellite/929141138305"}]}} و هذا كود لخريطة المطر و السحب لكن لا نتيجة <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>خريطة رادار المطر والسحب</title> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" /> <style> #map { height: 600px; width: 100%; } .leaflet-control-attribution { display: none; /* إخفاء حقوق الخريطة الافتراضية */ } </style> </head> <body> <div id="map"></div> <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script> <script> // إعداد الخريطة وتحديد الموقع الافتراضي على السعودية var map = L.map('map').setView([24.7, 46.7], 6); // إضافة طبقة خريطة سوداء من CartoDB Dark Matter L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png', { maxZoom: 19 }).addTo(map); var baseUrl = "https://tilecache.rainviewer.com"; var pastRadarLayers = []; var satelliteLayers = []; var currentRadarLayer, currentSatelliteLayer; // دالة لتحميل البيانات وتحديث الخريطة function updateMap() { fetch('https://api.rainviewer.com/public/weather-maps.json') .then(response => response.json()) .then(data => { if (!data || !data.radar || data.radar.past.length === 0) { alert("لا توجد بيانات متاحة حاليًا لرادار المطر."); return; } // مسح الطبقات السابقة pastRadarLayers.forEach(layer => map.removeLayer(layer)); satelliteLayers.forEach(layer => map.removeLayer(layer)); pastRadarLayers = []; satelliteLayers = []; // إنشاء طبقات الرادار السابقة data.radar.past.forEach(function(radarData) { var tileLayer = L.tileLayer(baseUrl + radarData.path + "/256/{z}/{x}/{y}.png", { opacity: 0.5 }); pastRadarLayers.push(tileLayer); }); // إنشاء طبقات السحب من بيانات الأقمار الصناعية if (data.satellite && data.satellite.infrared.length > 0) { data.satellite.infrared.forEach(function(satelliteData) { var tileLayer = L.tileLayer(baseUrl + satelliteData.path + "/256/{z}/{x}/{y}.png", { opacity: 0.3 }); satelliteLayers.push(tileLayer); }); } else { alert("لا توجد بيانات متاحة حاليًا للسحب."); } // عرض الطبقة الأحدث (أحدث وقت) من طبقات الرادار currentRadarLayer = pastRadarLayers[pastRadarLayers.length - 1]; currentRadarLayer.addTo(map); // عرض الطبقة الأحدث من السحب if (satelliteLayers.length > 0) { currentSatelliteLayer = satelliteLayers[satelliteLayers.length - 1]; currentSatelliteLayer.addTo(map); } }) .catch(error => { alert("حدث خطأ أثناء تحميل البيانات: " + error.message); }); } // تحديث الخريطة كل 10 دقائق (600,000 مللي ثانية) setInterval(updateMap, 600000); // التحديث الأولي للخريطة عند التحميل updateMap(); </script> </body> </html>
  5. اولا شكرا على الافادة لكن قصدي مصدر البروق هل هو Api او ماذا و كيف احصل عليه
  6. السلام عليكم لقد بحثت كثيرا و لم اجد الطريقة لعمل مثل هذه الخريطة مثل خريطة البروق في موقع رادار المملكة هذا هو رابط تلك الصفحة https://www.yanbuweather.com/pages/lightning/ ارجوا المساعدة بذلك بشكل مفصل
  7. كيف الحصول على كاميرات الويب للطقس و تضمينها في موقعي
  8. معدل النقر يوميا يتراوح بين 15 الى 51 نقرة و غالبا بين 15 الى 36 نقرة هل هذا جيد
  9. في موقعي للطقس حدث تراجع ملحوظ في معدل الظهور كنت احقق بين 11 الى 12 الف ظهور يوميا و الان احقق بين 7 الى 8 الالف ظهور ما هو السبب و الحلول للعلم لدي اكثر من 100 الف صفحة حول العالم تم فهرستها
  10. عند تسجيل مستخدم جديد في موقعي يتم ارسال بريد التحقق الى البريد غير المرغوب فيه كيف جعله يرسل بريد التحقق الى البريد الوارد <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>التسجيل</title> <link rel="stylesheet" href="styles.css"> </head> <body> <form action="register.php" method="POST"> <h2>التسجيل</h2> <label for="username">اسم المستخدم:</label> <input type="text" id="username" name="username" required> <label for="email">البريد الإلكتروني:</label> <input type="email" id="email" name="email" required> <label for="password">كلمة المرور:</label> <input type="password" id="password" name="password" required> <button type="submit">تسجيل</button> </form> <?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); if ($_SERVER['REQUEST_METHOD'] == 'POST') { require 'config.php'; $username = base64_encode($_POST['username']); $email = $_POST['email']; $password = base64_encode(password_hash($_POST['password'], PASSWORD_DEFAULT)); $verification_code = bin2hex(random_bytes(16)); try { // تحقق من وجود البريد الإلكتروني $stmt = $conn->prepare("SELECT * FROM users WHERE email = ?"); $stmt->execute([$email]); if ($stmt->rowCount() > 0) { echo "<p>البريد الإلكتروني موجود بالفعل. يرجى استخدام بريد إلكتروني آخر.</p>"; } else { // إدخال بيانات المستخدم الجديدة $stmt = $conn->prepare("INSERT INTO users (username, email, password, verification_code, is_verified) VALUES (?, ?, ?, ?, 0)"); $stmt->execute([$username, $email, $password, $verification_code]); // إعدادات البريد الإلكتروني $to = $email; $subject = 'التحقق من عنوان البريد الإلكتروني'; $message = "يرجى النقر على الرابط التالي للتحقق من عنوان بريدك الإلكتروني: <a href='رابط صفحة التحقق?code=$verification_code'>التحقق من البريد الإلكتروني</a>"; $headers = "From:البريد الالكتروني خاصتي \r\n"; $headers .= "Reply-To:البريد الالكتروني خاصتي\r\n"; $headers .= "Content-type: text/html\r\n"; if (mail($to, $subject, $message, $headers)) { echo "<p>تم التسجيل بنجاح! تم إرسال بريد إلكتروني للتحقق إلى عنوان بريدك الإلكتروني.</p>"; } else { echo "<p>فشل في إرسال بريد التحقق.</p>"; } } } catch (PDOException $e) { echo "<p>حدث خطأ أثناء التسجيل: " . $e->getMessage() . "</p>"; } } ?> </body> </html>
  11. .قالب ووردبريس عربي اخباري مجاني يدعم عدة ميزات و سريع متوافق مع السيو ....الخ ؟؟
  12. شكرا ، لقد وجدت ان معظم طلبات البحث التي ادت لظهور موقعي هي الاحوال الجوية في اسم المنطقة بحيث بدات افكر بانشاء صفحة بذلك الاسم
  13. السلام عليكم في موقعي للطقس لدي لكثر من 38 الف منطقة تم فهر ستها في محرك البحث لكن معدل الظهور لا يتعدى 12 الف و معدل النقر كذلك يتراوح بين 30 الى 40 نقرة يوميا عموما اريد حل او خطة لزيادة معدل الظهور و النقر عنوان الرئيسية للصفحات هو حالة الطقس لمدة 14 يوما و الامطار في "اسم المنطقة" و سألت الذكاء الاصطناعي و اعطاني عنوان بديل " لا تدع الطقس يفاجئك! توقعات مذهلة ل "اسم المنطقة" خلال الـ 14 يوماً القادمة" و لصفحة طقس اليوم المخصص هو حالة الطقس في "اسم المنطقة" "هنا اسم اليوم قد يكون اليوم و غدا و او بعد غد او بعد 4 ايام و هكذا حسب الصفحة الخاصة باليوم" و عنوان صفحة الطقس الان بعنوان الطقس الان في "اسم المنطقة" لا اعلم ما هو سبب عدم الحصول على معدل نقر عالي خلال شهرين حققت اكثر من 280 الف ظهور لكن النقر قليل مقارنة بالظهور وصل الى قرابة 800 نقرة . موقعي عمره شهرين
  14. برايكم هل صفحة المقالات القديمة هذه https://ajwa4alearab.freewebhostmost.com/Blog/article.php?id=44 او صفحة المقالات الجديدة هذه افضل https://ajwa4alearab.freewebhostmost.com/responsible/article.php?id=44
  15. هل ممكن الحصول على دومين مدفوع مجانا
  16. على ما اعتقد حدث تغير موقع المجلدات بعد تعديل ملف الهوكس لانه بعد تعديله لاحظة ذلك
  17. السلام عليكم تزيد المساحة المخصصة لموقعي تلقائيا و تم نقل مجلدات موجودة في مكان داخل موقعي لمكان اخر حيث انه مجلد المقالات اختفى و ظننت انه حذف لكن بالصدفة و جدت مجلد المقالات في مجلد اخر و وحدت ايضا مجلد اسمه CGI-bin
  18. شكرا, بالنسبة لموقعي الحالي اعاني من مشكلة السرعة كما يظهر في الصورة الفحص
  19. لقد سمعت ان Amp يوفر تجربة مستخدم اسرع من HTML هل هذا صحيح. و هل استخدمه في موقعي للطقس او لا
  20. شكرا على الاجابة المفيدة التطبيق موجود في استضافة موقعي. عند وضع الرابط هل اضعه هكذا /app/ او يجب وضعه هكذا https://ajwa4alearab.freewebhostmost.com/app/ لان ليس لدي معلومة عن ذلك ام انه خاطئ لانه ظهرت لي رسالة خطأ في الدليل ليس في الصفحة الرئيسية
  21. السلام عليكم اريد شرح حول استخدام هذه الواجهة في مشروعي مثلا عندي مشروع في مجلد لنفترض ان اسمه هو app كيف ذلك و كيف اضع البيانات الصحيحة
  22. لكن يجب ان يكون مثل تطبيق الاندرويد بحيث ان WebView يحتاج لتحميل الموقع باستمرار بينما لا يوجد ذلك في الاندرويد هل يوجد طريق افضل من WebView تحول الموقع الى اداء مثل الاندرويد
  23. هل تقصد ب WebView يعني وضع الرابط الموقع في احد المواقع مثلا و اختيار اسم التطبيق و الايقونة الخ.... ثم بناء التطبيق و تنزيله فهذا قد يكون مزعج لانه نفس الموقع بل قد يكون ابطئ
  24. اريد طريقة لتحويل موقعي للطقس لتطبيق بشكل مشابه لتطبيق كورا المعروف او مثل تطبيق طقس العرب
×
×
  • أضف...