Qui programme ses CGI en C/C++ ? - Programmation
Marsh Posté le 01-09-2001 à 20:32:47
Barb, faut se mettre au goût du jour: ASP, PHP, JSP, servlet, ...
Marsh Posté le 01-09-2001 à 20:37:19
pas moi mais j'aimerais bien tester à l'occasion. tu connais un hébergeur pas cher qui accepte ça ?
Marsh Posté le 01-09-2001 à 20:37:59
moi je vias men servir dun en C.
moi je suis dans la classe : HTML / JavaScript / Flash / CGI
et non dans la classe ASP / PHP / JSP
tien ca ferais un bon sondage
Marsh Posté le 01-09-2001 à 23:41:29
moi aussi ça m'intéresse vu que les hébergeurs qui supporte les servlet sont pas légions.
Marsh Posté le 02-09-2001 à 01:11:26
verdoux,
fous toi de moi va . Sinon je reconnais qu'il y a 2 gros désavantages a faire du C sur une serveur d'hébergements.
1) Il faut telnet (de plus en plus difficle a trouver un telent a prix abordable)
2) on se fait bouffer tout le temps de calcul par les especes de language pseudo compilé/interprété. Mettez vous au C
Marsh Posté le 02-09-2001 à 13:22:07
heu,
elle est pour moi la qeustion , si oui 1500/2000 quoi ?
Marsh Posté le 02-09-2001 à 21:32:08
abordable ? pas en ce moment je vais voir ce que je peux faire avec mon apache local ...
Marsh Posté le 05-09-2001 à 21:24:40
je fais un up car ca m interesse !
je voudrais savoir comment on fait sur un serveur pour que ca accepte les cgi en C++, et aussi, si y a des hebergeur qui font ca )
Marsh Posté le 05-09-2001 à 21:34:03
Je profitte de ce post pour demander "Qu'est ce que c'est que le CGI ? Quels sont ses intérêtets ... ? Où trouver un site qui permet de découvrir ce language ?"
Marsh Posté le 05-09-2001 à 22:11:12
slvn,
Pour faire du C/C++ (c'est le même compilateur), il faut avant tout trouver un hébergeur qui propose le telnet (un accès console ou tu peux passer des commandes au serveur). Le seul sérieux a un pric abordable que j'ai trouver pour l'instant c'est europeanserveur.
En général ça sera du GCC. Il faut donc soit disposer d'une station linux, soit ecrire un C/C++ très standart pour eviter de ce prendre la tête avec le déboguage.
L'interet du C/C++ réside surtout dans la vitesse d'execution des script qui est bcp plus rapide que du php ou autre.
Pour CGI, de mémoire Common Gate Interface. C'est pas un language en soit, mais on regroupe sous ce vocable les les programme servant a générer des page intranet/internet. (corriger moi si je me trompe)
[edtdd]--Message édité par barbarella--[/edtdd]
Marsh Posté le 05-09-2001 à 22:46:10
pkoi telnet, ne peut on page "uploader" sur le serveur directement, ??
ps: pour faire un Cgi en C++, il suffit juste de faire un programme qui renvoie un document html ?!
ou alors, on utilise le C++ comme si c etait un script ?!
en fait je vois pas trop coment l utiliser, je connais le php, et ca me parait un peu different
[edtdd]--Message édité par slvn--[/edtdd]
Marsh Posté le 05-09-2001 à 23:43:56
Ben,
dans le cas ideal oui tu peux utiliser un logiciel de FTP. Mais ça implique que l'executable soit compatible avec la machine de ton hébergeur. Compiler sur un Pentium pour executer sur une SUN, bof. Le type de machine qu'utilse ton hébergeur n'est pas dans le contrat; S'il décide depasser du pentium au Mckinley et ne propose pas le telnet t'es bon pour rechercher un nouvel hébergeur.
tiens voila un petit prog en C. Il récupère un param mettre puis l'affiche
<pre>
int main(void)
{
char *data;
char lepeusod[25];
int erreur = 0;
data = getenv("QUERY_STRING" );
if(data == NULL)
{
erreur = 101;
}
else
{
if(sscanf(data,"Eudo=%s",lepseudo) != 1)
{
erreur = 102;
}
else
{
printf("%s%c%c\n","content-type:text/html;c
harset=iso-8859-1",13,10);
printf("%s\n",lepseudo);
}
}
if(erreur != 0)
{
printf("%s%c%c\n","content-type:text/html;charset=iso-8859-1",13,10);
printf("ERREUR" );
}
return(0);
}
</pre>
L'url doit rssembler a http://nom_du_site/nom_du_prog.cgi?Eudo=hello
[edtdd]--Message édité par Barbarella--[/edtdd]
Marsh Posté le 06-09-2001 à 00:03:33
oky exactement ce qeu je voulais savoir
[pre] [/pre] sont les balises equivalent a <? ?> du php ?!
mais alors comment peux compiler soi meme son programme s il doit etre inclus dans une page ?!
ou alors il faut que tout la pages soit du vrai C++ ?! mais dans ce cas pkoi mettre [PRE]
ps: il faut uploader qq choses de deja compiler a la diference du php ?!
PPS : si on doit utiliser en meme temps une base de donnée, peut on utiliser qq choses comme MysSql,etc. ou alors il faut tout stocker soit meme dans des fichiers, avec sa propre organisation ?!
Marsh Posté le 06-09-2001 à 00:35:45
nonon,
les balises [pre] c'est pour le forum ici rien avoir avec le prog lui-même (zont pas l'air de fonctioner d'ailleurs).
Bon il te faut un compilateur C/C++ comme Visual C++, Builder C++, Borland C++, GCC, Intel C++, etc ...
Il n'y pas besoin de librairies spéciales, c'est un simple prog C/C++; en fait tu envoies le texte de la page HTMl par les fonctions printf, ou fputs. Le serveur WEB (Apache ou IIS) se charge de récupérer ce que tu envoie par printf ou fputs pour l'envoyer ensuite sur le réseau.
Par contre effectivement il faut que tu ecrive toute la page en C/C++. A ma connaissance il n'existe pas de moyenne de mélanger les genres. Ou alors d'utilser des iframes, mais les netscape < 6.0 n'aiment pas ça.
[edtdd]--Message édité par Barbarella--[/edtdd]
Marsh Posté le 06-09-2001 à 00:38:57
Si tu veux utiliser une BD, il te faut dans ce cas une librairie spéciale qui te donnera un point d'entrée dans la base. Pour mysql, je ne sais pas si une telle lib existe. Personnelement j'ai fait ma propre BD, mais bon c'est différents concours de circonstance qui ont fait ça? Mais si j'avais pu choisir j'aurais préférer utiliser un truc tout fait avec une librairie.
Marsh Posté le 06-09-2001 à 00:47:08
oky desolé pour cette erreur un peu stupide
donc les cgi C++sont vraiment des programmes c cool tout ca
encore qqes petites questions rapides : pour la base de donnée, il faut la faire soit meme ?! en creant ses propre fichiers txt ?!) ou peut utiliser une base tout faite, avec ses propre methode?!
les cgi C++ sont ils vraiment les plus rapides que le php?!
Marsh Posté le 06-09-2001 à 00:47:57
oky merci
ca a surment ses avantages de creer sa base de donnée, mais ca pas doit etre tres simple !
Marsh Posté le 06-09-2001 à 01:02:24
oui,
créer une base fiable, suffisament performantes c'est délicat. Moi j'ai eu la chance de récupérer un projet que j'avais démarrer pour une boite qui a fermé. mais bon ça depend ce que tu veux faire.
Pour la rapidité oui c'est très supérieure, Tiens voila un CGI en C a l'oeuvre et que les PHPiste ne peuvent pas faire. La page dispose d'un analyseur de syntagmes (= association de plusieurs mots) temps réel. En fin de page t'as le temps en milisecondes.
http://www.onversity.com/cgi-bin/p [...] &P=N200104
Marsh Posté le 06-09-2001 à 01:17:55
bon je vais sans doute me mettre a ce type de Cgi
aurais tu un site où je pourrais me renseigner un peu plus ??
ps: question fatidique: quels sont les defaults ???
Marsh Posté le 06-09-2001 à 01:32:14
les défauts sont :
tu dois faire toi même un certains nombre de fonctions. en particulier la gestion des paramètres des formes POST et GET, mais il existe des lib pour ça sur le net. J'ai plus d'adresse en tete.
Une fonction de conversion des caractères spéciaux en code HTML (ça je peux te refiler la fonction que j'ai faites et qui carbure ). et surtout la sécurité.
Spécialement
- nombre de param passé au CGI
- Controle des caratère constituant l'url
- taille max de chaque param (pour eviter de mettre une info plus grande que ce que ta variable peu contenir)
- cohérence des param
- Faire très très attention a la fonction 'sendmail' que tu peux appeler a partir d'un CGI (si t'es sur un système unix/linux.
Sinon un dernier point avoir un compilateur performant pour produire un code rapide, du moins pour le script qui sera executer sur ton serveur.
En gros t'auras un certains travail de préparation, une boite a outils a te faire par exemple.
- ...
voila
[edtdd]--Message édité par Barbarella--[/edtdd]
Marsh Posté le 06-09-2001 à 01:46:29
bon c pas la mort non plus et si les performance sont au rendez vous ca peut etre interessant !
ps: je veux bien la fonctions dont tu me parles c tjrs utiles
merci beaucoup pour toutes tes precisions
Marsh Posté le 06-09-2001 à 02:00:41
et voila (c'est en C, mais pas compliqué a transcrire en C++)
#define CSPACE 64
// Variable globale
char *code_space[CSPACE] = {
"À",
"&Aecute;",
"Â",
"Ã",
"Ä",
"Å",
"Æ",
"Ç",
"È",
"É",
"Ê",
"Ë",
"Ì",
"Í",
"Î",
"Ï",
"",
"Ñ",
"Ò",
"Ó",
"Ô",
"Õ",
"Ö",
"",
"Ø",
"Ù",
"Ú",
"Û",
"Ü",
"Ý",
"",
"",
"à",
"á",
"â",
"ã",
"ä",
"å",
"æ",
"ç",
"è",
"é",
"ê",
"ë",
"ì",
"í",
"î",
"ï",
"",
"ñ",
"ò",
"ó",
"ô",
"õ",
"ö",
"",
"ø",
"ù",
"ú",
"û",
"ü",
"ý",
"",
"ÿ",
};
long code_spacel[CSPACE] = {
8,//"À",
8,//"&Aecute;",
7,//"Â",
8,//"Ã",
6,//"Ä",
7,//"Å",
7,//"Æ",
8,//"Ç",
8,//"È",
8,//"É",
7,//"Ê",
6,//"Ë",
8,//"Ì",
8,//"Í",
7,//"Î",
6,//"Ï",
0,//"",
8,//"Ñ",
8,//"Ò",
8,//"Ó",
7,//"Ô",
8,//"Õ",
6,//"Ö",
0,//"",
8,//"Ø",
8,//"Ù",
8,//"Ú",
7,//"Û",
6,//"Ü",
8,//"Ý",
0,//"",
0,//"",
8,//"à",
8,//"á",
7,//"â",
8,//"ã",
6,//"ä",
7,//"å",
7,//"æ",
8,//"ç",
8,//"è",
8,//"é",
7,//"ê",
6,//"ë",
8,//"ì",
8,//"í",
7,//"î",
6,//"ï",
0,//"",
8,//"ñ",
8,//"ò",
8,//"ó",
7,//"ô",
8,//"õ",
6,//"ö",
0,//"",
8,//"ø",
8,//"ù",
8,//"ú",
7,//"û",
6,//"ü",
8,//"ý",
0,//"",
6,//"ÿ",
};
// Fonction de conversion caratères speciaux en format HTML
void asci_html(char *src,char *dest)
{
unsigned int ch;
long i,j;
i = 0;
j = 0;
ch = (unsigned char) *(src+i);
while(ch != 0) // test sur eniter plus rapide que test sur char
{
if(ch < 192)
{
*(dest+j++) = *(src+i);
}
else
{
if(*(code_space[ch-192]) == '\0')
{
*(dest+j++) = *(src+i);
}
else
{
memcpy((dest+j),code_space[ch-192],code_spacel[ch-192]);
j += code_spacel[ch-192];
}
}
i++;
ch = (unsigned char) *(src+i);
}
*(dest + j) = '\0';
// sécurité de fin de chaine pas besoin d'init 'dest' avant
}
Marsh Posté le 06-09-2001 à 02:03:19
héhé merci bien
c ets pas le genre de procedure sympathique a faire
Marsh Posté le 06-09-2001 à 02:04:58
tiens,
il y a une amélioration que je n'ai pas testé, mais je la garderai pour moi
amuses-toi bien.
Marsh Posté le 06-09-2001 à 02:54:37
ohlala,
je dois te dire merci parcequ'en relisant cette fonction j'ai pensé a une modif et en fait cette modif peut s'appliquer aparement a un groupe de fonction de ma BD
Mais je ne touche pas a ma BD a 3 heure du mat , vivement demain que j'essaie ça
Marsh Posté le 06-09-2001 à 10:42:34
de rien lol
ps: y a t il moyen de tester ses pages en local ?! sous win ou linux ?!
Marsh Posté le 06-09-2001 à 11:27:54
oui,
Pour windows tu installes IIS ou le peer web server de microsoft et pour linux apache.
Si tu n'as pas de carte réseau il faut utiliser la carte virtuelle dite de bouclage. Elle a une adresse IP particulière 127.0.0.0
Bon la c'est plus vraiment de la prog, mais de l'installation d'un serveur web. Mais aucun problème pour l'installer en local sans besoin de connexion exterieur.
Lors de l'installe sous windows il te crée un repértoire 'script' dans lequel tu mets tes '.cgi'. Pour Linux c'est le répertoire 'cgi-bin'. Bon, l'installe te crée d'autres répertoires, mais pour les scripts c'est les plus importants.
[edtdd]--Message édité par Barbarella--[/edtdd]
Marsh Posté le 06-09-2001 à 11:42:10
gnark, gnark.
J'avais laisser tomber le post et ho bonheure toutes les reponse sont la et en plsu je suis chez europeanservers.
Marsh Posté le 06-09-2001 à 12:28:16
arf, je suppose que les produits microsoft sont hors de prix ?!
Marsh Posté le 06-09-2001 à 12:33:39
le peer web serveur est inclus dans W98/NT4 SP6. Je suppose qu'il l'est aussi dans win me et NT2000.
C'est au moment de l'installation de la partie réseau de ton système d'exploitation, tu as une option pour ajouter des services et tu dois voir 'Microsoft peer Web Servers' dans la liste.
Marsh Posté le 06-09-2001 à 16:19:54
Barbarella a écrit a écrit : les défauts sont : tu dois faire toi même un certains nombre de fonctions. en particulier la gestion des paramètres des formes POST et GET, mais il existe des lib pour ça sur le net. J'ai plus d'adresse en tete. Une fonction de conversion des caractères spéciaux en code HTML (ça je peux te refiler la fonction que j'ai faites et qui carbure ). et surtout la sécurité. Spécialement - nombre de param passé au CGI - Controle des caratère constituant l'url - taille max de chaque param (pour eviter de mettre une info plus grande que ce que ta variable peu contenir) - cohérence des param - Faire très très attention a la fonction 'sendmail' que tu peux appeler a partir d'un CGI (si t'es sur un système unix/linux. Sinon un dernier point avoir un compilateur performant pour produire un code rapide, du moins pour le script qui sera executer sur ton serveur. En gros t'auras un certains travail de préparation, une boite a outils a te faire par exemple. - ... voila |
autre défaut majeur et qui explique que ce n'est plus utilisé autre part que dans des sites persos, les CGIs ne supportent pas la charge.
Marsh Posté le 06-09-2001 à 16:30:59
BenDk97 a écrit a écrit : autre défaut majeur et qui explique que ce n'est plus utilisé autre part que dans des sites persos, les CGIs ne supportent pas la charge. |
"la charge", peut tu expliquer ce que c est?
ps: j ai pas reussis a installer le serveur personnel microsoft,
est ce que qq uun saurait ou je peut trouver IIS ??
Marsh Posté le 06-09-2001 à 16:46:31
slvn a écrit a écrit : "la charge", peut tu expliquer ce que c est? ps: j ai pas reussis a installer le serveur personnel microsoft, est ce que qq uun saurait ou je peut trouver IIS ?? |
pour un site commercial avec un trafique important, la montée en charge devient vite exponentielle (un processus par client et par cgi lancé) bref le serveur finit par ramer assez rapidement. On préfèrera les web complexes aux cgis
Marsh Posté le 06-09-2001 à 17:04:07
euh, l utilité d un cgi en C++ me paraissait justement la solution car c est le plus rapide
mais voila que tu me parles du "web complexe " qu est ce donc ?
Marsh Posté le 06-09-2001 à 17:15:08
humm,
pour la charge c'est vrai, mais faut monter a plusieurs centaines/milliers d'accès simultanées (dépend de la machine). Ensuite il y a des trucs de programmation. Mais a un moment ou a un autre il y a un prob, c'est ok.
Par contre les outils industriels sont sous certains aspects vraiment trop généralistes. Et dès que tu sors des sentiers battus au niveau algo t'as de gros risques de les faire mouliner un max, et dans ce cas ... retour a la case départ.
En gros au niveau pro si c'est pour faire de la prog classique, tu prends les outils fournis par le marché, sinon t'es bon pour les scripts C/C++.
[edtdd]--Message édité par Barbarella--[/edtdd]
Marsh Posté le 01-09-2001 à 18:56:53
heu,
je me sens vachement seul, y a personne d'autre ?