[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с подключением внешних библиотек к cgi
ulcigor
Всем привет!
Возникла проблема с подключением внешних библиотек к cgi сценарию. Т.е. css, внешние img файлы, и тому подобное.
Уже составил несколько классов, и dll. И бросить всё жалко. Помогите!!! Пожалуйста.

Вот элементарный пример. Просто для удобства понимания
Код

#include <stdio.h>

int main( int argc, char *argv[] )
{
 printf( "Content-Type: text/html\n\n" );
 printf( "<html><head>" );
 printf( "<link rel = 'stylesheet' type = 'text/css' href = 'style.css'>" );
 printf( "</head><body>" );
 printf( "<img stc = 'myimg.gif'>" );
 printf( "</body></html>" );

 return 0;
}


Разумеется, это колько шаблон, конечно писать постоянно printf никто не будет, просто так нагляднее.
Суть состоит в том, что строки
Код
printf( "<link rel = 'stylesheet' type = 'text/css' href = 'style.css'>" );
Код
printf( "<img stc = 'myimg.gif'>" );

не понимаются браузером. Они выводятся, всё как положено, но не воспринимаются. Интересно ещё то, что если сохранить сгенериную страницу, т.е сделать её статической, всй тут же выводится и понимается. Вот такая ситуация



Спустя 8 минут, 39 секунд (8.05.2009 - 15:29) vasa_c написал(а):
Content-Type: 'text/html\n\n'
зачем здесь одинарные кавычки?

Спустя 12 минут, 47 секунд (8.05.2009 - 15:42) ulcigor написал(а):
Это code convention Так привык. Можно и без них... .

Спустя 30 минут, 1 секунда (8.05.2009 - 16:12) ulcigor написал(а):
Да, чуть не забыл, компилятор, роли не играет. На разнх компилерах тестил. Результат один... .

Спустя 1 час, 37 минут, 12 секунд (8.05.2009 - 17:49) vasa_c написал(а):
Что выдаёт сценарий просто в консоль?
Что доходит до браузера ("исходный html-код страницы")?
Что выводит браузер?

У img нет атрибута stc

Спустя 2 часа, 22 минуты, 54 секунды (8.05.2009 - 20:12) ulcigor написал(а):
А зачем в консоль то выводить. Тут подтекст и так понятен... .
До браюзера доходит вся сраница, со всеми тегами, но рисунок не отображается.
Опять же в браузер выходит всё, кроме внешних библиотек.
И в img это опечатка.

Спустя 20 минут, 16 секунд (8.05.2009 - 20:32) vasa_c написал(а):
Цитата
А зачем в консоль то выводить. Тут подтекст и так понятен...

Подтекст понятен, всё понятно, всё доходит, со всем чем надо. Только вот ничего не работает и вы вопросы задаёте.

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

Что вы подразумеваете под "внешними библиотеками"?

Спустя 1 час, 11 минут, 36 секунд (8.05.2009 - 21:44) ulcigor написал(а):
Нет, вы совсем не поняли. Дело в том, что да, html код страницы формируется правильно, это доказывается тем, что когда сохраяю сам сгенериный код, все библиотеки подгружаются, но из самой программы нет.
Т. е фактически, без проблем с текстом. Сколько надо столько выведет. Связь с базой данных есть, есть вормирование таблиц и всё такое. Нет только динамической подгрузки css и img. Ведь ерунда какаято, что то гдето упустил и всё... . :-) Найти не получается... .

Спустя 1 час, 32 минуты, 42 секунды (8.05.2009 - 23:17) sergeiss написал(а):
Подожди, "не гони лошадей" smile.gif Я не работал с cgi, но давай посмотрим вместе с точки зрения здравого смысла, и основываясь на базовых представлениях. На самом деле я в итоге повторю практически всё, что было уже сказано, но только чуть более подробно.

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

Во-вторых. Когда ты сохраняешь файл и потом вызываешь его, то у него есть определенное место в иерархии сайта, и поэтому пути к (в частности) картинкам понятны. Тебе уже об этом говорили в этой теме.
Значит, остается предположить, что cgi-сценарий создает скрипт в таком каталоге, откуда пути к искомым ресурсам выглядят не так, как ты это себе представляешь. Например, не "<img src = 'myimg.gif'>", а "<img src = 'cgi/pict/myimg.gif'>" или еще как-то. И обрати внимание (тебе об этом тоже говорили), что тут нету "stc=..."!!! Может быть, конечно, что это просто опечатка при выводе в форум...
Вот и попробуй ответить сам себе: где пишется твой скрипт, в каком месте (каталоге)? И относительно этого места прописывай пути к стилям, картинкам и т.д.

Спустя 2 часа, 34 минуты, 26 секунд (9.05.2009 - 01:51) ulcigor написал(а):
:-) Ура, разобрался.
Кстати, вы были правы. Действительно он требовал путь к файлу. Вообще, по идее, программа ищет используемый ею файл, в библиотеках, обозначеных как path, то есть и в той же директории, в которой он сам располагается. А в этом случае, пришлось прописывать полный путь. Вот интересно... . :-)
Вобщем вот приблизительная особенность с которой столкнулся, если конечно интересно.

Первоначально следует определить path, ту директорию, в которую залит скрипт, делается это просто: char* getenv( "DOCUMENT_ROOT" );
И тут первый подводный камень, компилер, выдаст ошибку, связанную с нулевым указателем на облать памяти, так как при запуске *.exe происходит обращение к функции getenv(); которая естественно ничего не вернёт, т.е. вернёт NULL. Хотя прога скомпилится.... . Вобщем берём эту прогу и ложим в директорию cgi? запускаем из браузера, и вуаля, всё работает... .:-)
Вобщем спасибо ещё раз всем, что подкинули мыслишек... .
И с праздником всех... .
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.