www.xxx.com dan siteme fopen ile bağlantı kuruluyor
$_SERVER['HTTP_HOST'] ben ise bu kodu kullanarak gelen bağlantının domain adını tespit edebilirim sanırım ?
benim istediğim şu şekilde olacak, bir mysql veritabanı oluşturdum bir nevi karaliste gibi
mysql tablom
id
url
aktif
url tablosunda yasak sitenin url si yazıyor, sondaki aktif='1' bir değeri alıyorsa http_host'tan gelen bağlantı eşlessin istiyorum yani eşleşip siteye erişemesin aktif="0" sıfır değerinde ise siteye bağlanabilsin yani karalisteden çıksın.
bunu sanırım yapmak için if döngüsüne felan sokmak gerekiyor ancak aklım tıkandı kaldı, uzman kişiler sanırım zorlanmadan yapacaklardır yardımlarınızı bekliyorum.
$_SERVER['HTTP_HOST'] problemi
5
●1.513
- 20-10-2013, 13:39:04Üyeliği durduruldu
- 20-10-2013, 16:04:50Üyeliği durdurulduKONUYA EK
sanırım http_host değilde http_referer olması gerek değilmi ? siteye bağlantı kuran domaini belirlemek için ? - 20-10-2013, 17:28:09Üyeliği durdurulduüstadım cevap yazdığın için öncelikle teşekkür ederim.saintx adlı üyeden alıntı: mesajı görüntüle
Ben aşağıdaki gibi yaptım incelerseniz ve nerde hata yaptığımı söylerseniz sevinirim, çünkü bu kod çalıştı ancak şöyle çalışıyor xxx.com sitesinden benim siteme tıklayıp gitmesi gerek ozaman çok güzel çalışıyor ancak karşı site benim siteme tıklayıp değil fopen ile bağlanıyor ve siteme referer bırakmıyor ! nasıl referer bıraktırabilirim acaba ?
$ref= filtre(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) ); // refererden gelen domaini domainadi.com şeklinde aldım filtreleyerek $sor=mysql_query("SELECT * FROM siteler where aktif=1 "); // karalistedeki domainler aktif=1 ise yasaklansın dedim while($yaz=mysql_fetch_array($sor)){ $url = $yaz["url"]; if($ref == $url){ // eğer refererden gelen domain ile veritabanındaki domain aynıysa aşağıdaki echo ile yazdığım yasaklı kelimesi olsun echo "yasakli"; }else{ // eğer değilse giris serbest olsun echo "giris serbest"; } } - 20-10-2013, 18:45:50Domain adını almak istiyorsanız, client'in size bunu göndermesi gerekir. $_SERVER['HTTP_HOST'] kendi hostname'inizi gösterir. Mesela bir lisans sistemi yapıyorsanız file_get_contents('http://benimsitem.com/lic.php?domainname='.urlencode($_SERVER['HTTP_HOST'])); şeklinde en azından get methoduyla domain adını almanız gerekir.
Ancak $_SERVER["REMOTE_ADDR"] ile karşı tarafın ip adresini alırsınız bu ip adreslerini filtreleyebilirsiniz. Aksi halde client istemediği sürece referer elde edemezsiniz.
Daha çok ayrıntı verirseniz alternatif yollar gösterebilirim. - 20-10-2013, 18:57:02Üyeliği durdurulduAşağıda karşı sitenin bana bağlantı kurmasını sağlayan kodu yazıyorum, yani bana domain adını yollatıyorum.Dogukan adlı üyeden alıntı: mesajı görüntüle
<?php sitex = "http://".$_SERVER["HTTP_HOST"].""; $files = fopen("http://www.istekyapansite.com/sayfa.php?site=$sitex",'r'); while(!feof($files)){ $satir = fgets($files); echo "$satir <br />"; } fclose($files); ?>
Aşağıdaki kod ise benim sitemin sayfasında olan kod yani sayfa.php yukardaki kodun istek yaptığı yer.
www.benimsitem.com/sayfa.php?site=$$$
function filtre($q) { // Filtre ile gerekli yerleri temizledim $q = str_replace("http://www.","",$q); $q = str_replace("http://","",$q); $q=trim($q); return $q; } if($_GET['site']){ include("db.php"); $site = filtre($_GET['site']); // filtreli şekilde _get ile gelen domain adını yazdırdım $sor=mysql_query("SELECT * FROM karaliste where aktif=1 "); //aktif 1 ise yasaklansın $url = $yaz["url"]; if($site == $url){ echo "yasakli"; }else{ $sor=mysql_query("SELECT * FROM temizliste ORDER BY id"); while($yaz=mysql_fetch_array($sor)){ $url = $yaz["icerik"]; echo $url; } } } }
$sor=mysql_query("SELECT * FROM karaliste where aktif=1 "); //aktif 1 ise yasaklansın dedim ancak sadece bir tane siteyi yasaklıyor ! halbuki karaliste kolonundaki 10 siteden 5 tanesi aktif=1 yaptım ancak diğer dördünü neden görmüyor ve yasaklamıyor !! ben nerde yanlışlık yaptım anlamıyorum sabahdan beri uğraşıyorum gerçekten.