О проекте

Проект 9999p.ru создан для людей, ценящих время и средства. Он поможет вам создать качественный сайт за короткий срок и очень недорого!  Суть его - в разработке сайта на основе готовых решений, которые позволяет зарабатывать другим пользователям уже давно!

Преимущества

Преимущества такой разработки очевидны:

  1. Скорость внедрения
  2. Невысокая стоимость
  3. Высокое качество
  4. Ожидаемый результат

Все включено

В стоимость разработки сайта включены все необходимые операции разработки сайта:

  • Регистрация домена
  • Регистрация хостинга
  • Дизайн сайта
  • Верстка сайта
  • Система управления сайтом
  • Наполнение сайта
  • Публикация сайта в интернете
  • Добавление в поисковые системы

Выполненные работы

Мы создали для наших клиентов

И сейчас занимаемся разаботкой новых. Заказать сайт


Создание файла Добавил в компоненте

Создание файла Добавил в компоненте: Способ 1, SWFUpload

Часть 1: Введение

Стандартный способ загрузить файл с формой HTML. Это отлично работает, если вы загружаете один файл, но браузеры не позволяют выбирать и загружать несколько файлов за один раз (обновление Feb 2010, Firefox 3.5 и некоторые другие современные браузеры поддерживают HTML5 нескольких входных файлов)

Наиболее распространенный способ выбора нескольких файлов для загрузки является использование Flash и JavaScript. Flash часть сценария открывает выберите файл диалог, в котором несколько файлов могут быть выбраны, и Flash / JavaScript отправляет каждый файл, и получает ответ от сервера.

Наиболее популярные сценарии, используемые для этого являются SWFUpload и Необычные загрузить (http://digitarald.de/project/fancyupload/). Flash Uploader в медиа-менеджер Joomla основан на Необычные Загрузить версии 1,0. Как Необычные загрузить 2,0 и 3,0 использовать MooTools 1,2, а Joomla 1.5 использует MooTools 1,11, мы не можем использовать Необычные Добавлено 2.0/3.0 в админ страницы Joomla. Необычные Загрузка 1,0 может быть использован, но он не обновляется и не поддерживается больше.

SWFUpload не использовать Mootools или Jquery. Из-за этого он, вероятно, работать на любой странице с Mootools 1.11 (Joomla 1,5), или Mootools 1,2 (Joomla 1,6). Поэтому мы будем использовать SWFUpload в этой статье.


Внутри файла будет демо папки, так и внутри, что simpledemo папку. Это пример мы будем интегрироваться в компонент Joomla.

Часть 2: Добавление внешних Javascript

Нам нужно добавить в внешние ссылки в заголовке документа, поставить некоторые JavaScript в голову DOC, и положить HTML в нашем теле.

Если вы посмотрите на simpledemo / index.php странице вы увидите ссылки на 5 файлов в голове страницы.

Сделать папку в корневом каталоге папку компонентов, называемых SWFUpload, копию .. / CSS / default.css, .. / SWFUpload / swfupload.js, JS / swfupload.queue.js, JS / fileprogress.js и JS / обработчики . JS файлы в эту папку.

Нам также необходимо скопировать .. / SWFUpload / swfupload.swf и images/TestImageNoText_65x29.png файлы в эту папку.

В вашем view.html.php файл Добавить в следующий код:

 

//получить имен узлов
jimport('joomla.environment.uri' );
$host = JURI::root();

//добавить
ссылки на внешние файлы в голову веб-страницы (обратите внимание на
"администратора" в путь, который не nescessary если вы находитесь в
интерфейсе)

$document =& JFactory::getDocument();
$document->addScript($host.'administrator/components/com_mycomponent/swfupload/swfupload.js');
$document->addScript($host.'administrator/components/com_mycomponent/swfupload/swfupload.queue.js');
$document->addScript($host.'administrator/components/com_mycomponent/swfupload/fileprogress.js');
$document->addScript($host.'administrator/components/com_mycomponent/swfupload/handlers.js');
$document->addStyleSheet($host.'administrator/components/com_mycomponent/swfupload/default.css');

То есть внешняя часть файлов сделать. Мы все еще должны добавить в голову JavaScript и HTML тела.


Часть 3: Добавление Глава Javascript

Глава JavaScript часть: JavaScript ниже почти такой же, как JavaScript от простых демо, несколько модификаций прокомментировал. Это nescessary прочитать его и измените детали (такие как задачи), которые имеют отношение к вашему компонента.

 

//когда мы посылаем файлы для загрузки, мы должны сказать Joomla нашей сессии, и мы получим вышли из
$session = & JFactory::getSession();

$swfUploadHeadJs ='
var swfu;

window.onload = function()
{

var settings =
{
//
это путь к флэш-файла, вам нужно разместить компоненты имя в нее
flash_url : "'.$host.'administrator/components/com_mycomponent/swfupload/swfupload.swf",

//
мы не можем поставить любые переменные в URL для сложных причин, но мы можем положить их в должности ...
upload_url: "index.php",
post_params:
{
"option" : "com_mycomponent",
"controller" : "mycontroller",
"task" : "mytask",
"id" : "'
.$myItemObject->id.'",
"'
.$session->getName().'" : "'.$session->getId().'",
"format" : "raw"
},
//
Вы должны поместить сессии и "формат сырья" там, другие из них, что вы, как правило, положить в URL
file_size_limit : "5 MB",
//
стороне клиента файл chacking для удобства только, вам необходимо проверить на стороне сервера для обеспечения безопасности
file_types : "*.jpg;*.jpeg;*.gif;*.png",
file_types_description : "All Files",
file_upload_limit : 100,
file_queue_limit : 100,
custom_settings :
{
progressTarget : "fsUploadProgress",
cancelButtonId : "btnCancel"
},
debug: false,

//
Кнопка Настройки
button_image_url: "'.$host.'administrator/components/com_mycomponent/swfupload/images/TestImageNoText_65x29.png",
button_width: "85",
button_height: "29",
button_placeholder_id: "spanButtonPlaceHolder",
button_text: \'<span class="theFont">Choose Files</span>\',
button_text_style: ".theFont { font-size: 13; }",
button_text_left_padding: 5,
button_text_top_padding: 5,

//
Функции обработчика события определены в handlers.js
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
queue_complete_handler : queueComplete //
Очередь плагин события
};
swfu = new SWFUpload(settings);
};

'
;

//Добавить JavaScript, чтобы глава HTML документ
$document->addScriptDeclaration($swfUploadHeadJs);



Часть 4: Добавление органа HTML

Мы все еще должны добавить в нашем теле HTML, у вас TMPL / default.php файл Добавить в:

<div id="swfuploader">
<form id="form1" action="index.php" method="post" enctype="multipart/form-data">
<fieldset class="adminform">

<div class="fieldset flash" id="fsUploadProgress">
<span class="legend">Upload Queue</span>
</div>
<div id="divStatus">0 Files Uploaded</div>
<div>
<span id="spanButtonPlaceHolder"></span>
<input id="btnCancel" type="button" value="Cancel All Uploads" onclick="swfu.cancelQueue();" disabled="disabled" style="margin-left: 2px; font-size: 8pt; height: 29px;" />

</div>
</fieldset>
</form>
</div>

Если все прошло хорошо, вы сможете загружать файлы на свой сценарий компонентов, хотя ничего не будет происходить на сервере нет PHP для получения изображения.

Часть 5: Получение файлов с помощью PHP

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

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

Есть много других хороших ресурсов на интернете. Важно понять, как загрузка файлов безопасности работ, а не скопировать и вставить код, который проверяет MIME тип, и предполагая, сценарий является безопасным.

Вот пример PHP, которая будет проверять, если файл изображения, и загрузить его. Это не исчерпывающий пример проверку безопасности, но это хорошее начало:

//import joomlas filesystem functions, we will do all the filewriting with joomlas functions,
//so if the ftp layer is on, joomla will write with that, not the apache user, which might
//not have the correct permissions
jimport('joomla.filesystem.file');
jimport('joomla.filesystem.folder');

//this is the name of the field in the html form, filedata is the default name for swfupload
//so we will leave it as that
$fieldName = 'Filedata';

//any errors the server registered on uploading
$fileError = $_FILES[$fieldName]['error'];
if ($fileError > 0)
{
switch ($fileError)
{
case 1:
echo JText::_( 'FILE TO LARGE THAN PHP INI ALLOWS' );
return;

case 2:
echo JText::_( 'FILE TO LARGE THAN HTML FORM ALLOWS' );
return;

case 3:
echo JText::_( 'ERROR PARTIAL UPLOAD' );
return;

case 4:
echo JText::_( 'ERROR NO FILE' );
return;
}
}

//check for filesize
$fileSize = $_FILES[$fieldName]['size'];
if($fileSize > 2000000)
{
echo JText::_( 'FILE BIGGER THAN 2MB' );
}

//check the file extension is ok
$fileName = $_FILES[$fieldName]['name'];
$uploadedFileNameParts = explode('.',$fileName);
$uploadedFileExtension = array_pop($uploadedFileNameParts);

$validFileExts = explode(',', 'jpeg,jpg,png,gif');

//assume the extension is false until we know its ok
$extOk = false;

//go through every ok extension, if the ok extension matches the file extension (case insensitive)
//then the file extension is ok
foreach($validFileExts as $key => $value)
{
if( preg_match("/$value/i", $uploadedFileExtension ) )
{
$extOk = true;
}
}

if ($extOk == false)
{
echo JText::_( 'INVALID EXTENSION' );
return;
}

//the name of the file in PHP's temp directory that we are going to move to our folder
$fileTemp = $_FILES[$fieldName]['tmp_name'];

//for security purposes, we will also do a getimagesize on the temp file (before we have moved it
//to the folder) to check the MIME type of the file, and whether it has a width and height
$imageinfo = getimagesize($fileTemp);

//we are going to define what file extensions/MIMEs are ok, and only let these ones in (whitelisting), rather than try to scan for bad
//types, where we might miss one (whitelisting is always better than blacklisting)
$okMIMETypes = 'image/jpeg,image/pjpeg,image/png,image/x-png,image/gif';
$validFileTypes = explode(",", $okMIMETypes);

//if the temp file does not have a width or a height, or it has a non ok MIME, return
if( !is_int($imageinfo[0]) || !is_int($imageinfo[1]) || !in_array($imageinfo['mime'], $validFileTypes) )
{
echo JText::_( 'INVALID FILETYPE' );
return;
}

//lose any special characters in the filename
$fileName = ereg_replace("[^A-Za-z0-9.]", "-", $fileName);

//always use constants when making file paths, to avoid the possibilty of remote file inclusion
$uploadPath = JPATH_SITE.DS.'images'.DS.'stories'.DS.$fileName;

if(!JFile::upload($fileTemp, $uploadPath))
{
echo JText::_( 'ERROR MOVING FILE' );
return;
}
else
{
// success, exit with code 0 for Mac users, otherwise they receive an IO Error
exit(0);
}

Если все хотят хорошо загруженные файлы будут в образах / историями папку.

Часть 6: Flash плагин COOKIE ошибку на не-IE браузерах

Также вы должны обратить внимание на Flash ошибка печенья игрока!


Flash Player плагин для FireFox, Opera и Safari (и, возможно, других не-IE браузерах) содержит ошибку, которая посылает куки от IE, чтобы загрузить URL вместо печенья от браузера. Сессия только печенье с IE не отправляются.

1) Любое печенье с не-IE браузером (например, проверка подлинности, Логин и т.д.) не будут отправлены с загрузки файлов. Вместо печенья от IE будет отправлено. Таким образом, не печенье или неправильно куки будут отправлены. В большинстве случаев это означает, сессий и куки проверки подлинности на основе теряются при принятии загрузки.

2) Cookies установленных загрузить сценарий действительно получаем множество, но только для Flash. Браузер не будет их видеть.

3) Эта ошибка влияет на Flash 8 и Flash 9 и все версии SWFUpload

4) Вы не можете полагаться на печенье при использовании SWFUpload (или на основе флэш загрузить инструмент). Вы должны направить необходимые данные из печенья по-другому. Есть несколько тем по этому вопросу на форуме, и многие из демо показать обходные пути для восстановления сессий PHP и некоторые файлы примеров показывают, как восстановить печенье так сессии и аутентификации будут восстановлены в ASP.Net.

5) Это можно считать проблемой безопасности, но, вероятно, не достаточно серьезны, чтобы на самом деле компромисс данных. Печенье создан в IE флэш-прежнему есть все правила и ограничивает связанные с печеньем в любом браузере.

Решение это изменить функцию _start () (библиотеки \ Joomla \ сессии \ session.php):

 

$sn = session_name();

if(isset($_COOKIE[$sn]) && isset($_POST[$sn]))
{
$_COOKIE[$sn] = $_POST[$sn];
session_id($_POST[$sn]);
}

session_start();