با سلام خدمت همه
من برای پروژه ام یه آمار گیر ساده با پی اچ پی میخوام که تعداد افراد بازدید کننده و اینکه از کدوم شهر یا کشور اومدن ، با چه دستگاهی اومدن رو بهم بده ، اینو هم میدونم که 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>";
}
نکات تکمیلی: