PHP URL varlığını kontrol etme

4 Cevap

PHP bir URL bağlantısını görüntüler ise, kullanıcıya URL kırık veya böyle bir şey bir güzel özel bir mesaj görüntülemek amacıyla kullanıcı tıklamadan sonra geçerliliğini denetlemek için herhangi bir yolu var mı?

Ben bir hata 404 sayfa anlamına gelmez. Ben hata 404 sadece iç web sayfalarında ama değil harici bağlantıları için sanırım. Ben yanlışım varsa lütfen beni düzeltin.

4 Cevap

Benim önerim: Düzenli (kıvrılma fsockopen ile) URL'leri kontrol eder ve veri onları işaretleri bir PHP toplu iş yazın. Bu şekilde, URL before Eğer kullanıcıya görüntüler kırık olduğunu biliyoruz.

Hayır - kısa cevaptır.

Bir linki tıkladığınızda o barındırılan sunucudan kaynak istemek için kullanıcının tarayıcı neden olur. Sizin sunucu dahil değildir.

Sen could bağlantının normal davranışını iptal bazı JavaScript yazmak, sunucuya bir istek yapmak için Ajax kullanır yanıtı kontrol etmek için üçüncü taraf sitesine bir talepte sunucu üzerinde PHP olması, yanıt Ajax isteği, ve sonra location özgün bir URL veya hata iletisi için bir ya da ayarlanmış ... ama bu önemli bir kullanıcı için performans yavaşlatmak olacaktır.

Eğer kırık sağlayan bağlantıları hakkında endişeleriniz varsa, onları periyodik olarak kontrol edin. Bu otomatik olabilir (örneğin ile checklink)

Bunu az 400 ise, ilk önce görüntülemek bağlantının yanıt kodu bulmak için fsockopen kullanmalısınız. http://www.scriptol.com/how-to/http-status-code-in-php.php bakın. Belki de iyi fikir sonraki (CSS veya javascript ile kolayca yapılabilir) kırık bağlantıları için bir uyarı görüntülemek için olacaktır.

404 bulunamadı herhangi bir kaynak için olduğunu. Bir bağlantı birine işaret ediyorsa, bu kaynak size bu mesajı vermek yok sunucunun görevidir. Alıntı RFC for HTTP Status Codes:

10.4.5 404 Bulunamadı

The server has not found anything matching the Request-URI. No indication is given of whether the condition is temporary or permanent. The 410 (Gone) status code SHOULD be used if the server knows, through some internally configurable mechanism, that an old resource is permanently unavailable and has no forwarding address. This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable.

Buna ek olarak, tarayıcıda bir bağlantıyı tıklayarak PHP Page ile yapılır bir süre sonra gerçekleşir. Kullanıcı etkileşimi kullanıcının bilgisayarında bu tamamen izole olur ise PHP, sunucu tarafı. Yani, PHP ile tıklayın yakalamak için hiçbir yolu yoktur.

Eğer (teknik değil) tıklamaları yakalamak etmek istiyorsanız, yönlendirmek için get_headers() görmek için aracılığıyla bağlantı prefetch olabilir kendi sunucunuza tüm harici linkler verirseniz kaynak bulunmaktadır. Eğer değilse, kullanıcıya kendi özel sayfa mevcut olabilir. Ama bu aslında o iki HTTP isteklerini yapıyor unutmayın. Ilk kullanıcı sunucuya, sonra sunucudan Dış sayfaya ve dış bağlantılar Muhtemelen şöyle olacaktır:

http://www.yourserver.com/external.php?url=example.com/someuri