İki URL'ler aynı sayfada yol olmadığını bilmek nasıl

3 Cevap

Ben iki URL'ler aynı sayfada yol olmadığını bilmek için küçük bir script yazmak istiyorum. Örneğin: http://google.com ve http://google.com/# aynı URL'ye yol açacaktır. Onlar aynı URL olmasa da bazen http://URL1.com ve http://URL2.com aynı sayfa yol.

Bunu yapmak için kolay bir yolu var mı?

Eğer daha fazla bilgiye ihtiyacınız varsa bana söyle ve ben yazı düzenlemek lütfen

NOT: Bu yüzden mümkün olduğu kadar yardımcı olun lütfen bir ödev soru değildir.

Hepinize teşekkür ederim!

3 Cevap

Bu gerçekten kirli bir yoldur, ama ben ne istediğinizi varsayalım:

if(file_get_contents('http://URL1.com') === file_get_contents('http://URL2.com')) {
    // Leading to the same page!
}

Sayfa minör zaman gibi değişiklikleri (örneğin, istek tam 13:45:59-13:46:00 yapılır), çerez, ya da dinamik bir şey yapıyorsa o iş değil unutmayın.

Yani ...

Bunu algılamak için 'gerçek' bir yolu var olduğu gibi bu çok zor olabilir. Sen bir yönlendirme olup olmadığını görmek için bir Konum başlığı tespit olabilir, ama bazı insanlar bir iç yönlendirme yaptığımız gibi, kusursuz değildir. (Anlamı, stackoverflow.com stackoverflow2.com olarak aynı görünüyor.)

Aklıma tek gerçek yol sayfanın içeriğini kontrol etmektir:

AKA

$c = curl_init();
curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $c, CURLOPT_URL, 'http://localhost/admin/' );
$content1 = curl_exec( $c );
curl_close($c);

$c = curl_init();
curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $c, CURLOPT_URL, 'http://localhost/admin/' );
$content2 = curl_exec( $c );
curl_close($c);

if($content1 == $content2)
{
    // same content
}

Eğer istiyorsa, sadece Content-Length veya başka bir şey kontrol etmek için bu kısaltabilir, ama başlıklardan sadece söylemek mümkün olmaz.

Sen parse_url() to handle the trivial cases. For detecting redirects you'll have to use one of the parts of the HTTP facilities başlıklarını almak ve Location başlığını algılamak için kullanabilirsiniz.