Qui programme ses CGI en C/C++ ?

Qui programme ses CGI en C/C++ ? - Programmation

Marsh Posté le 01-09-2001 à 18:56:53    

heu,
 
je me sens vachement seul, y a personne d'autre ?

Reply

Marsh Posté le 01-09-2001 à 18:56:53   

Reply

Marsh Posté le 01-09-2001 à 20:32:47    

Barb, faut se mettre au goût du jour: ASP, PHP, JSP, servlet, ...
:lol:

Reply

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 ?

Reply

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  :benetton:

Reply

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.

Reply

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 :D

Reply

Marsh Posté le 02-09-2001 à 12:08:11    

1500-2000 c'est abordable pour toi?

Reply

Marsh Posté le 02-09-2001 à 13:22:07    

heu,
 
elle est pour moi la qeustion , si oui 1500/2000 quoi ?

Reply

Marsh Posté le 02-09-2001 à 20:43:51    

francs

Reply

Marsh Posté le 02-09-2001 à 21:32:08    

abordable ? pas en ce moment :D je vais voir ce que je peux faire avec mon apache local ...

Reply

Marsh Posté le 02-09-2001 à 21:32:08   

Reply

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 :))

Reply

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 ?" :)

Reply

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]

Reply

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]

Reply

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]

Reply

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 ?!

Reply

Marsh Posté le 06-09-2001 à 00:35:45    

nonon,
 
les balises [pre] c'est pour le forum ici :D 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]

Reply

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.

Reply

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?!

Reply

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 !

Reply

Marsh Posté le 06-09-2001 à 01:01:01    

Qui programme ses CGI en C/C++ ?  
 
Pas moi  :lol:

Reply

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

Reply

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 ???

Reply

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 :D). 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]

Reply

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:)

Reply

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
}

Reply

Marsh Posté le 06-09-2001 à 02:03:19    

héhé merci bien :)  
c ets pas le genre de procedure sympathique a faire :)

Reply

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 :D
 
 
amuses-toi bien.

Reply

Marsh Posté le 06-09-2001 à 02:54:37    

ohlala,
 
je dois te dire merci :D 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 :D, vivement demain que j'essaie ça

Reply

Marsh Posté le 06-09-2001 à 10:42:34    

de rien lol :d
 ps: y a t il moyen de tester ses pages en local ?! sous win ou linux ?!

Reply

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]

Reply

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. :D


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le 06-09-2001 à 12:28:16    

arf, je suppose que les produits microsoft sont hors de prix ?!

Reply

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.

Reply

Marsh Posté le 06-09-2001 à 12:40:33    

oui c est vrai :) PWS qu ils l appellent :)

Reply

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 :D). 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.

Reply

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 ??

Reply

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 ;)

Reply

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 ?

Reply

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]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed