как проверить подключение к странице php - PullRequest
1 голос
/ 04 декабря 2009

Возможно, я неправильно написал название. Извините за это.

Мне просто интересно, есть ли способ проверить подключение пользователей к странице php.

Например, у меня есть php-страница с именем «download.php», и эта страница позволяет пользователю загружать sth и вставлять это действие в mysql, например

$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);

Но иногда, программы для управления загрузками, такие как "орбита" и т. Д. ... подключаются к этой странице сотни раз и взрывают базу данных.

есть ли способ предотвратить это?

Спасибо

Ответы [ 3 ]

0 голосов
/ 04 декабря 2009

Лучше всего отключить соединение MySQL до начала загрузки, поскольку оно остается открытым в течение всей загрузки. При необходимости снова подключите в конце - проблема должна исчезнуть.

То есть после последнего использования MySQL, но перед заголовками, поставьте

mysql_close();
0 голосов
/ 04 декабря 2009

Если я правильно понимаю, вы хотите отфильтровать запросы от менеджеров закачек или ботов и записать только фактического пользователя в вашу базу данных. Есть несколько методов, которые я могу придумать для достижения этой цели:

Фильтровать пользовательский агент: каждый запрос должен отправлять заголовок пользовательского агента, который идентифицирует браузер или программное обеспечение, выполняющее запрос. Вы можете использовать этот метод для фильтрации ботов и менеджеров загрузки (если на самом деле они используют отдельный пользовательский агент). Вот пример сценария, который делает это .

Использовать cookie: что-то вроде этого вверху страницы, при условии, что менеджер загрузок делит состояние cookie с браузером:

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

Скрипт ничего не сделает после первого раза. Чтобы разрешить пользователю вернуться и повторно загрузить, просто уничтожьте cookie на любой другой странице.

Перенаправление с помощью JavaScript или мета-тегов: Предполагая, что загрузчик или бот не будут выполнять JavaScript, проверьте наличие какого-либо параметра в строке запроса. Если он не существует, выведите короткую страницу с перенаправлением JavaScript или мета-тега на ту же страницу с параметром и завершите работу, как показано ниже:

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

Я надеюсь, что один или несколько из этих методов помогут вам отфильтровать неправильные запросы к вашему приложению.

0 голосов
/ 04 декабря 2009

Вы можете указать количество разрешенных подключений в вашей конфигурации sql или apache. Установите максимальное количество подключений к тому, что, как вы знаете, ваша база данных может обработать

Редактировать файл /etc/my.cnf max_connections = 1000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...