- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Сайт на joomla. Скрипт позволяющий скачивать прайс только группе авторы, ссылка на прайс формируется временная. Захожу в site.ru/components/price/index.php как автор, появляется ссылка на прайс, нажимаю на эту ссылку и выдается ошибка
Warning: Cannot modify header information - headers already sent by (output started at /www/site.ru/components/price/index.php:18) in /www/site.ru/components/price/index.php on line 35
Подскажите где ошибка в скрипте?
Содержимое index.php:
<?php
$my_path = dirname(__FILE__);
$absolute_path = dirname( $my_path."/../../configuration.php" );
// Set up the appropriate CMS framework
define( '_JEXEC', 1 );
define( 'JPATH_BASE', $absolute_path );
define( 'DS', DIRECTORY_SEPARATOR );
// Load the framework
require_once ( JPATH_BASE . DS . 'includes' . DS . 'defines.php' );
require_once ( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );
// create the mainframe object
$mainframe = & JFactory::getApplication( 'site' );
?>
<?php $user = JFactory::GetUser();
if($user->get('usertype') == 'Author') { ?>
<?php
$timeout = 3600;
$filesdir = "images/price/";
//
$secret = md5((int)(time() / $timeout));
if( isset($_GET['key']) ) {
if( ($_GET['key'] == $secret) &&
strlen($_GET['fn']) && file_exists($filesdir.$_GET['fn']) ) { //проверка файла
header("Content-Disposition: attachment; filename=price.xls");
readfile($filesdir.$_GET['fn']);die;
} else {
header ( 'HTTP/1.1 404 Not Found' );
die;
}
}
echo "<a href='?fn=price.xls&key={$secret}'>price.xls</a>";
?>
<?php } else { ?>
Прайс вам не доступен
<?php } ?>
Если в index.php оставить только часть скрипта (код ниже), то прайс загружается.
<?php
$timeout = 3600;
$filesdir = "images/price/";
//
$secret = md5((int)(time() / $timeout));
if( isset($_GET['key']) ) {
if( ($_GET['key'] == $secret) &&
strlen($_GET['fn']) && file_exists($filesdir.$_GET['fn']) ) { //проверка файла
header("Content-Disposition: attachment; filename=price.xls");
readfile($filesdir.$_GET['fn']);die;
} else {
header ( 'HTTP/1.1 404 Not Found' );
die;
}
}
echo "<a href='?fn=price.xls&key={$secret}'>price.xls</a>";
?>
проверьте 18 строку
require_once ( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );
может php ошибку выдает в браузер, она и выводится вперед заголовков
Уберите по коду вот такие вещи:
переводы строк между закрывающим и открывающим тегом, а если между ними ничего не надо выводить - лучше теги удалите.