- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Сайт на 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 ошибку выдает в браузер, она и выводится вперед заголовков
Уберите по коду вот такие вещи:
переводы строк между закрывающим и открывающим тегом, а если между ними ничего не надо выводить - лучше теги удалите.