Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
1

Загрузка только одному user agent

06.01.2016, 10:32. Показов 1894. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сам загрузчик
PHP
1
2
3
4
5
6
7
8
9
10
11
<?
@include ($_SERVER['DOCUMENT_ROOT'].'/include/functions_db.php');
$fileName = $_GET["p"];
$arFile = GetFileByName($fileName);
if (is_array($arFile)) {
    IncCount($arFile["NAME"]);
    include ($_SERVER['DOCUMENT_ROOT'].'/include/file_force_download.php');
    file_force_download($_SERVER['DOCUMENT_ROOT'].$arFile["SRC"]);
} else {?>
            <?=$arFile?>
<?}?>
Функция
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?function file_force_download($file) {
    print_r($file);
  if (file_exists($file)) {
    // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
    // если этого не сделать файл будет читаться в память полностью!
    if (ob_get_level()) {
      ob_end_clean();
    }
    // заставляем браузер показать окно сохранения файла
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    // читаем файл и отправляем его пользователю
    readfile($file);
    exit;
  } else {
        echo "Файла не существует!";
    }
}?>
Выше код не мой.
Есть вопрос.
Вот как бы так сделать, чтоб загрузка файлов через эту функцию шла только одному определенному http_user_agent. Всем остальным писала что файл запрещен к скачиванию? И если можно напишите пожалуйста готовый вариант.
Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2016, 10:32
Ответы с готовыми решениями:

Пустой user-agent
Есть самописный скрипт для отслеживания посещений сайта. В базу сохраняются некоторые данные,...

Как вставить user agent
Как вставить в этот код user agent .чтобы определялся точно как браузер.И если можно прокси сервера...

Как вытащить информацию с user agent?
Всем привет! Получаю данные с user agent, но там только пару слов, которое я понимаю. Можно ли...

Можно ли определить планшет через User Agent
Можно ли исходя из User Agent определить, что пользователь просматривает сайт с помощью планшета? ...

6
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
06.01.2016, 10:38 2
Цитата Сообщение от dukesov Посмотреть сообщение
http_user_agent
смотрите что возвращает нам http_user_agent, в моём случае.
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
И как вы по этому сделаете проверку...И вы можете использовать windows 10 и вы можете использовать хром...
целесообразней делать проверку я думаю по IP. Но тоже, если он не динамический.

PHP
1
2
3
4
<?php
$mix = ($_SERVER["REMOTE_ADDR"]== "127.0.0.1" )?"true":"false";
echo $mix;
?>
0
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
06.01.2016, 10:41  [ТС] 3
Azdeman, это понятно. Вот например у меня есть редирект если у пользователя не найден необходимый user_agent
PHP
1
2
3
4
<?if ( !stristr($_SERVER['HTTP_USER_AGENT'], 'iPhone') ){
header('Location: http://сайт.ru/pack/'.$file["NAME"]);
exit();
}?>
Аналогично этому, сделать поиск user_agent, если найден, разрешаем загрузить файл. Если нет, говорим Файл запрещен к загрузке.
Ну как то так.

Только я не знаю как))
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
06.01.2016, 10:48 4
Лучший ответ Сообщение было отмечено dukesov как решение

Решение

Цитата Сообщение от dukesov Посмотреть сообщение
<?if ( !stristr($_SERVER['HTTP_USER_AGENT'], 'iPhone') ){
header('Location: http://сайт.ru/pack/'.$file["NAME"]);
exit();
}?>
и в чём проблема не можете поставить в if функцию?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
if ( !stristr($_SERVER['HTTP_USER_AGENT'], 'iPhone') ){
exit("файл запрещен к скачиванию");
}else {
 
$fileName = $_GET["p"];
$arFile = GetFileByName($fileName);
if (is_array($arFile)) {
    IncCount($arFile["NAME"]);
    include ($_SERVER['DOCUMENT_ROOT'].'/include/file_force_download.php');
    file_force_download($_SERVER['DOCUMENT_ROOT'].$arFile["SRC"]);
} else {?>
            <?=$arFile?>
 
 
}
 
?>
Ну вот что то типо того, я коде особо не разбирался.. Ветвление только показал как делается.
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
06.01.2016, 10:55  [ТС] 5
Azdeman, мда, не туда я пытался засунуть проверку user_agent), благодарю за подсказку!

Добавлено через 3 минуты
Azdeman, а не подскажете, почему данный загрузчик в БД добавляет не единицу, а якобы скачан 2 раза?
Вот функция
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function IncCount($fileName = NULL) {
    if ($fileName) {
        $query = "SELECT * FROM `file` WHERE `NAME` = '$fileName'";
        $res = mysql_query($query);
        if (!$res) {
            return "Could not successfully run query ($query) from DB: " . mysql_error();
    }
        if ($row = mysql_fetch_assoc($res)) {
            $id = $row['ID'];
            $count = intval($row['COUNT']+1);
            $query = "UPDATE `file` SET `COUNT` = $count WHERE `ID` = $id";
            $res = mysql_query($query);
            if ($res) {
                return $count;
            } else {
                return "Could not successfully run query ($query) from DB: " . mysql_error();
            }
        } else {
            return "Файл с таким именем не найден!";
        }
    } else {
        return "Файл с таким именем не найден!";
    }
}
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
06.01.2016, 11:10 6
Лучший ответ Сообщение было отмечено dukesov как решение

Решение

Цитата Сообщение от dukesov Посмотреть сообщение
$count = intval($row['COUNT']+1);
* * * * * * $query = "UPDATE `file` SET `COUNT` = $count WHERE `ID` = $id";
В место этих 2-х строк можно так
PHP
1
$query = "UPDATE `file` SET `COUNT` = `COUNT`+1 WHERE `ID` = $id";[/quote]
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
06.01.2016, 11:16  [ТС] 7
Azdeman, спасибо!
0
06.01.2016, 11:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2016, 11:16
Помогаю со студенческими работами здесь

Api для расшифровки User Agent
Посоветуйте какой нибудь api сервис для расшифровки User Agent'a , бесплатный , конечно если есть...

User agent
получаю данные с переменной $_SERVER вот такие к примеру Mozilla/5.0 (Linux; Android 4.4.2;...

User Agent
Прошу прощения, если такая тема уже была. Пишу браузер с ипользованием TWebBrowser. При входе, к...

подмена user agent'a
короче надо нарегить рефералов (знаю что так нехорошо делать, но надо)...какой софт (или сайти)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru