@m100 yanıtınız için çok teşekkür ederim lakin yapmak istediğim şey bundan farklı !
Elimden geldiğince bu konuyu detaylı bir şekilde size anlatmaya çalışacağım... (PDO'suz anlattım siz PDO ile yapabilirsiniz :))
AJAX kullanarak veri çekme işlemini aşağıdaki adımları izleyerek gerçekleştirebilirsiniz:
1.Öncelikle, AJAX isteğini gönderecek bir JavaScript fonksiyonu oluşturun. Bu fonksiyon, bir GET isteği gönderecek ve dönen veriyi kullanarak sayfada güncelleme yapacak. Örnek bir JavaScript fonksiyonu aşağıdaki gibi olabilir:
function getData() {
// veri çekilecek URL'i belirleyin
let url = 'http://www.example.com/getdata.php';
// AJAX isteği oluşturun
let request = new XMLHttpRequest();
request.open('GET', url, true);
// isteği gönderirken yapılacak işlemleri belirleyin
request.onload = function() {
// veri alındıktan sonra yapılacak işlemler
if (request.status >= 200 && request.status < 400) {
// veri başarıyla alındı, sayfada güncelleme yapın
let data = request.responseText;
// veriyi kullanarak sayfada güncelleme yapın
} else {
// veri alınırken bir hata oluştu
console.log('Veri alınırken bir hata oluştu');
}
};
// isteği gönderin
request.send();
}
- PHP dosyasında, veritabanından son haberleri çekecek bir sorgu oluşturun ve döndürün. Örnek bir PHP dosyası aşağıdaki gibi olabilir:
<?php
// veritabanı bağlantısını açın
$conn = mysqli_connect('host', 'username', 'password', 'database');
// son haberleri çekmek için bir sorgu oluşturun
$query = "SELECT * FROM news ORDER BY id DESC LIMIT 10";
// sorguyu çalıştırın ve sonuçları alın
$result = mysqli_query($conn, $query);
// sonuçları döndürün
$news = array();
while ($row = mysqli_fetch_assoc($result)) {
$news[] = $row;
}
echo json_encode($news);
// veritabanı bağlantısını kapatın
mysqli_close($conn);
?>
- JavaScript fonksiyonunu kullanarak veri çekme işlemini başlatabilirsiniz. Örneğin, sayfa yüklendiğinde veri çekmek için aşağıdaki gibi bir kod parçacığı kullanabilirsiniz:
document.addEventListener('DOMContentLoaded', function() {
getData();
});
Bu şekilde, sayfa yüklendiğinde getData() fonksiyonu çalıştırılarak veri çekme işlemi gerçekleştirilebilir.
Online kişi sayacı oluşturmak için ise, veritabanında bir tablo oluşturarak kullanıcı giriş/çıkış bilgilerini tutabilirsiniz. Örnek bir tablo yapısı aşağıdaki gibi olabilir:
id user_id login_time logout_time
1 1 2023-01-01 12:00:00 2023-01-01 12:30:00
2 2 2023-01-01 12:15:00 2023-01-01 13:00:00
3 1 2023-01-02 10:00:00 2023-01-02 11:00:00
Bu tablo verilerine göre online kişi sayısını hesaplayabilmek için, şu adımları izleyebilirsiniz:
- Veritabanında bir sorgu oluşturarak, login_time'ı bugünden küçük ve logout_time'ı bugünden büyük olan kayıtları çekin. Örnek bir sorgu aşağıdaki gibi olabilir:
SELECT COUNT(*) FROM user_sessions WHERE login_time < NOW() AND logout_time > NOW()
- Bu sorgunun döndürdüğü sayıyı online kişi sayısı olarak kullanın. Örneğin, aşağıdaki JavaScript kod parçacığı ile sayfada gösterebilirsiniz:
let onlineCount = 10; // sorgu sonucu döndürülen online kişi sayısı
document.getElementById('online-count').innerHTML = onlineCount;
- Kullanıcı giriş yaptığında, bir token oluşturun ve bu token'ı veritabanında bir tablo oluşturarak saklayın. Örnek bir tablo yapısı aşağıdaki gibi olabilir:
id user_id token
1 1 abcdefghijklmnopqrstu
2 2 vwxyzabcdefghijklmnop
3 1 qrstuvwxyzabcdefghijk
Token oluşturmak için, PHP'de aşağıdaki gibi bir fonksiyon kullanabilirsiniz:
function createToken() {
// token'ı oluşturmak için 32 karakter uzunluğunda bir string oluşturun
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$token = '';
for ($i = 0; $i < 32; $i++) {
$token .= $chars[rand(0, strlen($chars) - 1)];
}
return $token;
}
Bu fonksiyonu kullanarak token oluşturduktan sonra, veritabanına kaydedebilirsiniz. Örneğin:
// veritabanı bağlantısını açın
$conn = mysqli_connect('host', 'username', 'password', 'database');
// token'ı oluşturun
$token = createToken();
// kullanıcı id'sini alın (burada kullanıcı id'si 1 olarak varsayılmıştır)
$user_id = 1;
// token'ı veritabanına kaydedin
$query = "INSERT INTO tokens (user_id, token) VALUES ('$user_id', '$token')";
mysqli_query($conn, $query);
// veritabanı bağlantısını kapatın
mysqli_close($conn);
- Kullanıcı çıkış yaptığında, bu token'ı silerek kullanıcının oturum bilgilerini silin. Örneğin:
// veritabanı bağlantısını açın
$conn = mysqli_connect('host', 'username', 'password', 'database');
// kullanıcı id'sini alın (burada kullanıcı id'si 1 olarak varsayılmıştır)
$user_id = 1;
// kullanıcının token'ını sorgulayın ve silin
$query = "DELETE FROM tokens WHERE user_id = '$user_id'";
mysqli_query($conn, $query);
// veritabanı bağlantısını kapatın
mysqli_close($conn);
- Cronjob ile belirli aralıklarla veritabanındaki token bilgilerini kontrol ederek, kullanıcının sistemde olup olmadığını anlayabilirsiniz. Bunun için, cronjob'u kullanarak belirli aralıklarla çalışacak bir PHP dosyası oluşturmalısınız. Bu PHP dosyası, veritabanındaki token bilgilerini kontrol edecek ve eğer bir token bulunamazsa, o kullanıcının sistemde olmadığını anlayacaktır. Örnek bir PHP dosya aşağıdaki gibi olabilir:
<?php
// veritabanı bağlantısını açın
$conn = mysqli_connect('host', 'username', 'password', 'database');
// tüm token'ları sorgulayın
$query = "SELECT * FROM tokens";
$result = mysqli_query($conn, $query);
// tüm token'ları döngüye alın
while ($row = mysqli_fetch_assoc($result)) {
$token = $row['token'];
$user_id = $row['user_id'];
// her bir token için, son 30 dakikada bir aktivite olup olmadığını sorgulayın
$activity_query = "SELECT COUNT(*) FROM user_activity WHERE user_id = '$user_id' AND activity_time > DATE_SUB(NOW(), INTERVAL 30 MINUTE)";
$activity_result = mysqli_query($conn, $activity_query);
$activity_count = mysqli_fetch_row($activity_result)[0];
// eğer son 30 dakikada bir aktivite yoksa, token'ı silin
if ($activity_count == 0) {
$delete_query = "DELETE FROM tokens WHERE token = '$token'";
mysqli_query($conn, $delete_query);
}
}
// veritabanı bağlantısını kapatın
mysqli_close($conn);
Bu dosyayı cronjob ile belirli aralıklarla çalıştırarak, veritabanındaki token bilgilerini kontrol ederek kullanıcının sistemde olup olmadığını anlayabilirsiniz. Örneğin, aşağıdaki cronjob komutu ile bu dosyayı her 15 dakikada bir çalıştırabilirsiniz:
*/15 * * * * /usr/bin/php /path/to/check_tokens.php
Bu komutu kullanarak, belirli aralıklarla check_tokens.php dosyasını çalıştırarak veritabanındaki token bilgilerini kontrol ederek, kullanıcının sistemde olup olmadığını anlayabilirsiniz.
Bu yöntem, kullanıcının sistemde olup olmadığını anlamanız için bir seçenek olabilir. Ancak, bu yöntemin tam olarak doğru bir yöntem olup olmadığını söylemek zor. Örneğin, bir kullanıcı sistemde aktif olmasına rağmen, son 30 dakikada bir aktivite gerçekleştirmediyse bile, bu yöntemle sistemden çıkarılabilir. Bu nedenle, kullanıcının sistemde olup olmadığını anlamak için alternatif yöntemler de düşünülebilir.
Biraz uzun ve karmaşıkmış gibi gelebilir ama umarım işinize yarar... (Parmaklarım uyuştu yoksa daha da anlatmak isterdim :))
"Bilgi paylaştıkça güzeldir :)"
size PHP ve Ajax kullanarak sayfalama sistemi yapmayı göstereceğim bir örnek sunabilirim.
Bu örnekte, veritabanından verileri çekip sayfalanmış bir şekilde göstermek için bir PHP sayfası kullanacağız. Bu sayfayı, Ajax ile çağırarak sayfalar arasında geçiş yapabileceğimiz bir JavaScript fonksiyonu yazacağız.
İlk olarak, veritabanından verileri çekmek için bir PHP dosyası yazalım. Bu dosya, veritabanından verileri çekip bir dizi olarak döndürecek ve bu dizinin kaç sayfa olacağını hesaplayacak. Örneğin:
<?php
// Veritabanı bağlantısını kurun
$db = new PDO('mysql:host=localhost;dbname=veritabani_adi', 'kullanici_adi', 'sifre');
// Sayfalama için gerekli değişkenleri ayarlayın
$limit = 10; // Her sayfada gösterilecek kayıt sayısı
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1; // Hangi sayfada olduğumuzu belirleyin
$start = ($page - 1) * $limit; // Kaçıncı kayıttan başlayacağımızı belirleyin
// Veritabanından verileri çekin ve sayfalama için gerekli bilgileri hesaplayın
$stmt = $db->prepare("SELECT * FROM tablo_adi LIMIT $start, $limit");
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
$total_records = $db->query("SELECT COUNT(*) FROM tablo_adi")->fetchColumn();
$total_pages = ceil($total_records / $limit);
// Dizi olarak verileri ve sayfalama bilgilerini döndürün
$result = array(
'data' => $data,
'page' => $page,
'total_pages' => $total_pages
);
echo json_encode($result);
Bu dosya, veritabanından verileri çekip bir dizi olarak döndürecek ve bu dizinin kaç sayfa olacağını hesaplayacak. Ayrıca, hangi sayfada olduğumuzu belirleyen page değişkenini de döndürecek.
Sonra, verileri sayfalama işlemini yapacak bir JavaScript dosyası yazalım. Bu dosya, verileri çekmek için PHP dosyamızı çağıracak ve sayfalar arasında geçiş yapabileceğimiz bir fonksiyon içerecek. Örneğin:
// Sayfalar arasında geçiş yapmak için kullanılacak fonksiyon
function paginate(page) {
// Verileri çekmek için PHP dosyamızı çağırın
$.ajax({
url: "verileri_cek.php",
data: { page: page },
type: "GET",
dataType: "json",
success: function (response) {
// Verileri sayfaya yazdırın
let data = response.data;
let html = "";
for (let i = 0; i < data.length; i++) {
html += "<p>" + data[i].adi + "</p>";
}
$("#veriler").html(html);
// Sayfalama bilgilerini güncelleyin
let current_page = response.page;
let total_pages = response.total_pages;
let pagination_html = "";
if (current_page > 1) {
pagination_html +=
'<a href="#" onclick="paginate(' +
(current_page - 1) +
')">«</a>';
}
for (let i = 1; i <= total_pages; i++) {
if (i == current_page) {
pagination_html += "<span>" + i + "</span>";
} else {
pagination_html +=
'<a href="#" onclick="paginate(' + i + ')">' + i + "</a>";
}
}
if (current_page < total_pages) {
pagination_html +=
'<a href="#" onclick="paginate(' +
(current_page + 1) +
')">»</a>';
}
$("#pagination").html(pagination_html);
},
});
}
// Sayfalama işlemini başlatmak için ilk sayfayı çağırın
paginate(1);
Bu dosya, verileri çekmek için PHP dosyamızı çağırır ve dönen verileri sayfaya yazar. Ayrıca, sayfalama bilgilerini de günceller ve sayfalar arasında geçiş yapılabilmesi için gerekli bağlantıları oluşturur.
Bu şekilde, PHP ve Ajax kullanarak sayfalama sistemi yapabilirsiniz. Bu örnekte, veritabanından verileri çekip sayfalanmış bir şekilde göstermek için bir PHP sayfası kullandık ve bu sayfayı, Ajax ile çağırarak sayfalar arasında geçiş yapabileceğimiz bir JavaScript fonksiyonu yazdık.
Bu örnekte, verileri çekmek için PHP dosyası kullandık, ancak alternatif olarak verileri çekmek için başka bir yöntem de kullanabilirsiniz. Örneğin, verileri çekmek için veritabanından değil, dosyalardan veya bir REST API'den çekebilirsiniz. Bu örnekte, verileri sayfaya yazdırma işlemini bir döngüyle yaptık, ancak alternatif olarak verileri bir template motoru kullanarak daha kolayca render edebilirsiniz.
Umarım bu örnek size yardımcı olmuştur ve istediğiniz sayfalama sistemini yapabilmenize yardımcı olmuştur.
Twig hakkında daha fazlası için: https://twig.symfony.com/doc/3.x/intro.html
Eğer worker işe yaramazsa Node.js'te bir çoklu çekirdeklerle çalışma işlemini aynı anda yürütmek için daha farklı yöntemler de mevcuttur. Örneğin:
- child_process modülünü kullanarak çoklu çekirdeklerle çalıştırmak: Node.js'in child_process modülü, bir node.js işlemini başka bir işlem olarak çalıştırmanıza olanak verir. Bu, aynı anda birden fazla işlemi çalıştırmak için kullanılabilecek bir yöntemdir. Örneğin:
const { fork } = require('child_process');
const worker1 = fork('./worker1.js');
const worker2 = fork('./worker2.js');
- micro kütüphanesini kullanarak çoklu çekirdeklerle çalıştırmak: micro kütüphanesi, node.js'i kullanarak microservisler oluşturmak için kullanılabilecek bir araçtır. micro ile birden fazla dosyayı aynı anda çalıştırabilir ve bunları bir çoklu çekirdeklerle çalıştırma işlemi olarak yapabilirsiniz. Örneğin:
const { micro } = require('micro');
const worker1 = micro('./worker1.js');
const worker2 = micro('./worker2.js');
module.exports = worker1;
module.exports = worker2;
Bu örnekte, worker1.js ve worker2.js dosyalarında çalışan iki çalışma işlemini aynı anda çalıştırmış olursunuz. micro kütüphanesi, node.js uygulamalarını çoklu çekirdeklerle çalıştırmak için kullanılabilecek bir araçtır.
micro kütüphanesi, node.js'in http isteklerini işlemeyi amaçlar ve bu nedenle, çalışma işlemlerinizi bir http sunucusu olarak çalıştırabilirsiniz. Bu, express gibi bir kütüphane kullanarak uygulamanızı yapılandırabilmenizi ve istekleri işlemenizi sağlar. Örneğin:
const { micro, router, send } = require('micro');
const app = router();
app.get('/worker1', async (req, res) => {
// worker1 işlemini çalıştır
const result = await runWorker1();
send(res, 200, result);
});
app.get('/worker2', async (req, res) => {
// worker2 işlemini çalıştır
const result = await runWorker2();
send(res, 200, result);
});
module.exports = app;
Bu örnekte, /worker1 ve /worker2 adreslerine gönderilen isteklerde, worker1 ve worker2 işlemleri çalıştırılır ve sonuçları bir http cevabı olarak gönderilir. Bu şekilde, micro kütüphanesini kullanarak birden fazla çalışma işlemini aynı anda yürütebilirsiniz.
Dikkat: micro kütüphanesi, node.js'in --experimental-module bileşeni ile birlikte kullanılır. Bu bileşen, node.js'in ECMAScript Modülleri (ESM) desteğini sağlar.
child_process modülü hakkında daha fazla bilgi için aşağıdaki kaynakları inceleyebilirsiniz:
Node.js Dökümantasyonu: https://nodejs.org/api/child_process.html
child_process modülünün GitHub sayfası: https://github.com/nodejs/node/blob/main/lib/child_process.js
micro kütüphanesi hakkında daha fazla bilgi için aşağıdaki kaynakları inceleyebilirsiniz:
micro kütüphanesi Dökümantasyonu: https://github.com/zeit/micro#api
@kargasa1982 rica ederim...
Dinamik bilgileri çalışma işlemine göndermek için, Worker sınıfının postMessage() yöntemini kullanabilirsiniz. Bu yöntem, bir çalışma işlemine veri göndermenize olanak verir.
Örneğin:
const { Worker } = require('worker_threads');
const worker = new Worker('./myWorker.js');
// Dinamik bilgileri gönder
worker.postMessage({ data: 'dinamik veri' });
Bu örnekte, myWorker.js dosyasında çalışan çalışma işlemine data: 'dinamik veri' değerini gönderir. Çalışma işleminde bu değeri almak için, onmessage olayı işleyicisini kullanabilirsiniz:
// myWorker.js dosyası
process.on('message', (message) => {
console.log(message); // { data: 'dinamik veri' }
});
Bu şekilde, worker_threads modülünü kullanarak dinamik bilgileri bir çalışma işlemine gönderebilirsiniz.
Not: worker_threads modülü, node.js'in --experimental-worker bileşeni ile birlikte kullanılır. Bu bileşen, node.js'in çalışma işlemlerini desteklemesine olanak verir.
Merhaba @kargasa1982,
Node.js'in çoklu iş parçacıklı yapısı sayesinde, aynı anda birden fazla işlemi yapabilirsiniz. Ancak bu işlemlerin çalışması için iş parçacıklarının (thread) oluşturulması gerekir. Node.js'in çoklu iş parçacıklı yapısını kullanarak birden fazla işlemi aynı anda gerçekleştirebilmeniz için aşağıdaki adımları izleyebilirsiniz:
1- worker_threads modülünü kullanarak iş parçacıkları oluşturun. worker_threads modülü, Node.js'in iş parçacıklı çalışma modunu sağlar.
const { Worker, isMainThread } = require('worker_threads');
2- Bir iş parçacığı oluşturun ve iş parçacığının çalıştırılacağı kodu belirtin. Örneğin, aşağıdaki kod bloğu bir iş parçacığı oluşturur ve iş parçacığının çalıştırılacağı kodu belirtir:
if (isMainThread) {
const worker = new Worker('./my-worker.js');
}
3- İş parçacıklarının çalışmasını başlatın. Örneğin, aşağıdaki kod bloğu bir iş parçacığını çalıştırır:
if (isMainThread) {
const worker = new Worker('./my-worker.js');
worker.postMessage('start');
}
4- İş parçacıklarının çalışmasını durdurun. Örneğin, aşağıdaki kod bloğu bir iş parçacığını durdurur:
if (isMainThread) {
const worker = new Worker('./my-worker.js');
worker.postMessage('stop');
}
Bu adımları izleyerek, iş parçacıklarını kullanarak birden fazla işlemi aynı anda gerçekleştirebilirsiniz. Bu sayede işlemleriniz daha hızlı tamamlanır ve işlemci ve RAM kullanımınızı azaltabilirsiniz.
Ek olarak, worker_threads modülü hakkında daha fazla bilgi edinmek isterseniz aşağıdaki kaynaklara bakabilirsiniz:
- Node.js belgeleri: https://nodejs.org/api/worker_threads.html
- worker_threads modülü hakkında daha detaylı bilgi: https://nodejs.org/api/worker_threads.html#worker_threads_worker_threads
Ayrıca, iş parçacıklarını kullanarak birden fazla işlemi aynı anda gerçekleştirirken dikkat etmeniz gereken bazı noktalar da olabilir:
- İş parçacıklarının sayısını doğru ayarlamalısınız. Çok fazla iş parçacığı oluşturursanız, iş parçacıkları arasında veri paylaşımı gerekecek ve bu veri paylaşımı işlemleri yavaşlatabilir.
- İş parçacıkları arasında veri paylaşımı yaparken, veri paylaşımı işleminin yapıldığı anda diğer iş parçacıklarının çalışmasını durdurmayı düşünebilirsiniz. Bu sayede iş parçacıkları arasında veri paylaşımı işlemi tamamlandıktan sonra diğer iş parçacıkları tekrar çalışmaya başlar ve işlemler hızı arttırılır.
Umarım bu bilgiler yardımcı olmuştur.
Merhaba,
WebP formatına çevirip kaydetmek için GD library'i kullanabilirsiniz. GD, PHP tarafından resimleri işlemeye yarayan bir eklentidir. Aşağıdaki örnek kodu kullanarak, yüklenen resmi webp formatına çevirebilir ve MySQL veritabanına kaydedebilirsiniz:
<?php
// Yüklenen resmi oku
$img = imagecreatefromstring(file_get_contents($_FILES['resim']['tmp_name']));
// Resmi webp formatına çevir
imagewebp($img, "kaydedilecek_resim.webp", 70);
// Veritabanına kaydet
$db = mysqli_connect("sunucu", "kullanici_adi", "sifre", "veritabani");
$resim = file_get_contents("kaydedilecek_resim.webp");
$resim = mysqli_real_escape_string($db, $resim);
$sql = "INSERT INTO resimler (resim) VALUES ('$resim')";
mysqli_query($db, $sql);
?>
Bu örnek kod yüklenen resmi webp formatına çevirir ve veritabanına kaydeder. Dikkat etmeniz gereken nokta, veritabanında resimleri saklamak için BLOB türünde bir alan oluşturmanız gerektiğidir.
Umarım bu bilgi yardımcı olmuştur.
Evet, PHP ve jQuery gibi açık kaynaklı web geliştirme dilleri ve araçları ile dinamik tablo oluşturmayı destekleyen birçok eklenti mevcut. Örneğin, aşağıdaki eklentilerden bazılarını deneyebilirsiniz:
1- jQuery DataTables: Bu eklenti, JavaScript ve jQuery kullanarak dinamik tablo oluşturmayı ve yönetmeyi destekler.
2- Handsontable: Bu eklenti, JavaScript ve jQuery kullanarak interaktif ve öğrenme kolaylığı yüksek dinamik tablo oluşturmayı ve yönetmeyi destekler.
Bu eklentilerin hepsi de kullanımı kolay ve dokümantasyonları mevcuttur, bu yüzden hangisini kullanacağınıza karar verirken ihtiyacınız olan özellikleri ve işlevselliği dikkate alabilirsiniz.
- jQuery DataTables: https://datatables.net/manual/
- Handsontable: https://docs.handsontable.com/
Merhaba,
Bu görev için birçok çözüm mevcut. Önerebileceğim birkaç yöntem şunlardır:
PHP ve JavaScript kullanarak özel bir istatistik sayfası oluşturmak: Bu yöntemde, PHP sayfasından JavaScript fonksiyonları çağırarak anlık aktif ziyaretçi sayısını ve geçmiş ziyaretçi sayılarını takip edebilirsiniz. Örneğin, bir JavaScript sayacı oluşturarak her sayfa yüklemesinde sayacı artırabilir ve PHP sayfasından bu sayaç değerini okuyarak ziyaretçi sayısını takip edebilirsiniz. Bununla birlikte, aynı ziyaretçiyi birden çok kez saymamak için ziyaretçinin tarayıcısına bir cookie yerleştirebilir ve PHP sayfasından bu cookie değerini kontrol ederek aynı ziyaretçinin tekrar sayılmamasını sağlayabilirsiniz. Bu yöntem veritabanı kullanımını gerektirmez, ancak verileri saklama ve tarih aralıklarına göre görüntüleme gibi işlemleri yapmak için bir yöntem bulmanız gerekebilir.
PHP istatistik eklentileri kullanarak bir istatistik sayfası oluşturmak: Bu yöntemde, PHP sayfasına bir istatistik eklentisi ekleyerek anlık aktif ziyaretçi sayısını ve geçmiş ziyaretçi sayılarını takip edebilirsiniz. Örneğin, "PHP Web Counter" adlı bir eklenti kullanarak veritabanına ziyaretçi bilgilerini kaydedebilir ve bu verileri daha sonra görüntüleyebilirsiniz. Bu yöntem veritabanı kullanımını gerektirir, ancak daha gelişmiş özellikleri (örneğin, ziyaretçinin gezdiği sayfaların tutulması, oturum süresinin tutulması, masaüstü ve mobil ziyaretçi ayrımı) daha kolay bir şekilde gerçekleştirebilirsiniz.
Örnek bir PHP kod parçacığı aşağıdaki gibidir:
// Ziyaretçi sayacını artır
$counter_file = "counter.txt";
$f = fopen($counter_file, "r");
$counter = fread($f, filesize($counter_file));
fclose($f);
$counter++;
$f = fopen($counter_file, "w");
fwrite($f, $counter);
fclose($f);
// Ziyaretçi bilgilerini kaydet
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$visitor_time = time();
$visitor_agent = $_SERVER['HTTP_USER_AGENT'];
$visitor_data = array(
'ip' => $visitor_ip,
'time' => $visitor_time,
'agent' => $visitor_agent
);
// Veritabanına ziyaretçi bilgilerini kaydet
$db = new mysqli("localhost", "username", "password", "database_name");
$query = "INSERT INTO visitors (ip, time, agent) VALUES (?, ?, ?)";
$stmt = $db->prepare($query);
$stmt->bind_param("sis", $visitor_ip, $visitor_time, $visitor_agent);
$stmt->execute();
// Ziyaretçi sayısını görüntüle
echo "Anlık ziyaretçi sayısı: " . $counter;
// Geçmiş ziyaretçi sayısını görüntüle
$query = "SELECT COUNT(*) FROM visitors";
$result = $db->query($query);
$num_visitors = $result->fetch_row()[0];
echo "Toplam ziyaretçi sayısı: " . $num_visitors;
// Ziyaretçi bilgilerini görüntüle
$query = "SELECT * FROM visitors ORDER BY time DESC LIMIT 10";
$result = $db->query($query);
while ($row = $result->fetch_assoc()) {
echo "IP: " . $row['ip'] . ", Zaman: " . $row['time'] . ", Tarayıcı: " . $row['agent'];
}
$db->close();
Bu kod, ziyaretçi sayacını artırarak anlık ziyaretçi sayısını takip eder ve veritabanına ziyaretçi bilgilerini kaydeder. Ayrıca, veritabanından geçmiş ziyaretçi sayısını ve son 10 ziyaretçinin bilgilerini görüntüler.
Bu kod sadece bir örnek ve kendi ihtiyaçlarınıza göre düzenlemek gerekebilir. Örneğin, aynı ziyaretçiyi birden çok kez saymamak için cookie kullanımını da düşünebilirsiniz. Ayrıca, istediğiniz tarih aralıklarına göre ziyaretçi sayısını görüntülemek için veritabanı sorgularını değiştirebilir ve ziyaretçinin gezdiği sayfaları, oturum süresini ve diğer özellikleri de tutmak için veritabanına ek kolonlar ekleyebilirsiniz.
Bu kodu kullanarak, önerdiğim özelliklerin çoğunu gerçekleştirebilirsiniz. Ancak, özelliklerin tamamını gerçekleştirmek için kodu daha da geliştirmek veya farklı bir çözüm kullanmak gerekebilir.
Umarım bu bilgiler yardımcı olmuştur.
Eğer kodlarınızı Sublime Text 3'de yazdıktan sonra, bunları bir web tarayıcısında çalıştırmak istiyorsanız, aşağıdaki adımları izleyebilirsiniz:
- Kodlarınızı yazdıktan sonra, dosyayı kaydedin.
- Dosyanızın kaydedildiği konumu bulun ve dosyanın uzantısını (.html, .css veya .js) kontrol edin. Bu uzantılarını kullanarak, web tarayıcısı hangi tür bir dosya olduğunu anlar.
- Web tarayıcınızı açın ve dosyanızın yolunu girin veya dosyayı web tarayıcınızın dosya gezgininden açın.
- Kodlarınızın çalıştırılması için web sayfasını yenileyin veya F5 tuşuna basın.
Eğer kodlarınızın çalıştırılmasında bir sorun yaşıyorsanız, lütfen daha detaylı bilgi verin. Yardımcı olmaya çalışalım.