Basit ve kullanışlı URL parçalama (URL Parse) fonksiyonumu sizler ile paylaşırken basit ve kullanışlı arama motoru istatistiği tutmanız için bir fonksiyonu buradan paylaşacağım. İstatistik tutmayı seven kişiler için güzel bir paylaşım olacağını düşünüyorum.
Bu fonksiyon sayesinde hangi kullanıcının hangi arama motorundan hangi kelime ve hangi sayfadan sitenizi ziyaret ettiğini öğrenebilirsiniz. Ayrıca kullanıcıların ülke, şehir, ip, user agent, posta kodu, ülke kodu ve kordinat bilgilerini de öğrenebilirsiniz.
<?php
date_default_timezone_set("Europe/Istanbul");
$referer = $_SERVER['HTTP_REFERER'];
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$user_ip = getIP();
$time = time();
$date = date("d/m/Y H:i:s", $time);
function url_parse($url, $get)
{
parse_str(parse_url($url, PHP_URL_QUERY), $queries);
return $queries[$get];
}
function GetIP()
{
if (getenv("HTTP_CLIENT_IP")) {
$ip = getenv("HTTP_CLIENT_IP");
} elseif (getenv("HTTP_X_FORWARDED_FOR")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
if (strstr($ip, ',')) {
$tmp = explode(',', $ip);
$ip = trim($tmp[0]);
}
} else {
$ip = getenv("REMOTE_ADDR");
}
return $ip;
}
function Return_Content_From_URL($url)
{
$curl_defaults = [
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_AUTOREFERER => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_CONNECTTIMEOUT => 15,
CURLOPT_TIMEOUT => 15,
CURLOPT_VERBOSE => 0,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
];
$ch = curl_init();
curl_setopt_array($ch, $curl_defaults);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36"); //Tarayıcı sürümü
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
function myIP($ip)
{
global $lang;
$data = Return_Content_From_URL("https://countryinfo.io/plugins/whats-my-ip/my-ip.php?my_ip=" . $ip . "&lang=" . $lang . "");
$json = json_decode($data);
return $json;
}
function searchEngine($url)
{
global $user_ip, $time, $date, $lang, $user_agent;
$data = [];
if (strstr(parse_url($url, PHP_URL_HOST), "google")) {
if (url_parse($url, "start")) {
$data["page"] = round(url_parse($url, "start") / 10 + 1);
} else {
$data["page"] = 1;
}
$data["time"] = $time;
$data["date"] = $date;
$data["search_word"] = url_parse($url, "q");
$data["ref"] = parse_url($url, PHP_URL_HOST);
$data["ip"] = $user_ip;
$data["language"] = $lang;
$data["user_agent"] = $user_agent;
$data["country"] = myIP($user_ip)->country_name;
$data["country_code"] = myIP($user_ip)->iso_code;
$data["city_name"] = myIP($user_ip)->city_name;
$data["sub_name"] = myIP($user_ip)->sub_name;
$data["sub_code"] = myIP($user_ip)->sub_code;
$data["postal_code"] = myIP($user_ip)->postal_code;
$data["latidue"] = myIP($user_ip)->latidue;
$data["longitude"] = myIP($user_ip)->latidue;
}
if (strstr(parse_url($url, PHP_URL_HOST), "yandex")) {
if (url_parse($url, "start")) {
$data["page"] = url_parse($url, "p") + 1;
} else {
$data["page"] = 1;
}
$data["time"] = $time;
$data["date"] = $date;
$data["search_word"] = url_parse($url, "text");
$data["ref"] = parse_url($url, PHP_URL_HOST);
$data["ip"] = $user_ip;
$data["language"] = $lang;
$data["user_agent"] = $user_agent;
$data["country"] = myIP($user_ip)->country_name;
$data["country_code"] = myIP($user_ip)->iso_code;
$data["city_name"] = myIP($user_ip)->city_name;
$data["sub_name"] = myIP($user_ip)->sub_name;
$data["sub_code"] = myIP($user_ip)->sub_code;
$data["postal_code"] = myIP($user_ip)->postal_code;
$data["latidue"] = myIP($user_ip)->latidue;
$data["longitude"] = myIP($user_ip)->latidue;
}
if (strstr(parse_url($url, PHP_URL_HOST), "bing")) {
if (url_parse($url, "first")) {
$data["page"] = round((url_parse($url, "first") + url_parse($url, "sp")) / 10 + 1);
} else {
$data["page"] = 1;
}
$data["time"] = $time;
$data["date"] = $date;
$data["search_word"] = url_parse($url, "q");
$data["ref"] = parse_url($url, PHP_URL_HOST);
$data["ip"] = $user_ip;
$data["language"] = $lang;
$data["user_agent"] = $user_agent;
$data["country"] = myIP($user_ip)->country_name;
$data["country_code"] = myIP($user_ip)->iso_code;
$data["city_name"] = myIP($user_ip)->city_name;
$data["sub_name"] = myIP($user_ip)->sub_name;
$data["sub_code"] = myIP($user_ip)->sub_code;
$data["postal_code"] = myIP($user_ip)->postal_code;
$data["latidue"] = myIP($user_ip)->latidue;
$data["longitude"] = myIP($user_ip)->latidue;
}
if (strstr(parse_url($url, PHP_URL_HOST), "yahoo")) {
if (url_parse($url, "b")) {
$data["page"] = round(url_parse($url, "b") / url_parse($url, "pz") + 1);
} else {
$data["page"] = 1;
}
$data["time"] = $time;
$data["date"] = $date;
$data["search_word"] = url_parse($url, "p");
$data["ref"] = parse_url($url, PHP_URL_HOST);
$data["ip"] = $user_ip;
$data["language"] = $lang;
$data["user_agent"] = $user_agent;
$data["country"] = myIP($user_ip)->country_name;
$data["country_code"] = myIP($user_ip)->iso_code;
$data["city_name"] = myIP($user_ip)->city_name;
$data["sub_name"] = myIP($user_ip)->sub_name;
$data["sub_code"] = myIP($user_ip)->sub_code;
$data["postal_code"] = myIP($user_ip)->postal_code;
$data["latidue"] = myIP($user_ip)->latidue;
$data["longitude"] = myIP($user_ip)->latidue;
}
$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
return json_decode($json);
}
$url = "https://www.bing.com/search?q=osman&sp=-1&ghc=1&lq=0&pq=osman&sc=10-5&qs=n&sk=&cvid=10F9A08D5B5F456185064880AA3B6F1A&ghsh=0&ghacc=0&ghpl=&FPIG=9965319F0DBE4D659B20F645F0C40017&setmkt=tr-tr&first=21&FORM=PERE1";
echo searchEngine($url)->page; // Çıktı: 3 -> osman kelimesinden bing arama motorundan 3. sayfadan ziyaretçi geldiğini öğreniyoruz. Diğer ziyaretçi bilgilerini de koda bakarak öğrenebilirsiniz.
?>Yukarıdaki
$url sadece örnek bir url'dir. Kullanıcıların referans ur'sini bulmak ve yukarıdaki fonksiyonu kullanmak için
searchEngine($referer )->page şeklinde kullanın. Örnek çıktıya bakarak diğer bilgileri de kolayca öğrenebilir ve veritabanınız var ise bu bilgileri saklayabilir ve sitenize ait istatistikleri tutabilirsiniz.
url_parse($url, $get) Bu fonksiyon ile
https://www.bing.com/search?q=osman bu şekildeki URL'leri kolayca parçalayabilir ve istediğiniz bilgiye kolayca ulaşabilirsiniz. Örneğin ;
<?php
function url_parse($url, $get)
{
parse_str(parse_url($url, PHP_URL_QUERY), $queries);
return $queries[$get];
}
$url_data = "https://www.bing.com/search?q=osman";
echo url_parse($url_data, "q"); // Çıktı: osman - Fonksiyonun q değişkenine ait değerini yazdırmasını sağladık
?>Yukarıdaki fonksiyonları dilediğiniz gibi kullanabilirsiniz. Umarım işinize yarar bir fonksiyon olmuştur.