Категория ‘Без рубрики’

Как сделать ссылку `Сохранить как` на файл PDF, чтобы при нажатии файл не открывался

Как правило, при попытке открыть файл определенного типа (например, с расширением PDF), браузер вместо того, чтобы спросить пользователя “что делать с этим файлом - сохранить или открыть с помощью…” сразу же открывает файл, причем непосредственно в браузере.

Как сделать, чтобы при нажатии на ссылку появлялось окошко сохранить как?

Информация о том, какую программу использовать для открытия того или иного типа файлов хранится на пользовательском компьютере.. и какую программу использовать для открытия - задать с сервера мы не сможем. Однако, можно передать MIME-тип файла (как в статье про экспорт таблицы из PHP в Excel) при помощи отправки нужного заголовка. Для сервера Apache можно воспользоваться файлом .htaccess и директивой AddType. По умолчанию Web-сервер для .pdf-файла передаёт соответствующий тип:
AddType application/pdf .pdf

Если попробовать изменить его, например так:
AddType application/blabla .pdf
или вообще удалить:
RemoveType pdf

то браузер при открытии (если, конечно, он использует MIME-типы а не расширения файлов) файла незнакомого типа выведет окошко “сохранить файл как или открыть с помощью”

Однако, если пользователь привык к действию по умолчанию, то внезапное окошко “Сохранить как” может оказаться неприятным сюрпризом для него.

UpD для случаев, когда браузер воспринимает расширение файла, а не MIME-заголовок, можно оставлять (или делать внутренний редирект при помощи RewriteRule) ссылку например, на .PHP файл, который будет читать содержимое нужного файла и отдавать в браузер (самое простое - функцией file_get_contents). Прежде чем реализовывать такой механизм, следует проверить, насколько его использование оправдано. Отдача статики намного быстрее (особенно при использовании легких web-серверов), чем обработка PHP-файла.

Опубликовано Июль 8, 2011 | автор: levik  |  Нет комментариев »

Joomla Zoo (YT ZOO) - каталог-зоопарк универсальный

Joomla! Компонент универсального каталога  Zoo - очень удобный и настраиваемый “под себя” инструмент. Он позволяет создавать каталоги любых материалов (статьи, товары, файлы для загрузки..) неограниченной вложенности.

Подборка ссылок по ZOO:

http://www.yootheme.com/ - сайт разработчика. Там же можно бесплатно скачать последнюю версию ZOO. А вот желающим обзавестись неким ZOO App Bundle придется раскошелиться…

Шаблоны для ZOO расположены в каталоге “/media/zoo/applications/{НАЗВАНИЕ_ПРИЛОЖЕНИЯ}/templates/{НАЗВАНИЕ_ШАБЛОНА}/”. Для того, чтобы, к примеру, поменять местами описание категории и каталог товаров, особых знаний php и HTML не требуется, однако в любом случае рекомендую сохранять резервные копии.

Title для ZOO-категорий и элементов ”зоопарка” устанавливаются в файле
/components/com_zoo/controllers/default.php
в соответствующих методах - public function category() (доступна переменная $this->category) и public function item() ($this->item и $category) 

Опубликовано Июль 5, 2011 | автор: levik  |  Нет комментариев »

OScommerce boxes - пишем свой бокс

Краткая инструкция по созданию своего бокса в OSCommerce. Составлена по мотивам заметок, поэтому может содержать некоторые неточности. Основной принцип, однако сохраняется

Бокс в OSCommerce - информационный блоки, который можно кэшировать отдельно и выводить в нужном месте шаблона. К примеру, перечень категорий или блок “текстовые страницы”, новинки каталога или хиты продаж. Создадим свой бокс, который для определенности назовем my_new_box.

1. определяемся с шаблоном бокса.

Скорее всего, тут сложностей не возникнет - обычно в шаблоне уже присутствуют боксы, которые внешне похожи на наш. Если же нет - совместными усилиями дизайнера+верстальщика (возможно, в одном лице вебмастера) сооружаем HTML код бокса. В общем виде что-то вроде:
Читать целиком »

Опубликовано Июль 2, 2011 | автор: levik  |  Нет комментариев »

Кэшированный редирект или постоянно перебрасывает страница

Столкнулся с такой ситуацией. Страница (назовем её страница А) перенаправляет пользователя на форму входа-регистрации (Страница Б), если он не определяется как пользователь. Пользователь входит/регистрируется и при повторном переходе к Странице А вновь перенаправляется на Страницу Б.

В общем, сервер упорно не хочет заново проверять условие “пользователь вошел” (т.к. подглядывая в переменные сессии на соседних страницах - на той же форме регистраци - можно увидеть, что пользователь определяется корректно).

Оказалось, дело в том, что сервер перед редиректом устанавливает кэширующие заголовки (видимо, в погоне за уменьшением нагрузки на сервер и, соответственно, увеличением скорости работы), которые “намекают” браузеру, что ответ надо бы сохранить (в данном случае на 2 часа). И тут же передается редирект с кодом ответа 301 или 302, который и попадает в кэш. При повторном обращении запрос к серверу (именно там производится проверка, вошел пользователь или нет) вообще не производится, а результат, полученный из кэша повторно перенаправляет на страницу Б. Помогла повторная отправка аналогичных заголовков, указывающих на то, что страницу кэшировать не нужно.

header(”Expires: Mon, 3 Apr 2000 07:00:00 GMT”);
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");

Вот такой вот “кэшированный редирект”.

Опубликовано Июнь 29, 2011 | автор: levik  |  Нет комментариев »

Denwer, kaspersky и hosts - история одного фейла

Дано: Запускается denwer, однако… ни один хост кроме localhost недоступен.

Дополнительно: на компьютере установлен Kaspersky Internet Security 11

При этом файл hosts при запуске денвера тупо не изменяется. Однако никаких сообщений о запрете на запись нет. Поиски по сочетаниям kaspersky, Denwer, hosts сводятся к тому, чтобы добавить все исполняемые файлы  Denwer в доверенные, изменить разрешения файла.. включить DNS-клиент. Всё это вроде “нормально”…

Спустя некоторое время заметил, что файл hosts после запуска денвера возвращается в исходное состояние с датой изменения 18.08.2003.. однако при открытии в текстовом редакторе - отображается файл с хостами измененный только что. Ощущение идиота во мне усиливается )))

Отключаю Касперского.. повторяю манипуляцию с файлом - тоже самое.. Копирую файл 2003 года в другое место - копируется “новый” последний файл.. Сохраняю обратно - размер возвращается… Касперский отключен :)

Туплю… Долго туплю…

Повторяю ещё раз (ещё много-много раз) с самого начала -  туплю… Ухожу в форумы… читаю про наследование ограничений программ у Касперского (если программа запущена из другой программы, то она наследует её ограничения, если не указано другое).. вспоминаю, что касперский отключен… И ловлю себя на мысли, что запускаю всё это дело из Total Commander…

Редактирую hosts из проводника в блокноте - сохраняю… работает… Домысливаю, что версия Total - Portable (видимо, отслеживает изменения системных файлов.. и сохраняет их к себе.. редактор, который показывал “нужный” файл естественно запускался из Total )))

Вроде всё на местах - hosts изменен, DNS-клиент включен.. ан нет - нужные хосты не пингуются..

Оказывается, для VPN-подключения (компьютер использовался) был отключен lmhosts (галочка в свойствах сетевого подключения - TCP/IP - вкладка Wins) - ставим галочку, выбираем файл (?) - работает!

ps.

Опубликовано Июнь 22, 2011 | автор: levik  |  Нет комментариев »

PHP - как удалить переменную из $_GET - редирект со склейкой

В продолжение статьи про “лишние” $_GET переменные выкладываю практическую часть - скрипт (сниппет-кусок готового кода) для редиректа на аналогичные страницы, но без лишних $_GET переменных. Т.е. склейка страниц c $_GET переменными и “основных” страниц, без них (или удаление $_GET переменных из URI)

if (!empty($_GET)) {
	$tounset = array('vmcchk','flypage');
	foreach ($tounset as $v)
		unset ($_GET[$v]);
	// new URI
	$request = substr($_SERVER['REQUEST_URI'],0,strpos($_SERVER['REQUEST_URI'],'?'));
	$qs = ''; // NEW query string
	if (!empty ($_GET)) {
		$qs = array();
		foreach ($_GET as $k=>$v) {
			$qs[] = '$k='.urlencode($v);
		}
		$qs = implode ('&',$qs);
		$qs = '?'.$qs;
	}
	header("HTTP/1.1 301 Moved Permanently");
	header ('Location:'.$request.$qs);
	exit();
}

Опубликовано Июнь 13, 2011 | автор: levik  |  Нет комментариев »

vmcchk=1 - Virtuemart добавляет в конце URL vmcchk

В очередной раз порадовал Virtuemart - интернет магазин на Joomla. В этот раз красивые SEO-адреса были подпорчены непонятной припиской vmcchk=1 . Как и предпологалось из названия - это дело “рук” vm - virtuemart

Добавление этой переменной связано с проверкой Cookie у web-клиента (браузера т.е.). Чтобы убрать злостный vmcchk в конце УРЛ-ов следует подредактировать файл /classes/ps_session.php около 63 строки - проще всего закомментировать (в начале строки добавить // - двойной слэш)

if( @$_REQUEST['option'] == 'com_virtuemart' && USE_AS_CATALOGUE == '' ) {
$this->doCookieCheck(); // Introduced to check if the user-agent accepts cookies
}

Кроме того, не помешает для склейки страниц-дублей сделать 301 редирект на страницу без vmcchk

ps Что самое интересное, на форуме разработчиков склоняются к тому, чтобы убрать эту проверку, однако vmcchk до сих пор присутствует в URL-ах )))

Опубликовано Июнь 10, 2011 | автор: levik  |  Нет комментариев »

Windows - как сменить IP из командной строки, утилиты для изменения сетевых настроек

Иногда при переходе от одного сетевого кабеля к другому (ноутбук с “проводным” подключением), часто бывает так, что требуется определенная настройка IP адреса - если DHCP  не включен (иногда так задумано некоторыми админами или провайдерами). Естественно, постоянное изменение параметров подключения может порядком надоесть, и появляется желание автоматически, одним кликом изменять IP адрес (а также другие параметры сетевого подключения)

Как сменить IP адрес из командной строки

Для смены параметров сетевого подключения из командной строки можно воспользоваться командой netsh (IP, маска, шлюз и флаг, указывающий, что шлюз основной)
netsh interface ip set address name="Подключение по локальной сети" static 192.168.0.111 255.255.255.0 192.168.0.1 1

Сетевое подключение с динамическими параметрами (DHCP)
netsh interface ip set address name="Подключение по локальной сети" dhcp

Справку по контексту netsh можно вызвать командой
netsh interface ip set address /?

Для задания статического или динамического DNS-сервера соответственно следует воспользоваться одной из команд:
netsh interface ip set dnsservers name="Подключение по локальной сети" source=dhcp
netsh interface ip set dnsservers "Подключение по локальной сети" static 10.0.0.1 primary

И, конечно же не забываем, что bat-файлы для корректной работы с русскими именами должны сохраняться в кодировке cp-866 (Notepad plus plus). Как вариант, можно просто переименовать “Подключение по локальной сети” в “Local Area Connection” или любой другой набор латинских символов

Кроме того, можно воспользоваться утилитами сохранения сетевых настроек. Например, NetSwitcher (условно-бесплатная) - программа при запуске размещается в трее и позволяет переключаться между сетевыми конфигурациями буквально двумя щелчками.

upd. bat-скрипт, содержащий указанную строку или окошко CMD пользователям windows 7 следует запускать с правами администратора.

Опубликовано Июнь 2, 2011 | автор: levik  |  Нет комментариев »

Чем перевернуть видео или как повернуть видео снятое вверх ногами

Иногда, снимая на камеру, можно случайно повернуть камеру… Когда придет время просматривать получившееся видео на компьютере, мы увидим повернутое на 90 или на 180 градусов видео. Аналогичная ситуация может возникнуть, если автомобильный видеорегистратор установить “вверх ногами” - машины, едущие по асфальту колёсами вверх - зрелище впечатляющее.

Итак, чем же повернуть видео?

Для просмотра видео под углом кратным 90 градусов можно использовать программу ACDSee (не самую старую - версия  6, если не ошибаюсь, видео не позволяет просматривать). После выбора файла, в режиме просмотра нажать правой кнопкой на области просмотра - будет пункт “Повернуть на 90 градусов по часовой стрелке” (Rotate Clockwise 90 degrees). К сожалению, функция Save As перевернутое видео сохранила только в JPG-кадр, состоящий из 4-х кадров. Функция Rotate (которая поворачивает изображения) для видеофайлов MOV была неактивна.

Также для просмотра повернутого видео можно воспользоваться проигрывателем VLC Media Player. После открытия видео файла нажимаем пункт меню Инструменты - Эффекты и фильтры - Видео-эффекты, далее - ставим галочку у слова Поворот , и вертим видео как нам нужно.

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

VirtualDub - бесплатный редактор видео с кучей возможностей. Чтобы повернуть видео в VirtualDub следует открыть файл, затем выбрать фильтр Rotate (Video - Filters - Add - Rotate), выбрать угол поворота (90 по часовой, 90 против часовой или 180), заглянуть в предпросмотр (Out Pane), выбрать желаемый метод сжатия (по умолчанию иногда стоит без сжатия) и в меню File - Save as AVI

Чтобы в VirtualDub открыть mov - файл (формат QuickTime), можно воспользоваться плагином Quicktime_VD к VirtualDub
http://declic-video-fx.com/Portals/0/studio/tips-tricks/Transcode/Quicktime_VD_v0.2.0.0_bin.zip

Avidemux как для Linux (ещё и Mac Os и PC BSD), так и для Windows
http://fixounet.free.fr/avidemux/download.html - скачать
http://avidemux.berlios.de/doc/ru/ - руководство

И, конечно же нельзя забывать о платных программах для редактирования видео (естественно, для того, чтобы просто повернуть видео, их покупать не обязательно.. однако, вдруг уже имеется установленная…)

С такими “монстрами” как Adobe Premiere , Pinnacle Studio (9 версия точно) повернуть видео не составит труда..

ps И постарайтесь в следующий раз держать камеру вертикально )))

Опубликовано Май 31, 2011 | автор: levik  |  Нет комментариев »

Как изменить действие по умолчанию “Воспроизвести” для DVD дисков

При открытии DVD-диска в Windows Media Player компьютер выдавал ошибку - не установлен кодек. После установки K-Lite Mega Codec Pack ошибки нет, но при проигрывании DVD выдает черный экран. Просто нет изображения. При этом Media Player Classic нормально воспроизводит DVD

В качестве временного решения - изменяем действие по умолчанию для DVD-дисков. В реестре ищем в одной из веток DVD - Воспроизвести (F3 - поиск по фразе “Воспроизвести”) и меняем ключ, который там стоит (что-то вроде wmplayer.exe “%L%”…) на “C:\Program Files\K-Lite Codec Pack\Media Player Classic\mpc-hc.exe” “%L\” /dvd

Опубликовано Май 12, 2011 | автор: levik  |  Нет комментариев »