با سلام خدمت همه
من برای پروژه ام یه آمار گیر ساده با پی اچ پی میخوام که تعداد افراد بازدید کننده و اینکه از کدوم شهر یا کشور اومدن ، با چه دستگاهی اومدن رو بهم بده ، اینو هم میدونم که google analytics یه ابزار فوق العاده عالی و خوبه ، ولی باید این آمار رو داخل خود سایت به کارفرما نشون بدیم
ممنون میشم اگه کسی ایده ایی ، راه حلی داره بگه ، باتشکر
سلام فکر کنم با جاواسکریپت باید کار کنید.
شاید پاسخ شما همینجا باشد
برای ایجاد یک آمارگیر ساده با PHP که بتواند اطلاعاتی مانند تعداد بازدیدکنندگان، شهر یا کشور بازدیدکننده و دستگاه مورد استفاده آنها را نشان دهد، میتوانید مراحل زیر را دنبال کنید:
CREATE TABLE visitors (
id INT AUTO_INCREMENT PRIMARY KEY,
ip_address VARCHAR(45) NOT NULL,
country VARCHAR(100),
city VARCHAR(100),
device VARCHAR(100),
visit_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
2.دریافت IP کاربر
برای شناسایی IP بازدیدکننده:
function getUserIP() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
return $_SERVER['REMOTE_ADDR'];
}
}
function getGeoInfo($ip) {
$response = file_get_contents("https://ipapi.co/{$ip}/json/");
return json_decode($response, true);
}شناسایی دستگاه کاربر
از متغیر $_SERVER['HTTP_USER_AGENT'] برای شناسایی دستگاه استفاده کنید:
function getDevice() {
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match('/mobile/i', $userAgent)) {
return "Mobile";
} elseif (preg_match('/tablet/i', $userAgent)) {
return "Tablet";
} else {
return "Desktop";
}
}
ذخیره اطلاعات در پایگاه داده
اطلاعات بازدیدکننده را ذخیره کنید:
$ip = getUserIP();
$geoInfo = getGeoInfo($ip);
$device = getDevice();
$country = $geoInfo['country_name'] ?? 'Unknown';
$city = $geoInfo['city'] ?? 'Unknown';
// اتصال به پایگاه داده
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$stmt = $pdo->prepare("INSERT INTO visitors (ip_address, country, city, device) VALUES (?, ?, ?, ?)");
$stmt->execute([$ip, $country, $city, $device]);
6. نمایش اطلاعات به کارفرما
اطلاعات را از پایگاه داده بخوانید و نمایش دهید:
```php
$stmt = $pdo->query("SELECT country, city, device, COUNT(*) AS count FROM visitors GROUP BY country, city, device");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
echo "Country: {$row['country']}, City: {$row['city']}, Device: {$row['device']}, Visits: {$row['count']}<br>";
}
نکات تکمیلی: