Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
27 / 26 / 9
Регистрация: 08.04.2015
Сообщений: 288

Функция isset, открытие определенной ссылки если

27.04.2015, 07:01. Показов 1848. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем дня!
Ребята, помогите кто знает.
У меня есть сайт, нужно было реализовать открытие прайсов в .doc и .xls онлайн с последующей возможностью его сохранения. Это я сделал с помощью офиса онлайн, к ссылке на прайс подставляется ссылка на офис онлайн, вроде бы все просто и работает, но, данный сервис не умеет открывать pdf файлы... Вопрос, как с помощью данной функции (или может javascript?) можно реализовать так, чтобы, если к примеру расширение файла *.pdf то ссылка будет принимать обычный вид, а если расширение *.doc, *.docx, *.xls, то ссылка будет принимать вид например (сейчас у меня так):
PHP
1
<a href="http://сайт-офис-онлайн.com?url=$price">скачать</a>
$price это переменная в которой хранится путь до прайс-листа.
Написал допустим простой код:
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$var = '';
if (isset($var)) // тут у нас pdf
{
    echo <a href="$price" targe="blank">скачать</a>;
}
else
{
    echo <a href="http://сайт-офис-онлайн.com?url=$price">скачать</a>;
}
?>
а дальше я в танке, так как не очень силен в php... При этом еще и сама ссылка должна обрабатываться? То есть если $var имеет значение *.pdf то ссылка будет обычная, в противном случае к ссылке будет подставляться ссылка на офис-онлайн. Подскажите кто знает, буду очень признателен.

Добавлено через 14 минут
P.S.: поправка, ссылка у меня выглядит сейчас так
PHP
1
<td>".opt_case($f_Price, "<a href='https://сайт-офис-онлайн.com?url=http://мой-сайт.ru$f_Price' target='_blank'>скачать</a>", "не загружен")."</td>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.04.2015, 07:01
Ответы с готовыми решениями:

Функция isset
Всем доброго дня. Есть форма , в нем есть кнопка и &quot;Textbox&quot; имя кнопки array а имя textbox array2. Есть вот такой скрипт: &lt;? ...

Как работает функция isset() ?
if(!isset($_post)) { echo 123123; } вот код. При отправке постом &quot;cancel&quot; Он пишет 123123. Если же не пришло cancel, то он ничего...

Открытие определенной формы
Здравствуйте форумчане! Создаю базу данных по регистрации режимных карт для разного типа оборудования. Оператор должен выбрать код ТПА...

11
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.04.2015, 08:21
Простой пример:
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
    # Путь к файлу
    $price = 'mydocument.pdf';
    
    # Получаем расширение файла
    $extension = pathinfo( $price, PATHINFO_EXTENSION );
    
    # Формируем ссылку
    $href = $extension == 'pdf' ? $price : 'http://сайт-офис-онлайн.com?url='. $price;
?>
<a href="<?=$href?>">скачать</a>
1
27 / 26 / 9
Регистрация: 08.04.2015
Сообщений: 288
27.04.2015, 12:28  [ТС]
Para bellum, спасибо конечно, но суть вашего кода означает, что если расширение pdf то ссылка примет такой-то вид, а если расширение не pdf? Тут видимо нужен оператор if, если я не ошибаюсь?\
Хотя даже если расширение doc, ссылка все равно остается такой как указана в вашем коде и никак не меняется

Добавлено через 14 минут
Скорей всего это изза нэтката наверное, потому как он ссылки на скачивание формирует вот в таком виде: http://мой-сайт.ru/netcat_file... 561aa2d28c
При клике, когда появляется диалог скачать\открыть, расширение видно и название файла должное, а если просто навести на "Скачать" то ссылка имеет вид "/netcat_files/11012/13481/h_738f4f02377c6c12ddf820561aa2d28c"
Можно как-то это решить?
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,952
27.04.2015, 12:29
Цитата Сообщение от pacanchik2013 Посмотреть сообщение
Тут видимо нужен оператор if, если я не ошибаюсь?\
вот это и есть условие
PHP
1
$extension == 'pdf' ? $price : 'http://сайт-офис-онлайн.com?url='. $price;
если расширение pdf, то путь просто к файлу, иначе путь равен пути к вашему офису онлайн
0
27 / 26 / 9
Регистрация: 08.04.2015
Сообщений: 288
27.04.2015, 13:03  [ТС]
tgarl, не работает...
если что-то написать вместо 'pdf' хоть '*.fff' то к любым файлам путь указанный после $price : 'то есть этот'
а если оставить значение пустым, то ссылка принимает стандартный вид... Видимо все в нэткате и его формированием ссылок, описал в посте выше

Добавлено через 22 минуты
Может нужно использовать какой-нибудь GET для определения прямого пути к файлу?

Добавлено через 7 минут
P.S.: офис онлайн по такой ссылке, как, "/netcat_files/11012/13481/h_738f4f02377c6c12ddf820561aa2d28c" нормально определяет расширение файла и запускает либо офис либо эксель. Значит это можно победить...
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.04.2015, 14:46
Цитата Сообщение от pacanchik2013 Посмотреть сообщение
ссылка все равно остается такой как указана в вашем коде и никак не меняется
Я дал правильный код. А как Вы его вставили в свой код - это уже другое дело.
1
27 / 26 / 9
Регистрация: 08.04.2015
Сообщений: 288
28.04.2015, 07:12  [ТС]
Para bellum, вставил именно так, как в Вашем примере:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
...
$extension = pathinfo( $f_Price, PATHINFO_EXTENSION );
$href = $extension == 'pdf' ? $f_Price : 'https://офис-онлайн.ru?src=http://мой-сайт.ru'. $f_Price;
...
<tr>
...
<td>".opt_case($f_Price, "<a href='$href' target='_blank'>скачать</a>", "не загружен")."</td>
...
</tr>
...
?>

и не работает... еще раз повторюсь, что NetCat генерирует ссылки загруженных в него файлов, например, через форму добавления прайсов, таким вот образом: "/netcat_files/11012/13481/h_738f4f02377c6c12ddf820561aa2d28c".
Возможно из-за этого расширение и не определяется, так как, у выше указанной ссылке, по идеи расширения нет и если вместо 'pdf' оставить просто '', то код работает, и не подставляет ссылку на офис. Опять таки, как говорил ранее, офис онлайн нормально определяет расширение, будь это doc или xls, хотя ссылка имеет нестандартный формат. Я полагаю надо копать в коде формировании ссылок неткатом, могу и ошибаться, но другого решения пока не вижу...
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
28.04.2015, 07:25
Цитата Сообщение от pacanchik2013 Посмотреть сообщение
таким вот образом: "/netcat_files/11012/13481/h_738f4f02377c6c12ddf820561aa2d28c".
Так конечно не будет распознаваться расширение. Его же здесь нет. Надо mime определять.
0
27 / 26 / 9
Регистрация: 08.04.2015
Сообщений: 288
28.04.2015, 07:27  [ТС]
Para bellum, не подскажете как это реализовать, примерчик? Третий день пытаюсь решить это, но дальше не продвигаюсь... Буду благодарен за содействие и помощь в познании
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
28.04.2015, 08:22
Ну вот так, например, можно получить mime-тип файла:
PHP
1
2
3
4
5
6
7
8
<?php
    # Путь к файлу
    $path = 'путь к файлу';
    
    # Получаем mime-тип файла
    $mime = (new Finfo)->file($path, FILEINFO_MIME_TYPE);
    
    var_dump($mime);
0
27 / 26 / 9
Регистрация: 08.04.2015
Сообщений: 288
28.04.2015, 10:01  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
$mime = (new Finfo)->file($path, FILEINFO_MIME_TYPE);
При данной строке, вообще ничего не отображается, а именно таблица с данными становится пустой, так как в ней не только ссылка на файл, возможно тут ошибка, либо netcat не воспринимает...
0
27 / 26 / 9
Регистрация: 08.04.2015
Сообщений: 288
07.05.2015, 09:56  [ТС]
Para bellum, решил данную ситуацию другим способом:
PHP
1
2
3
4
5
6
7
<?php
...
$headers = get_headers($path,1);
$a = $headers['Content-Disposition'];   
preg_match('#filename="(.*)"#iU', $a, $matches);
$filename = $matches[1];
...
Теперь можно и тип определить, а реализовал я именно так, потому что вместо "скачать", захотелось чтоб выводилось оригинальное название файла.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2015, 09:56
Помогаю со студенческими работами здесь

Зачем нужны rvalue ссылки, если есть универсальные ссылки
Читаю книгу Скотта Мэйерса... Что-то я совсем запутался с этими rvalue ссылками. Я не пойму, зачем нужны rvalue ссылки, если есть...

Открытие файла на определенной строке
Привет всем. Сразу вопрос. Есть лист-бокс, в который выводяться определенное строки с лога. Возможно ли кликнув на одну из строк...

Отловить открытие определенной папки
Здравствуйте, помогите пожалуйста с решением проблемы: Необходимо при открытии определенной папки(двойной клик по папке в explorer)...

Кнопка на открытие определенной папки
Доброго времени суток, уважаемые форумчане! Я знаю, что немного Вам уже поднадоел своими просьбами. Но опять появилась идея, а как...

Открытие формы на определённой записи
Добрый день. Знаю, что вопрос много раз поднимался, но я не смог найти то, что нужно. Есть форма, в ней подчиненная таблица со списком...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru