{"id":1251,"date":"2019-01-04T21:41:30","date_gmt":"2019-01-04T18:41:30","guid":{"rendered":"http:\/\/www.domainhizmetleri.com\/blog\/?p=1251"},"modified":"2021-09-14T01:29:11","modified_gmt":"2021-09-13T22:29:11","slug":"php-ile-ulke-koduna-gore-ziyaretci-ip-adresi-engelleme","status":"publish","type":"post","link":"https:\/\/www.domainhizmetleri.com\/blog\/php-ile-ulke-koduna-gore-ziyaretci-ip-adresi-engelleme\/","title":{"rendered":"PHP ile \u00dclke Koduna G\u00f6re Ziyaret\u00e7i IP Adresi Engelleme"},"content":{"rendered":"<p>Olu\u015fturdu\u011funuz projenize bir\u00e7ok sebepten \u00f6t\u00fcr\u00fc, \u00fclkelerden giri\u015fleri engellemek isteyebilirsiniz. Bu en do\u011fal hakk\u0131n\u0131z. Fakat bu i\u015flemi .htaccess \u00fczerinden takip etmeyi denedi\u011finizde, \u00fclke bazl\u0131 IP class&#8217;lar\u0131n\u0131n s\u0131k s\u0131k de\u011fi\u015fti\u011fi i\u00e7in zamanla i\u015fe yaramad\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz. Bu da sizin IP bloklar\u0131n\u0131 s\u0131k s\u0131k g\u00fcncellemeniz anlam\u0131n\u0131 ta\u015f\u0131r. Bunun yerine daha pratik bir \u00e7\u00f6z\u00fcm geli\u015ftirdik. A\u015fa\u011f\u0131daki kod b\u00fct\u00fcn\u00fc sitenizi ziyaret eden IP&#8217;nin anl\u0131k sorgusunu yaparak \u00fclke koduna ula\u015f\u0131yor ve sizin yasakl\u0131 listenizde ise, ziyaret\u00e7iye 403 Engel yan\u0131t\u0131n\u0131 g\u00f6nderip \u00e7al\u0131\u015fmay\u0131 durduruyor.<\/p>\n<p>A\u015fa\u011f\u0131daki sat\u0131rlar\u0131, index.php veya ortak kullan\u0131lan (\u00f6rn: config.php gibi) PHP dosyan\u0131z\u0131n en \u00fcst\u00fcne,&nbsp;<strong>&lt;?php<\/strong>&nbsp;sat\u0131r\u0131n\u0131n hemen alt\u0131na ekleyebilirsiniz:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-lineoffset=\"5\">\/\/ Z\u0130YARET\u00c7\u0130 IP'S\u0130N\u0130N \u00dcLKE KODUNA G\u00d6RE ENGELLEME - www.domainhizmetleri.com\nfunction ip_info($ip = NULL, $purpose = \"location\", $deep_detect = TRUE) {\n    $output = NULL;\n    if (filter_var($ip, FILTER_VALIDATE_IP) === FALSE) {\n        $ip = $_SERVER[\"REMOTE_ADDR\"];\n        if ($deep_detect) {\n            if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP))\n                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];\n            if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP))\n                $ip = $_SERVER['HTTP_CLIENT_IP'];\n        }\n    }\n    $purpose    = str_replace(array(\"name\", \"\\n\", \"\\t\", \" \", \"-\", \"_\"), NULL, strtolower(trim($purpose)));\n    $support    = array(\"country\", \"countrycode\", \"state\", \"region\", \"city\", \"location\", \"address\");\n    $continents = array(\n        \"AF\" =&gt; \"Africa\",\n        \"AN\" =&gt; \"Antarctica\",\n        \"AS\" =&gt; \"Asia\",\n        \"EU\" =&gt; \"Europe\",\n        \"OC\" =&gt; \"Australia (Oceania)\",\n        \"NA\" =&gt; \"North America\",\n        \"SA\" =&gt; \"South America\"\n    );\n    if (filter_var($ip, FILTER_VALIDATE_IP) &amp;&amp; in_array($purpose, $support)) {\n        $ipdat = @json_decode(file_get_contents(\"http:\/\/www.geoplugin.net\/json.gp?ip=\" . $ip));\n        if (@strlen(trim($ipdat-&gt;geoplugin_countryCode)) == 2) {\n            switch ($purpose) {\n                case \"location\":\n                    $output = array(\n                        \"city\"           =&gt; @$ipdat-&gt;geoplugin_city,\n                        \"state\"          =&gt; @$ipdat-&gt;geoplugin_regionName,\n                        \"country\"        =&gt; @$ipdat-&gt;geoplugin_countryName,\n                        \"country_code\"   =&gt; @$ipdat-&gt;geoplugin_countryCode,\n                        \"continent\"      =&gt; @$continents[strtoupper($ipdat-&gt;geoplugin_continentCode)],\n                        \"continent_code\" =&gt; @$ipdat-&gt;geoplugin_continentCode\n                    );\n                    break;\n                case \"address\":\n                    $address = array($ipdat-&gt;geoplugin_countryName);\n                    if (@strlen($ipdat-&gt;geoplugin_regionName) &gt;= 1)\n                        $address[] = $ipdat-&gt;geoplugin_regionName;\n                    if (@strlen($ipdat-&gt;geoplugin_city) &gt;= 1)\n                        $address[] = $ipdat-&gt;geoplugin_city;\n                    $output = implode(\", \", array_reverse($address));\n                    break;\n                case \"city\":\n                    $output = @$ipdat-&gt;geoplugin_city;\n                    break;\n                case \"state\":\n                    $output = @$ipdat-&gt;geoplugin_regionName;\n                    break;\n                case \"region\":\n                    $output = @$ipdat-&gt;geoplugin_regionName;\n                    break;\n                case \"country\":\n                    $output = @$ipdat-&gt;geoplugin_countryName;\n                    break;\n                case \"countrycode\":\n                    $output = @$ipdat-&gt;geoplugin_countryCode;\n                    break;\n            }\n        }\n    }\n    return $output;\n}\n\n\/\/ Engellenecek \u00fclkelerin Country Kod'lar\u0131n\u0131 a\u015fa\u011f\u0131daki array i\u00e7ine ekleyebilirsiniz\n\/\/ 2 Harfli ISO kodlar\u0131n\u0131 buradan bulabilirsiniz: https:\/\/www.nationsonline.org\/oneworld\/country_code_list.htm\n$engelli_ulke_kodlari=array(\"RU\"=&gt;0, \"FR\"=&gt;0, \"CN\"=&gt;0, \"CO\"=&gt;0);\n\n$ziyaretci_ulke_kodu = ip_info(\"Visitor\", \"Countrycode\");\nif (array_key_exists($ziyaretci_ulke_kodu,$engelli_ulke_kodlari)){\n  header('HTTP\/1.1 403 Forbidden'); \n  echo \"Forbidden Country IP! \/ Yasakl\u0131 \u00dclke IP'si\";\n  die();\n}\n\n\/\/ SON - Z\u0130YARET\u00c7\u0130&nbsp;IP'S\u0130N\u0130N&nbsp;\u00dcLKE&nbsp;KODUNA&nbsp;G\u00d6RE&nbsp;ENGELLEME&nbsp;- www.domainhizmetleri.com<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Olu\u015fturdu\u011funuz projenize bir\u00e7ok sebepten \u00f6t\u00fcr\u00fc, \u00fclkelerden giri\u015fleri engellemek isteyebilirsiniz. Bu en do\u011fal hakk\u0131n\u0131z. Fakat bu i\u015flemi .htaccess \u00fczerinden takip etmeyi denedi\u011finizde, \u00fclke bazl\u0131 IP class&#8217;lar\u0131n\u0131n s\u0131k s\u0131k de\u011fi\u015fti\u011fi i\u00e7in zamanla i\u015fe yaramad\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz. Bu da sizin IP bloklar\u0131n\u0131 s\u0131k s\u0131k g\u00fcncellemeniz anlam\u0131n\u0131 ta\u015f\u0131r. Bunun yerine daha pratik bir \u00e7\u00f6z\u00fcm geli\u015ftirdik. A\u015fa\u011f\u0131daki kod b\u00fct\u00fcn\u00fc sitenizi ziyaret [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2575,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142],"tags":[108,107,24,18],"class_list":["post-1251","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-yazilim-pratikleri","tag-country-code","tag-ip-engelleme","tag-linux","tag-php"],"views":3447,"_links":{"self":[{"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/posts\/1251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/comments?post=1251"}],"version-history":[{"count":2,"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/posts\/1251\/revisions"}],"predecessor-version":[{"id":2574,"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/posts\/1251\/revisions\/2574"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/media\/2575"}],"wp:attachment":[{"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/media?parent=1251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/categories?post=1251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.domainhizmetleri.com\/blog\/wp-json\/wp\/v2\/tags?post=1251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}