php sayfası bağlantısını kontrol etmek için nasıl

3 Cevap

Ben başlığı yanlış yazılmış olabilir. Bunun için özür dilerim.

Bir php sayfası kullanıcıların bağlantısını kontrol etmek için bir yol olup olmadığını ben sadece merak ediyorum.

Örneğin, i "download.php" adlı bir php sayfası var ve bu sayfayı fiil indirmek ve mysql için bu eylemi eklemek, böyle için kullanıcı sağlar

$query = "INSERT INTO bla bla ";
$result = mysql_query($query);

header('Content-type: application/zip');
header('Content-Length: ' . filesize($file));
header("Content-Disposition: attachment; filename="file.zip");

readfile($file);

Ama bazen, vb "yörünge" gibi bir indirme yöneticisi yazılımları .. Bu zaman sayfa yüzlerce bağlamak ve veritabanı havaya uçurmak.

Bunu önlemek için bir yolu var mı?

Teşekkürler

3 Cevap

Eğer sql yapılandırma veya apache izin bağlantılarının sayısını belirleyebilirsiniz. Eğer veritabanı işleyebilir bildiğiniz bir şey ayarla max bağlantıları

Edit the file /etc/my.cnf max_connections=1000

Yapılacak en iyi şey bütün yükleme sırasında açık kalır gibi indir, başlamadan önce MySQL bağlantısını bırakmaktır. Gerekirse sonunda takın - sorun uzağa gitmek gerekir.

Bu MySQL son kullanımdan sonra, ancak başlıklarından önce, koymak

mysql_close();

Eğer doğru anlamak, download yöneticileri veya botlara karşı isteklerini filtrelemek ve yalnızca veritabanında gerçek kullanıcı kaydetmek istiyorum. Bunu gerçekleştirmek için aklıma birkaç yöntem vardır:

Filter the User Agent: her istek istekte tarayıcı veya yazılım tanımlayan bir kullanıcı aracısı başlığını, göndermeniz gerekmektedir. (Aslında ayrı bir user-agent kullanıyorsanız) Siz botlar ve indirme yöneticileri filtrelemek için bu yöntemi kullanabilirsiniz. Here is an example script that does this.

Tarayıcı ile indirme yöneticisi hisseler çerez devlet varsayarak sayfanın üstündeki bu gibi Use a Cookie: şey:

if (!isset($_COOKIE['download_check'])) {
	setcookie('download_check', '1', 0, '/');
} else {
	exit();
}

Komut sonra ilk kez bir şey yapmayacağım. Sadece başka bir sayfada tanımlama yok, kullanıcı geri yeniden indir gelmek için izin vermek.

Redirect with JavaScript or meta-tags: sorgu dize bazı parametre varlığını denetlemek, downloader veya bir bot JavaScript çalıştırmak olmayacağını varsayarsak. O yoksa, bir JavaScript veya meta etiketi ile daha sonra çıkış kısa bir sayfa, bu gibi parametre ve çıkış ile aynı sayfaya yönlendirme:

if (!isset($_GET['download_check'])) {
	echo "<html><script>window.location = 'this_page.php?download_check=1'</script></html>";
	exit();
}

Ben bu yöntemlerden bir veya daha fazla uygulamanıza yanlış istekleri filtre yardımcı olacağını umuyorum.