Абсолютные пути отдали Permission denied. Абсолютные пути, начинающиеся не с '//', а с 'http://' отдали что-то про "мы с такими не работаем". Вероятно, фигня вся в том, что после определенного количества частей в урле ломается отправная точка. Например:
Запрос example.doge/page - все пути стартуют с example.doge
Запрос example.doge/page/action - стартуют вроде как и с example.doge, но и с example.doge/page.
Запрос example.doge/page/action/do/valu e - пути стартуют с example.doge/page/action.
Когда я говорю "пути стартуют с", я имею в виду следующе: при запросе example.com/page/action/do/value, если к странице подключается, например, css (<link rel="stylesheet" href="css/styles.css">), то он будет искаться, как example.doge/page/action/css/sty les.css.
Вот такая вот фигня. И если с подключаемыми скриптами я решил проблему абсолютными путями, а с подключаемыми php решать и не приходилось (они как-то сами хорошо пляшут), то при работе с файловой системой какая-то фигня...
Здравствуйте, дорогие форумчане. После того, как прикрутил к сайту ЧПУ, в скрипте, который заливает картинки в папку, возникла проблема, которой раньше не было (до ЧПУ все работало исправно). А именно: copy() и GetImageSize() стали отдавать разные ошибки.
copy(): The second argument to copy() function cannot be a directory
GetImageSize(): failed to open stream: No such file or directory.
Это если пути выглядят 'images/heads/' и 'images/heads/'.$data['bgimage'] соответственно. Ошибки в переменной нет, я проверял. Сколько '../' к путям я не дописывал, ничего не менялось.
Если сделать пути абсолютными ('//'.$_SERVER['HTTP_HOST'].'/images/heads/'), то обе функции отдают 'failed to.open stream: Permission denied'.
Все идет в индекс. Индекс стартует сессию, реквайрит скрипт подключений к бд и скрипт роутера. Роутер парсит запрос и, если есть право доступа, реквайрит 'modules/нужныйСкрипт'.
Еще раз повторюсь: до перехода на ЧПУ все работало исправно. Адрес страницы выглядит так: example.doge/page. На нее же шлется пост-запрос. Enctype формы равен 'multipart/formdata'.
В [action].php из БД читаются данные строки с id=$parts[2], происходит магия, и все выводится.
В чем проблема:
Все файлы, которые включаются в php/head.php (css/*.css и js/*.js) почему-то ищутся в папке example.com/page/, КОТОРОЙ НЕТ! Почему-то require_once не выдает ошибок, а вот в консоли гуглхрома - 404:failed to load the source. И вместо вывода пустота.
Если адрес example.com/[page]/[action]/[id]/[subjectId]/[do], то файлы ищутся в папке example.com/[page]/[action]/[id]/
Все, что в квадратных скобках - скажем так, подстановочные значения.
$id=settype($id, integer);//На всякий случай. От дебилов
echo'$id = '.$id;//$id = 1
Зачем-то любое число преобразуется в единицу. Наверное просто потому, что число есть, возвращается true.
Я знаю, что есть еще варианты, вроде (integer) $id, intval($id) и даже костыльный $id = ($id + 1) - 1, но хочется понять, почему settype() не работает должным образом.
Спасибо за ответы. Сам я вообще не подозревал, как это сделать даже в фотошопе, теперь наклепал заготовки, под которые нужно будет подкладывать цвет.
Решение, правда, костыльное, т.к. результат "не такой, как на картинке", но пока сойдет. Потом буду думать, что с этим делать. Может художников найду, которые подскажут, что, да как...
Данный камушек - модификатор свечения. Он накладывает на предмет эффект декоративного свечения того цвета, которого он сам. Цвет можно менять "смешивая" модификаторы, как краски. Поэтому камушек может быть любого цвета.
Я пишу что-то вроде интернет-аукциона. В числе прочего там можно будет продавать и модификаторы свечения, т.к. некоторые оттенки довольно дорогие в получении, а следовательно, и в цене. Например, если игрок, имеющий 0 игровой валюты захочет купить Золотой МС, ему придется задонатить 1.500(!) российских рублей, получить от администрации за это 150.000 "монет", и продать кому-нибудь в игре эти "монеты" по актуальному курсу (сейчас - 1:20), получив 3.000.000 игровой валюты. Т.е. предмет дорогой, поэтому и представить его нужно красиво.
В моей системе аукционов игрок вводит цвет в системе RGB, и картинка лота отображается с камушком нужного цвета.
Т.е. если предмет не "пустой" (, а модифицирован игроком), то он в клиенте принимает цвет, который получил игрок (своеобразное смешение красок с получением новой, но с другим предметом). В итоге камушек в предмете может быть чуть ли не любого оттенка (на самом деле не правда, но не об этом ). В клиенте в таком случае картинка, что логично, собирается по слоям.
Все, что мне удалось выяснить - необходимо работать с цветовой моделью HSV (она же HSB). Так же я смог догадаться, что серая картинка камушка - готовый канал V, и мне нужно лищь наложить на него ещё S и H каналы, после чего поверх наложить ободок.
Сам я вообще не художник, поэтому понятия не имею, как это сделать даже в фотошопе. Зато я уже нашёл js-библиотеку конвертации цветов - tinycolor.js. Думаю, она подойдёт.
В общих чертах алгоритм такой: пользователь указывает RGB-цвет. Цвет конвертируется в HSV, V откидываем, т.к. в игре у предмета она всегда равна 100% (поэтому и не все цвета можно получить). Накладываем H и S на картинку с камушком, конвертируем всю картинку в RGB, накладываем ободок и выводим на экран. Не убивайте, если что-то глупое сморозил: не художник я
Подскажите, пожалуйста, как это можно реализовать? Желательно без canvas-а, т.к. он у некоторой части аудитории не поддерживается. В частности у меня.
Добрый вечер. Написал редактор шапок сайта. Суть в том, что админ может туда зайти и нстроить, какая картинка на какой странице будет отображаться в шапке, какой текст бутет поверх, и его ориентация (align valign). Там есть функция предпросмотра: админ хочет посмотреть, как новая картинка впишется в дизайн сайта.
Я пробовал пойти по принципу "Картинка присылается POST-ом" на сервер, сохраняется, дальше с ней проводятся необходимые операции, она отображается и удаляется с сервера. Но у меня возникла некоторая проблема: unlink($file) удаляла файл раньше, чем пользователю отсылался html.
Я пробовал просто поменять фон javascript-ом, но возникла другая прблема: td, фоном которого является картинка, имеет фиксированый размер, который определяет php с помощью getimagesize(). Т.е. при смене фона нужно узнать размер новой картинки. это я не умею javascript-ом. Интернеты что-то писали про img = new ...(), но та штука работает, только если картинка уже была отображена в браузере (т.е. уже кеширована).
Вариант с <img src>, вложенным в div не подходит, т.к. поверх картинки располагается заголовок h1, и придется повышать z-индекс, давать абсолютное позиционирование и прописывать координаты, а они никак не клеются с возможностью выбрать align и valign.
В общем, мне нужен либо js-скрипт, который посчитает размер картинки, либо php-скрипт, который удалит файл после того, как отошлет html клиенту.