WordPress'u bilgisayarınızda XAMPP üzerinde çalıştırmak için izin sorunları yaşıyorsanız, aşağıdaki adımları takip ederek çözüm bulabilirsiniz:
Klasör ve Dosya İzinleri:
WordPress dosyalarının bulunduğu klasör ve altındaki dosyaların doğru izinlere sahip olduğundan emin olun. Bu, dosya ve klasörlerin XAMPP tarafından okunabilir ve yazılabilir olduğu anlamına gelir.WordPress ana dizini ve altındaki tüm dosyaların ve klasörlerin izinlerini kontrol edin ve gerekirse değiştirin. Örneğin, şu komutları kullanarak terminal veya komut istemcisinde izinleri değiştirebilirsiniz:
chmod -R 755 /path/to/wordpress
veya
chmod -R 777 /path/to/wordpress
"everyone" ya da "herkes" (everyone = herkes) izinlerini verdiyseniz, bu genellikle güvenlik riskleri taşıdığından dolayı önerilmez. Mümkünse sadece gerekli izinleri (örneğin, sadece Apache web sunucusu için gerekli izinleri) vermek daha güvenlidir.
XAMPP İzinleri:
XAMPP'nin çalıştığı kullanıcı veya grup için gerekli izinlere sahip olduğundan emin olun. Bu, Apache ve MySQL gibi servislerin dosya ve klasörlere erişimini sağlar.Dosya Sahipliği:
WordPress dosyalarının doğru sahibi ve grupla ilişkilendirilmiş olmalıdır. Örneğin, Apache'nin sahibi genellikle "www-data" veya "apache" gibi bir kullanıcıdır. Dosya sahibini ve grubunu ayarlamak için aşağıdaki komutları kullanabilirsiniz:chown -R apache:apache /path/to/wordpress
veya
chown -R www-data:www-data /path/to/wordpress
Bu komutlar dosya ve klasör sahibini ve grubunu "apache" veya "www-data" olarak ayarlar.
XAMPP'i Yeniden Başlatın:
Değişikliklerin etkili olması için XAMPP'i yeniden başlatın.Hata Günlüklerini Kontrol Edin:
XAMPP ve WordPress hata günlüklerini kontrol ederek sorunları belirleyebilirsiniz. Apache hata günlüğü genellikle "logs" dizininde "error.log" dosyasında bulunur. WordPress hata günlüğünü ise WordPress dosya dizininde "wp-content/debug.log" olarak kontrol edebilirsiniz.
Maalesef metin yapısı ile kimse yardımcı olamaya bilir. Daha detaylı bir anlatım yapısı olsaydı eğer belki ama kod yapını paylaş ki ilgili kod ile ilgili anlayan arkaşlarımızda yardımcı <olabilirdi class=""></olabilirdi>
Bu alanda ajax veya socket.io ile yapabilirsin, Ajax ile 5 saniye bir sorgu çalıştırarak yaparsın, socket ile dinleme ile yapabilirsin.
<div class="container py-5">
<div class="col-md-6">
<div class="row g-0 border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-relative">
<div class="col-md-8 p-4 d-flex flex-column position-static">
<strong class="d-inline-block mb-2 text-primary-emphasis">World</strong>
<h3 class="mb-0">Featured post</h3>
<div class="mb-1 text-body-secondary">Nov 12</div>
<p class="card-text mb-auto">This is a wider card with supporting text below as a natural lead-in to additional content.</p>
<a href="#" class="icon-link gap-1 icon-link-hover stretched-link">
Continue reading
<svg class="bi"><use xlink:href="#chevron-right"></use></svg>
</a>
</div>
<div class="col-md-4">
<img src=".....">
</div>
</div>
</div>
</div>
SELECT
s.musteriID,
m.musteriAd,
m.musteriSoyad,
m.musteriTelefon,
m.musteriTc,
t.odemeTipi,
SUM(s.acikHesap) AS toplamAcikHesap,
s.resim,
SUM(t.tutar) AS toplamTutar,
t.tMusteriID,
MAX(t.tarih) AS enSonTarih -- Tahsilat tarihleri arasında en son tarihi alır
FROM satislar AS s
INNER JOIN musteriler AS m ON m.ID = s.musteriID
INNER JOIN tahsilatlar AS t ON t.tMusteriID = s.musteriID
WHERE
s.satisTarihi BETWEEN '2023-08-01' AND '2023-11-15'
AND s.subeID = '2'
AND m.ID = '322'
GROUP BY s.musteriID, m.musteriAd, m.musteriSoyad, m.musteriTelefon, m.musteriTc, t.odemeTipi, s.resim, t.tMusteriID;
<?php
try {
// Veritabanı bağlantısı
$pdo = new PDO("mysql:host=localhost;dbname=your_database_name;charset=utf8", "your_username", "your_password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Kategorilere ve derslere ait verileri çek
$query = "
SELECT c.id AS category_id, c.value AS category_value, l.value AS lesson_value
FROM category c
LEFT JOIN lessons l ON c.id = l.category_id
";
$stmt = $pdo->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Verileri düzenleyip ekrana bastır
$categories = [];
foreach ($result as $row) {
$category_id = $row['category_id'];
$category_value = $row['category_value'];
$lesson_value = $row['lesson_value'];
if (!isset($categories[$category_id])) {
// Kategori ilk defa karşılaşıldıysa, yeni bir dizi oluştur
$categories[$category_id] = [
'category_value' => $category_value,
'lessons' => [],
];
}
// Kategoriye ait dersleri ekleyerek düzenle
if ($lesson_value !== null) {
$categories[$category_id]['lessons'][] = $lesson_value;
}
}
// Sonuçları ekrana bastır
foreach ($categories as $category) {
echo "<b>{$category['category_value']}</b><br>";
foreach ($category['lessons'] as $lesson) {
echo " $lesson<br>";
}
}
} catch (PDOException $e) {
echo "Veritabanı hatası: " . $e->getMessage();
}
?>
Tarayıcıda kaynak kodunun görünmesi genellikle güvenlikle ilgili bir sorun değildir. Tarayıcılar, kullanıcı arayüzünü görüntülemek için HTML, CSS ve JavaScript kaynak kodlarını kullanıcıya sunar. Bu normal bir davranıştır. Ancak, güvenlik açısından bazı önlemler alabilirsiniz.
PHP ile yazdığın verileri kullanıcı tarayıcı ile görüntüleyemez.
<?php
include "../../config/dbconnect.php";
try {
// Veritabanı bağlantısını kontrol et
$pdo = new PDO(/* Veritabanı bağlantı detaylarınızı buraya ekleyin */);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Veritabanı bağlantısı başarılı.<br><br>";
// XML dosyasının URL'sini belirt
$xml_url = '-----------';
// XML içeriğini yüklerken hata işleme ekle
libxml_use_internal_errors(true);
$xml_content = simplexml_load_file($xml_url);
if (!$xml_content) {
foreach (libxml_get_errors() as $error) {
echo "XML yükleme hatası: {$error->message}<br>";
}
libxml_clear_errors();
// Hata ile başa çıkmak için gerekirse loglama yapın veya script'i sonlandırın
die();
}
// Her bir öğeyi döngü ile işle
foreach ($xml_content->item as $item) {
$sku = $item->sku;
$miktar = $item->miktar;
$tedarikcisku = $item->tedarikcisku;
// Ekrana yazdır
echo "<b>SKU : </b> $sku <br>";
echo "<b>Stok : </b> $miktar <br>";
echo "<b>Tedarikçi SKU : </b> $tedarikcisku <br>";
if (!empty($tedarikcisku)) {
echo "breakpoint 1 <br>";
// Daha iyi güvenlik için hazırlanmış ifadeler kullan
$sorgu = $pdo->prepare("UPDATE supplier_itemvariants SET warehouseStock = :miktar WHERE vStockCode = :tedarikcisku");
$sorgu->bindParam(':miktar', $miktar, PDO::PARAM_STR);
$sorgu->bindParam(':tedarikcisku', $tedarikcisku, PDO::PARAM_STR);
try {
$sorgu->execute();
} catch (PDOException $e) {
die("Sorgu hatası: " . $e->getMessage());
}
} else {
echo "Tedarikçi SKU atanmamış. <br>";
}
echo "---------- <br>";
}
} catch (PDOException $e) {
die("Veritabanı bağlantı hatası: " . $e->getMessage());
}
?>
Merhaba,
PHP Verilerinde anasayfan için ayrı bir veri listelemesi oluşturabilirsin, ASC Değilde DESC olarak oluşturursan eğer son verileri sana verecektir. DESC LIMIT 25 yaparsan son 25 konuyu verecektir.
Tabi ki bu sadece basit olanı bunu daha temiz halde kategorilerin varsada onlara göre yapabilirsin.
Çerez sistemi ile yedekleyebilirsin kullanıcıda.