Сейчас на форуме: tyns777 (+5 невидимых)

 eXeL@B —› Программирование —› cgi на с++ или perl(нужна мини-прога)
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 15 августа 2007 17:42
· Личное сообщение · #1

есть задание

"Палиндром - это симметричная строка, т. е. она одинаково пишется
как слева направо, так и справа налево. Вы должны написать программу,
которая по заданной строке определяет минимальное количество символов,
которые необходимо вставить в строку для образования палиндрома.
Например, вставкой двух символов строка "Ab3bd" может быть
преобразована в палиндром ("dAb3bAd" или "Adb3bdA"), а вставкой менее
двух символов палиндром в этом примере получить нельзя.
Строка: Ab3bd
Вставить: 2"

кто сможет напишите плиз на с++ код получения параметра программой(допустим назовем параметр name) сам алгоритм для палиндрома я сделаю сам... или нужна эта же прога но на perl, но тогда нужно полную прогу, включая алгоритм, так как я никогда не программировал на перле.. может кому-то будет полезно попрограмммировать cgi, вспомнит старые навыки ;) помогите пожалусто!




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 18 августа 2007 16:07
· Личное сообщение · #2

Это делается через параметры int main (int argc, char* argv) - что-то такое

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 18 августа 2007 17:12
· Личное сообщение · #3

andruja пишет:
Вы должны написать программу

Не мы а вы В сети есть уроки по cgi для с++ ищи. Или можешь подождать до понедельника я ссылки выложу.



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 августа 2007 17:30
· Личное сообщение · #4

В World C++ есть статьи по программированию сценариев на С++ смотри.

andruja пишет:
вспомнит старые навыки

самому не смешно? это как попросить "хелло ворлд" написать



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 18 августа 2007 19:16
· Личное сообщение · #5

andruja пишет:
вспомнит старые навыки

Угу. Я в следующий раз шефу своему предложу самому прогу писать, пусть вспоминает




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 18 августа 2007 22:05
· Личное сообщение · #6

#include <windows.h>
#include <iostream>
using namespace std;

int main()
{
char szName[1024];
cout<<"Content-Type: text/html\n\n";
cout<<"<HTML><HEAD><TITLE>Lazy_elf</TITLE></HEAD>\n";
cout<<"<body bgcolor='black' text='#F2F2F2' link='#FF9900' vlink='#FF9900' alink='#FF9900'>\n";
cout<<"<meta http-equiv='content-type' content='text/html; charset=utf-8'>\n";
cout<<"<p style='line-height:100%; margin-left:10%;' align='center'><span style='font-size:14pt;'>Cgi-ñêðèïò íà Ñ++.</span></p>\n";
cout<<"<p style='line-height:100%; margin-left:10%;'><a href=http://www.pagel.by.ru>www.pagel.by.ru</a> Code by Lazy_elf</p>\n";
char comment[256];
if(GetEnvironmentVariable("QUERY_STRING",comment,256))
{cout<<"<p style='line-height:100%; margin-left:10%;'>Âû ââåëè: "<<comment<<"</p>\n";}
////////////////////////////////////////////////////////////////////// //////////////////////////////////
cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#FF9933'>Äàííûå î êëèåíòå:</font></p>\n";
if(GetEnvironmentVariable("HTTP_USER_AGENT",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>HTTP_USER_AGENT: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("HTTP_ACCEPT",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>HTTP_ACCEPT: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("HTTP_REFERER",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>HTTP_REFERER: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("HTTP_ACCEPT_ENCODING",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>HTTP_ACCEPT_ENCODING: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("HTTP_ACCEPT_LANGUAGE",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>HTTP_ACCEPT_LANGUAGE: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("HTTP_IF_MODIFIED_SINCE",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>HTTP_IF_MODIFIED_SINCE: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("HTTP_FROM",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>HTTP_FROM: </font>"<<szName<<"</p>\n";}
////////////////////////////////////////////////////////////////////// //////////////////////////////////
szName[0] = '\0';
cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#FF9933'>Äàííûå î ñåðâåðå:</font></p>\n";
if(GetEnvironmentVariable("GATEWAY_INTERFACE",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>GATEWAY_INTERFACE: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("SERVER_NAME",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>SERVER_NAME: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("SERVER_PORT",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>SERVER_PORT: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("SERVER_PROTOCOL",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>SERVER_PROTOCOL: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("SERVER_SOFTWARE",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>SERVER_SOFTWARE: </font>"<<szName<<"</p>\n";}
////////////////////////////////////////////////////////////////////// //////////////////////////////////
szName[0] = '\0';
cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#FF9933'>Äàííûå î çàïðîñå:</font></p>\n";
if(GetEnvironmentVariable("AUTH_TYPE",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>AUTH_TYPE: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("CONTENT_FILE",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>CONTENT_FILE: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("CONTENT_LENGTH",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>CONTENT_LENGTH: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("CONTENT_TYPE",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>CONTENT_TYPE: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("PATH_INFO",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>PATH_INFO: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("PATH_TRANSLATED",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>PATH_TRANSLATED: </font>"<<szName<<"</p>\n";}
//õì...
if(GetEnvironmentVariable("REMOTE_ADDR",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>REMOTE_ADDR: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("REMOTE_HOST",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>REMOTE_HOST: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("REQUEST_METHOD",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>REQUEST_METHOD: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("REQUEST_LINE",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>REQUEST_LINE: </font>"<<szName<<"</p>\n";}
if(GetEnvironmentVariable("SCRIPT_NAME",szName,1024))
{cout<<"<p style='line-height:100%; margin-left:10%;' align='left'><font color='#00C800'>SCRIPT_NAME: </font>"<<szName<<"</p>\n";}
cout<<"</BODY></HTML>\n";
return 0;
}


На блин. сбоянил с World C++.
Аттачем не получилось.

-----
Researcher




Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 01:25
· Личное сообщение · #7

пытался откомпилировать код overwriterа но находит 4 ошибки в этих строках:

1) #include <iostream>
Unable to open include file 'iostream'

2) using namespace std;
Declaration Syntax error

3) cout<<"Content-Type: text/html\n\n";
Undefined Symbol 'cout'

4) if(GetEnvironmentVariable("QUERY_STRING",comment,256))
function 'GetEnvironmentVariable' should have a prototype

кароче я так подумал что ошибка может быть в этом :
#include <iostream>
и дописал к файлу .h так:
#include <iostream.h>

но 2 ошибки все-равно остались - 2) и 4) из вышеперечисленных. Так что снова help.

ЗЫ: ваще ктонить из тех кто тему читает пробегитесь хотя бы бегом по строчкам этого кода который выложил overwriter, я сначала даж боялся его компилить так как есть сомнения что надо мной не прикалываются;) , так как вызывают подозрения слишком уж большой размер вроде бы не очень сложного кода, странный URL (http://www.pagel.by.ru>www.pagel.by.ru) внутри кода и обращение к windows.h (гыгы поди код ченить с виндой делает или отправляет ченить на тот URL;) ).

Угу а еще такой вопрос: если код действительно верный (правда пока с ошибками), то что он делает: только принимает параметр, или еще и находит решение задачи с палиндромом, или делает еще че-то другое??

FillEX пишет:
В World C++ есть статьи по программированию сценариев на С++ смотри

а что такое WORLD C++?? это типа сайт какойто или че? просто я можно сказать относительно недавно к инету подсоединился, да и руки до этого времени еще не доходили полазать по полезным сайтам ;)

FillEX пишет:
самому не смешно? это как попросить "хелло ворлд" написать

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

asd пишет:
Не мы а вы В сети есть уроки по cgi для с++ ищи. Или можешь подождать до понедельника я ссылки выложу.

угу выложи, если там все кратко и понятно, а то рабираться времени не будет с 50 тоннами писанины.

кстати вот нашел ссылку
fort.stup.ac.ru/wmaster/books/magazine/pcmag/9707/079726.htm

там по ссылке есть небольшой код cgi проги, правда он использует базу даных(по названию кухни ищет ресторан) что мне не надо, вот кусок кода оттуда:

/* Получаем строку запроса QUERY_STRING */
pQuery = getenv("QUERY_STRING");

/* Выделяем первую часть пары имя=значение */
if (pQuery = strchr(pQuery, '='))
pQuery++;

/* Получаем тип требующегося ресторана */
GetRestaurant (pQuery);

всем наверно понятно что делает этот маленький кусочег, но есть вопрос по вот этому:

/* Выделяем первую часть пары имя=значение */
if (pQuery = strchr(pQuery, '='))
pQuery++;

как написано там на сайте, с помощью этого кода мы отделяем значение переменной от ее имени, хотелось бы понять(это значит что мне надо объяснить!) как работает этот кусок (что в нем значит strchr(pQuery, '='), так же не понятно как мы к переменной pQuery, которая у нас содержит текст(название кухни), прибавляем единицу(так как pQuery++ это pQuery=pQuery+1 как я понимаю). Ну вобщем даже не понимаю как это работает можно догадаться, что в итоге после этих всех действий получаем pQuery равную значению переменной QUERY_STRING без ее имени. Мне это нужно узнать, так как мне надо не только отделить значение переменной QUERY_STRING в одну переменную моего сиджеая, но и вписать каждый символ значения QUERY_STRING в разные переменные(так как задача то про палиндром). Как нужно изменить этот код, чтобы он подошел для моей задачи??



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 20 августа 2007 06:42
· Личное сообщение · #8

andruja
Обещаная ссылка www.inattack.ru/article/7.html#6

andruja пишет:
а что такое WORLD C++??

А в гугл не судьба сходить?

andruja пишет:
что в нем значит strchr(pQuery, '='

А MSDN поюзать как я понимаю опять же религия мешает

Я так понимаю, что си ты вообще не знаешь. А без этого и с такими замашками
andruja пишет:
если там все кратко и понятно, а то рабираться времени не будет с 50 тоннами писанины.
тебе прямая дорога искать студента программера, которому нужны деньги.



Ранг: 49.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 10:07
· Личное сообщение · #9

andruja, вообще то код, который предложил overwriter, будет компилироваться только на Visual Studio 2003 и выше (либо компилятором, который нормално поддерживает стандарт C++).
А вообще, asd прав - ищи кого нибудь, кто хоть как умеет на C++ писать. Твоих знаний не факт, что на "Hello, world" хватит.



Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 11:33
· Личное сообщение · #10

знаю я с++ тока немнога но алгоримтм закодировать я смогу, мне ТОЛЬКО код приема строки нужен и ВСЕ(и комменты по поводу что в какую переменную принялось, чтобы дальше с переменными работать в алгоритме). кстати подскажите какой можно придумать алгоритм для этой задачи, я пока нашел только корявый алгоритм (сильно зацикленный), который будет тем дольше работать, чем больше кол-во символов входной строки и чем они будут менее повторяемые(всмысле очень долго наверно будет работать, так что нужен алгоритм попроще и побыстрее)



Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 11:42
· Личное сообщение · #11

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



Ранг: 49.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 12:44
· Личное сообщение · #12

Замени GetEnvironmentVariable на getenv - первая это WinAPI функция, вторая из stdlib.h, т.е. не зависит от системы. У них разный формат, посмотри в MSDN.
Тебе нужна только getenv("QUERY_STRING"); - здесь находятся параметры, которые передавались в строке URL. Парсишь её и вытаскиваешь нужные данные.




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 20 августа 2007 12:53
· Личное сообщение · #13

Блин чел не морозь) прочитай в World C++ , короче в форме такие инпуты ставишь szName, comment//
То, что передается в скрипт получаем при помощи вызова GetEnvironmentVariable("CONTENT_TYPE",szName,1024); вотъ что еще не понятно?..

-----
Researcher




Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 13:23
· Личное сообщение · #14

andruja
Готовая реализация (delphi):

8468_20.08.2007_CRACKLAB.rU.tgz - Project1.zip



Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 14:27
· Личное сообщение · #15

Pro100ya
это готовая реализация уже всей проги полностью вместе с алгоритмом?? ты сам делал?? что сейчас делать с этим файлом, всмысле просто слить на сервак в cgi-bin и он будет работать?? с экзешником с++ вроде бы надо было бы чтото настраивать на сервере, так как с++ это компилируемый язык а не интерпретируемый, а с делфи что нить нужно настроить или достаточно просто слить?? еще какие там переменные использованы, всмысле какую переменную писать в веб-форму, или это не важно??



Ранг: 49.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 14:47
· Личное сообщение · #16

andruja, судя по всему, это готовая реализация алгоритма, а не CGI.



Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 14:58
· Личное сообщение · #17

а как теперь сделать из него cgi??
когда мне другой cgi сделали на перле у файла было расширение cgi, а чтобы запускался сишный (или дельфовский) cgi я думал достаточно залить екзешник на сервак(и чтото прописать в настройках сервака).
или нужен еще какойто софт чтобы както преобразовать екзешник в cgi??




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 20 августа 2007 15:14
· Личное сообщение · #18

andruja, ничо не нада прописвать( компилишь файло, линкуешь. меняешь у получившегося екзешника расширение на cgi льешь cgi-bin все1

-----
Researcher




Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 15:41
· Личное сообщение · #19

andruja
Сорри, это готовый алго, но слова надо вводить вручную. Оригинальный исходник эдесь: kitnet.s42.asu.ru/www/olimp/asm/z3/z3.htm



Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 16:44
· Личное сообщение · #20

Pro100ya пишет:
Сорри, это готовый алго, но слова надо вводить вручную.

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



Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 16:48
· Личное сообщение · #21

вот это будет моя форма на странице

<html>
<title>палиндромчег</title>
<head>форма для ввода любой строки</head>
<form action="адрес сервака/cgi-bin" method=GET>
Введите любую строку:
<input type=text maxlength=10 name=stroka>
<p><input type=submit value=Send>
</form>
</html>

все намана написано или не буит работать??



Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 18:49
· Личное сообщение · #22

Пробуй, надеюсь у тя есть на чем тестить.
Форма:
<HTML>
<HEAD>
<TITLE>палиндромчег</TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="адрес сервака/cgi-bin/Project1.cgi">
Введите любую строку:
<input type=text maxlength=10 name=stroka>
<p><input type=submit value=Send></FORM>
</BODY>
</HTML>

3403_20.08.2007_CRACKLAB.rU.tgz - Project1.cgi



Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 20:55
· Личное сообщение · #23

блин зарегился щас на убогом хостинге www.wallst.ru всунул в паблик-нтмл файл index.html с формой и етот убожеский сервак сразу же меня и забанил(при попытке открыть crevedko.wallst.ru/ (это мой сайт) пишет сразу Forbidden и перенаправляет на рекламную страницу). ктонить может подсказать какойнить нормальный бесплатный хостинг поддерживающий cgi, чтобы заценить всю мощь етого сиждеая?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 августа 2007 20:59
· Личное сообщение · #24

andruja
Если только заценить, то localhost?



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 20 августа 2007 21:19
· Личное сообщение · #25

andruja
Как скозал Арчи, повесь себе на локалхост апач с перлом и тесть сколь угодно.

-----
xchg dword [eax], eax




Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 22:03
· Личное сообщение · #26

дык мне не ж себе было бы мне нада делал бы сам, ето преподу все гыгы, а домой я его к се не позову



Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 22:06
· Личное сообщение · #27

попробуйте зайти на страницу crevedko.wallst.ru/ что у вас напишет(у меня пишет какаятто ошибка номер ### forbidden) , я эту страницу с формой нормально слил в public_html и назвал index.html ну как и положено но видима хостинг сраный тока в целях спама запустили




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 20 августа 2007 22:12
· Личное сообщение · #28

Те сказали тесть на локалхосте.. поставь денвер, раз ты не можешь апач настроить

-----
Researcher




Ранг: 43.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 августа 2007 22:37
· Личное сообщение · #29

на narod.ru моя страница стала отображаться сразу же как тока я ее туда залил(там все пашет), тока скриптов там нету




Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 20 августа 2007 23:26
· Личное сообщение · #30

andruja пишет:
ктонить может подсказать какойнить нормальный бесплатный хостинг поддерживающий cgi, чтобы заценить всю мощь етого сиждеая?

_ttp://www.webservis.ru/

-----
программистом не рождаются - им умирают



. 1 . 2 . >>
 eXeL@B —› Программирование —› cgi на с++ или perl(нужна мини-прога)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати