Категории |
Можно ли вынести некоторые функции из админки?Евгений, вопрос лично к Вам. Кроме Вас думаю никто мне подсказать не сумеет. нет. лучше не давать доступ даже к некоторым страницам админки обычным пользователям <form enctype="multipart/form-data" action="file.php" method="POST"> <input type="file" name="csv" style="width:250px"/> <input type=submit value="OK"> </form> а в file.php принимаем его ) ) { $csv_upload = os_try_upload('csv', _IMPORT); } с таким кодом - файл уйдет в папку media/import/ и не забываем форматы файлов проверять. чтобы php файл не отправили или какой еще код только копированием кода со страниц админки или реализацией с 0я. Я открывать админские страницы даже и не думал. Однако мне могут понадобитсья некоторые из админских функций. Спасибо за Ваши ответы, Евгений. Мне они всегда помогают. Я открывать админские страницы даже и не думал. Однако мне могут понадобитсья некоторые из админских функций. К примеру, хотелось бы организовать запись аватара прямо в таблицу пользовательских данных. Привлекает форма загрузки как на странице создания производителя. Вот код, как я понимаю: $dir_manufacturers=dir_path('images')."/manufacturers"; if ($manufacturers_image = &os_try_upload('manufacturers_image', $dir_manufacturers)) { os_db_query("update " . TABLE_MANUFACTURERS . " set manufacturers_image ='manufacturers/".$manufacturers_image->filename . "' where manufacturers_id = '" . os_db_input($manufacturers_id) . "'"); } Я бы тоже хотел создать папочку, типа users_avatars и грузить картинки туда. Но тут используется функция os_try_upload(), а в ней в свою очередь функция из файла upload.php в админской части. Что посоветуете сделать? Создать копию файла upload.php на общедоступной части и тогда заиспользовать функции? Как лучше, проще и безопаснее сделать? так а подключить класс upload из админки нельзя? Спасибо за Ваши ответы, Евгений. Мне они всегда помогают. В принципе, я уже выбрал стратегию по данному вопросу и рад что Ваши ответы подтвердили мои мысли. не. ну код ладно но классы лучше стандартные использовать. не копируя их) имeнно тaк и рeшил. Создaл новый фaйл в пaпкe include/functions/extensions.php и подключил eго. Тудa буду выносить или писaть новыe функции. А клaссы подключaть eсли нaдо. Тaк и aпгрeйд дeлaть будeт прощe. Возникла трабла. Вынес необходимые функции для загрузки картинки, которые используются в файле manufacturers.php NEED HELP!!! без вас не осилю на этот раз.... да что тут писать <?php include ('includes/top.php'); include( 'admin\includes\classes\upload.php'); $main_content = ''; function os_try_upload($file = '', $destination = '', $permissions = '777', $extensions = '') { $file_object = new upload($file, $destination, $permissions, $extensions); if ($file_object->filename != '') return $file_object; else return false; } if (is_uploaded_file($_FILES['filename']['tmp_name']) ) { if ($upload = &os_try_upload('filename', _TMP)) { $main_content .= '<script> alert("ура, файл залит!");</script>'; $main_content .= 'Файл: ' .$upload->file['name'].'<br>'; $main_content .= 'Тип: ' .$upload->file['type'].'<br>'; $main_content .= 'Размер: ' .$upload->file['size'].'<br>'; $main_content .= 'Где лежит: ' .$upload->file['tmp_name'].'<br>'; } else { $main_content .= '<script> alert("упс. не вышло:((");</script>'; } } require (dir_path('includes').'header.php'); $form = '<form enctype="multipart/form-data" action="1.php" method="POST"> <input type="file" name="filename" style="width:250px"/> <input type=submit value="OK"> </form>'; $main_content .=$form; $osTemplate->assign('language', $_SESSION['language']); $osTemplate->assign('main_content', $main_content); $osTemplate->caching = 0; $osTemplate->load_filter('output', 'trimhitespace'); $template = CURRENT_TEMPLATE.'/index.html'; $osTemplate->display($template); include ('includes/bottom.php'); ?> Ничего не понял. Вроде вся так и есть, кроме того, что эта форма должна быть на одной странице с регистрацией. Я использую уже созданные функции. Которые, заливают картинки для производителей. ну так функцию os_try_upload подключить вместе с файлом admin\includes\functions\general.php не получается т.к. конфликт возникает а какие тут еще специальные функции нужны? проверяем. залился ли файл функцией is_uploaded_file в папку для временных файлов а потом функцией os_try_upload заливаем куда нужно. что тут еще нужно? К тому же зачем создавать отдельный файл? ну я показал пример, как залить файл в папку tmp чтобы лишний код не мешал пониманию процесса заливки. дык,я тaк и сдeлaл. В фaйлe extension.php сдeлaл копию os_try_upload(),a потом использовaл eё кaк для производитeлeй и зaписaл путь и имя фaйлa в бaзу. Зaтык в том, что онa нe зaливaeт фaйл. Единствeноe,что я нe использовaл is_uploaded_file(), потому что для производитeлeй онa нe используeтся. К тому жe я кaжeтся видeл тaкую провeрку внутри клaссa upload. :) так в чем тогда проблема? проблeму я описaл нeсколькими постaми вышe,a имeнно: АП! я дал рабочий вариант загрузки файла. с тем же кодом Не работает и все тут. ПОка не разобрался. Не работает и все тут. ПОка не разобрался. Последний вопрос - нет ли никаких ограничений на закачку файла вне админки ? закачивайте туда, куда изначально при установке требует установить права доступа на запись или в папку tmp Не работает и все тут. ну так пример возьмите тот, что написал выше. там работает и доделайте уже все остальное, что нужно под себя Подскажите есть ли смысл использовать функцию os_get_languages() вне админки или лучше использовать $_SESSION['languages_id'] ? ? без разницы Ок. Подскажите ещё плиз в каких случаях это условие может не выполняться НИкак не вкурю! Так и не получилось загружать картинки вне админки. Проблемма в том, что условие ) ) - не выполняется Условие НУЖНО, так как это проверка загрузку файла. Если оно не выполняется, значит, загрузки нет. И дальше говорить не о чем. А вообще, скорее всего, проблема у Вас в том, что хотите получить СЛОЖНЫЙ функционал простыми методами, только копированием кода. А надо бы понимать и контролировать все действия кода. И исправлять именно там, где не идет. А наугад убирать-добавлять строки - это к успеху приводит обычно только в простых ситуациях. Не хорошего вы обо мне мнения... :D И хотя я только начал изучать html, php и smarty, но мои знания в 3-х других языках, мне помогают. Ничего тут сложного нет. СЛОЖНЫЙ функционал улыбнуло.. :) Не хорошего вы обо мне мнения... Вы ж просили разъяснение... А вообще, если что-то не идет как надо, то проверять работу полезно с самого начала. В Вашем случае надо для начала проверить, каково значение переменной $_FILES['filename']['tmp_name']. Если оно, например, пустое, то все дальнейшее смысл теряет. По порядку надо идти. А Вы опять придумываете разные 'может быть'... Согласен. А почему значение данной переменной может быть пустым? Согласен. А почему значение данной переменной может быть пустым? Опять пустой вопрос. Времени прошло много, а Вы так и не выяснили, какое у Вас там значение реально! з.ы. кстати давно хотел спросить какой дебагер можно поюзать, чтобы можно было рантайм смотреть значения переменных? НЕ слышал про такой. Жалко. Наверное таких нет. Ладно тогда значит дедовские методы - трейсинг что-ли? Вообще что посоветуете для мониторинга значения переменных? Опять пустой вопрос. Времени прошло много, а Вы так и не выяснили, какое у Вас там значение реально! Я этим вопросом в общей сложности занимался может пару-тройку часов. А вообще уже кучу всего повыносил из админки, то что мне было нужно. Однако я таки не понимаю почему код который отлично работает из админки для загрузки картинок производителей, не работает в create_acount.php. Там делов то, нарисовали поле для выбора файла: os_draw_file_field('manufacturers_image'); Потом засабмитили форму: os_draw_form('manufacturers', FILENAME_MANUFACTURERS, 'action=insert', 'post', 'enctype="multipart/form-data"'); И по кейсу для экшина insert подгрузили файл и записали путь к нему в БД: $dir_manufacturers=dir_path('images')."/manufacturers"; if ($manufacturers_image = &os_try_upload('manufacturers_image', $dir_manufacturers)) { os_db_query("update " . TABLE_MANUFACTURERS . " set manufacturers_image ='manufacturers/".$manufacturers_image->filename . "' where manufacturers_id = '" . os_db_input($manufacturers_id) . "'"); } Ума не приложу что тут может не работать. Следить за переменными можно функциями ECHO, PRINT_R. Лучше особо ничего не придумано. |
|