cgi c/cpp

cgi c/cpp - Programmation

Marsh Posté le 29-09-2001 à 13:41:14    

Voila, mon pb, est de savoir comment utiliser les fonctions d envoie de mail.
 
ps : je cherche de la doc bien faite dur les cgi en C, donc si vous avez des URLS, informez moi.

Reply

Marsh Posté le 29-09-2001 à 13:41:14   

Reply

Marsh Posté le 29-09-2001 à 14:37:13    

humm,
 
je sens que tu vas encore avoir besoin de moi :D, t'as des sous :D:D

Reply

Marsh Posté le 29-09-2001 à 14:47:19    

question,
 
t'as le droit d'utilser sendmail avec ton hébergeur ? ou tu dois passer par un truc spécial sécurisé ...

Reply

Marsh Posté le 29-09-2001 à 14:55:52    

alala:) c toi le spécialiste du Cgi en C :)
 
en fiat, j ai pas d hebergeur encore, j essaye de m entrainer a fiare des ptitis trucs en local :) (PWS de microsoft, peut etre apache plus tard,)  
(en gros, j essaye remplacer tout ce que je faisait en php par des cgi en C :)// formulaire pour l instant, puis les commandes de base )
 
en fait, j'arrive pas a trouver des docs sur les cgi en C sans tomber sur du C "normal" ou bien du "perl"

Reply

Marsh Posté le 29-09-2001 à 15:07:05    

ben,
 
pour ma spécialité c'est normale je dois etre un des rares malades à être en train de développer un site complet en C, mais bon passons.
 
pour le mail sous windows je ne sais pas, donc en local je ne les gère pas. Par contre pour les hébergeurs je choisis toujours des qui ont un système unix/linux/... d'ailleurs pour faire du C c'est ce qu'il y a de plus facile a trouver avec gcc :)

 

[edtdd]--Message édité par Barbarella--[/edtdd]

Reply

Marsh Posté le 29-09-2001 à 15:17:16    

ok, bon c pas primordial de tte facon :)  
par contre, est ce que tu connais un endroit pour chopper des doc ?!
 
 
ps: si c pas indiscret, je peux voir a quoi ressemble ton site?!

Reply

Marsh Posté le 29-09-2001 à 15:42:55    

bon j'ai quelque liens,
 
mais j'ai du essentiellement me débrouiller seul pour tester énormément de choses.
 
il existe quelques doc sur le C CGI, et tu les trouveras sur google :
 
ex :
 
http://www.thinkage.on.ca/~mlvanbi [...] ecdef?html
 
http://www.geocities.com/SiliconVa [...] ailhd.html
 
 
pour mon site
 
http://www.onversity.com mais je te conseille de revenir dans 8 jours car je prépare une grosse mise a jour en particulier avec des forums et des sécurités renforcés quoiqu'encore insuffisante, mais le site ne sera ouvert officiellement qu'en septembre l'année prochaine

Reply

Marsh Posté le 29-09-2001 à 16:05:41    

ok merci :)
 
sympa ton site :), pas mal le coup de mettre un lien pour les mots figurant dnas le lexique! on voit tout l interet du C :)

Reply

Marsh Posté le 29-09-2001 à 16:17:21    

attends les forums et la mise a jour y en a qui vont tomber de leur chaise :D

Reply

Marsh Posté le 29-09-2001 à 16:33:10    

son tsi bien que ca les forums ?!  
tu utilises un base de donnée "sql", ou bien tu récris les pages dans des fichiers toi meme ?!

Reply

Marsh Posté le 29-09-2001 à 16:33:10   

Reply

Marsh Posté le 29-09-2001 à 17:09:16    

bah,
 
en présentation ça avancera au fur et a mesure, mais c'est vraiment pas mon trip alors je fais des chose simples et claires a lire.
 
sinon voila un lien de scrennshot
 
http://www.onversity.com/load/for-exemple.png
 
l'analyseur de syntagme fonctionne aussi dans les forums (c'est du tps réel). Tu peux voir aussi la nouvelle présentation de la petit fenetre dynamique des dénitions. un syntagme est un assemblage de mot; le mien gère de 1 a 3 mots et les apostrophes.  
 
 
Pour la base, malheureusement ou heureusement ça depend comment on voit la chose ;) j'ai du dev mon propre moteur, la chance que j'ai eu c'est de pouvoir récupérer les travaux que j'avais sur la création d'un moteur de base de données documentaires plus adaptées au traitement complexe/lourd des textes dans une de mes anciennes boites il y a 10 ans.
 
Mais ça m'a couté bcp de temps et je conseille a toute personne d'utiliser de pref un moteur deja existant ou un sgbd a moins d'avoir un projet spécial en tête.

Reply

Marsh Posté le 29-09-2001 à 17:32:34    

ca peu etre plus amusant de faire sa propre base :) (enfin je trouve)
 
par contre le coup de l analyse dynamique, (ce que d ailleurs tu utilise pour les mots  en bleu dnas tes textes, il me semble), c est un peu bourrin non ?!  si a chaque page qu un utilisateur appelle, le programme est obligé de regarder tout les mots un par un, ca peu le surcharger ?!

Reply

Marsh Posté le 29-09-2001 à 17:48:23    

pour un forum blabla oui,
 
par sur un site de formation, l'aggrément d'utilisation et l'utilité pédagogique est énorme. Pour le tps je suis a 500000/1000000 de syntagme (soit en moyenne 3 millions de mots)par seconde sur P3 1GHz.
 
en fait mes pages s'affichent aussi vite en moyenne que celle de ce forum avec l'analyseur syntaxique activé ;)
 
Dans la version 4 de la base de données, ça va encore accélérer

Reply

Marsh Posté le 29-09-2001 à 19:03:35    

il trace le p3 quand meme :)  
 
c est clair que le temps danalyse de la page doit etre carement negligeable devant son telechargement.

Reply

Marsh Posté le 29-09-2001 à 19:26:23    

effectivement,
 
on parle du temps d'analyse du texte. l'accès disque en est une autre. La le cache a une importance énorme. les grosse diff entre la version 2 et 3 a été le début l'intégration d'une gestion cache interne la 4 sera une généralisation.

Reply

Marsh Posté le 29-09-2001 à 19:34:31    

mais quand meme, c etait pas mieux, d analyser le texte, puis de le sauvegarder, au lieu de l analyser a chaque fois ?!

Reply

Marsh Posté le 29-09-2001 à 20:04:37    

avec des algo tradi oui,
 
mais pas avec la BD documentaire du site. tout est dynamique. En particulier l'algo n'est pas statique mais dynamique, ça réaction varie en fonction de plusieur éléments. La je ne peux pas expliqué plus sans commencer a révéler certaine des astuces de l'algo.
 
D'ailleur si tu regardes bien (c'est pas vraiment flagrant), mais les syntagmes analysés ne correspondent pas forcément a des définition du dictionnaires.
 
Sinon comme tout le site (chaque page) dispose de l'analyseur d'analyseur en modifant ou ajoutant une définition il faudrait que je modife toutes les pages précaculeés :( hummm pas très réaliste.
 
La souplesse impose une analyse tps réel. Seule l'absence d'un algo rapide peut imposer un système de page précalculé, or je dispose d'un algo rapide :)

Reply

Marsh Posté le 29-09-2001 à 20:15:16    

ouias :) je me trompe surment car les pages de ton site sont rapidement chargée !
 
moi je pensais qu il etait plus simple de faire un fonction pour analyser, et cette fonction tu la lancerais pour mettre a jour les pages, a chque fois qu un nouveau mot du lexique serait inclus par ex.

Reply

Marsh Posté le 29-09-2001 à 22:42:42    

non,non,
 
ton idée n'est pas mauvaise, mais ça impose plus de contraite avec ce que je veux faire. mais bon tu verras au fur et a mesure de l'évolution :)

Reply

Marsh Posté le 30-09-2001 à 14:05:53    

au fait, tu m avais conseillé de faire attention au entrée pour mes cgi.  
y a t il des manips connues que des gens mal intentionnés pratiquerait pour faire planter les cgi ?!

Reply

Marsh Posté le 30-09-2001 à 14:38:47    

oui,
 
1 - saturation buffer
sol : tester la longeur de la chaine dans le buffer
 
2 - saturation taille des param.  
sol : tester la longueur de chaque var séparé par un '&' (je te donnerais mon prog pour ça
 
3 - cartère non autorisé pour lancer une commande système.
sol : filtrage plusieurs niveaux
a - les caratères de controles (< 32) (sauf 0 13 10, non-exhaustif)
b - controler les types  
c - controler caratère dangeruex comme '~'
 
4 - cohérence base de données (lecture puis ecriture)
sol lecture : il faut s'assurer qu'il existe un controle de fin de boucle, pour chaque boucle, qui soit indépendant des param passée, sinon tu risques la boucle infinie et le prog .cgi tournera un bout de tps sur le serveur et ton hébergeur va pas apprécier
 
sol ecriture : il faut controler que les param correpondent effectivement a qque chose sous peine d'avoir une perte d'intégrité de la base et la planter. Perso j'ai mis en place plusieurs parades mais c'est un peu ong a expliquer ici, puis je suis encore en pahse de déboguage, mais ça verrouille fort :D

Reply

Marsh Posté le 30-09-2001 à 14:45:45    

et les symtomes ??
si ca depasse la taille du buffer, ca fait quoi ?! ( ca ne tient pas en compte les données supplementaires ?
 
comment qq un pourrais il lancer une commande system avec un cgi ?!un rapport avec '~' ??

Reply

Marsh Posté le 30-09-2001 à 15:48:04    

pour le title ou certains autre c'est en fait du a des trou de sécurité dans certaine verison d'OS de type unix. Il n'y pas de régle générale si ce n'est d'être exhaustif dans les caractères que tu autorises  
 
ok le début de la lecture d'un de mes script commence par (methode get)
 
data = getenv("QUERY_STRING" );
if(data == NULL)
{
 erreur = 101;
}
else
{
 ret = controle_taille(data);
 ret1 = controle_char(data);
 if((ret == 0) && (ret1 == 0))
 {
  change_et(data);
  if(sscanf(data,"Eudo=%s For=%s Cat=%s Dom=%s Inti=%s Numfor=%s Tri=%s LigQ=%s LigR=%s Dic=%s Rload=%",pseudo,forum,cate,domaine,intitule2,numfor,trifor,nbligne,nbligne2,nomdico,relod) != 11)
  {
   erreur = 102;
  }
  else
  {
 
--------------
controle_taille(data); permet de tester le nombre de para et la taille max de chaque para avant de faire un scanf. Image que la var Pseudo qui fait 25 char dans mon prog recoive un haine de 30 ! :( le prog va pas forcément planté mais merder ça c'est sur, il faut donc le faire avant un scanf
 
Controle_char(data) teste pour chaque var que letype de charactère qu'il contient correpond bien a ce qui est attendu. exemple, la variable numfor attend une chaine unqiuement avec des char numérique (0,...9) comme '00000034' imagine toi qu'elle recoive un '0000AZ45' il y a de forte chance qu'une des fonction de recherche de la base n'apprécie pas la subtilité de même que la fonction atoi.
 
une fois ces 2 fonction implémenté ça ira deja un peu mieux, mais ça ne résoud pas tout. par exemple un si un malin rempalce le numfor = 00000034 par un autre 00000045 qui existe aussi mais correspond a un forum (c'est jsute un exemple a toi de généraliser mon propos) il faut tester la cohérence vis a vis du reste des variables
 
 
Bon il existe effectivement une solution pour remplacer tous les param par un id=XXXXX en developpant 2 algo (lecture/ecriture) qui simule un ficher statique de taille infinie (le ficheir lui-meêm n'est pas de taille infifie c'est une ruse). mais il y une restriction ce qui fait que je ne l'utilise que dans un seul cas (mais bon).
 
en l'ID va changer a chaque affichage de la page or ça ça empeche a des gens de faire des liens vers ton site sur une page précise puisque l'Id change a chaque fois; c'est aussi génant pour les moteurs de recherche.

Reply

Marsh Posté le 30-09-2001 à 16:27:58    

ok je vois le genre, c vrai que c est important, car si le programme n a pas des bonnes entrées, il peut trifouiller la base de donnée n importe comment.
 
en ce qui concerne les caracteres a accepter ou pas, j ai fait une fonction qui remplace dans la query_string, les caracteres  
%EE pas leur equivalent ascii/html : &#xxx; donc y a pu de pb avec ca, enfin je crois.

Reply

Marsh Posté le 30-09-2001 à 23:06:49    

pour la sécurité,
 
tu connais la musique on a toujours un train de retard puisqu'on ne sait jamais de quel type sera la prochaine attaque; C'est comme avec les virus.  
 
je ne me suis pas géné pour faire quelques boucles complémentaires de restriction sur les valeurs des param passés dans les CGI car en C c'est très rapide.  
 
Mais le controle max doit etre fait sur les boucles qui utilisent des param du cgi (directement ou indirectemnt) comme condition d'arrete de la boucle et sur les cgi qui doivent faire des écritures dans la base.
 
a ce propos je te conseille la chose suivante dans le cas d'un formulaire d'écriture de données. essaye de faire un cgi qui ne s'occupe que de l'écriture en aucun cas en cas de prob l'internaute doit tombé dessus.
 
essaie aussi de faire un cgi qui centralise les messages d'erreur.
 
ASTUCE pour appeler un CGI a partir d'un CGI utilise ceci :
 
printf("Location:http://nom_du_site/cgi-bin/nom_du_cgi.cgi\n\n" );
 
location ne fonctionne que si tu n'as fait AUCUN affichage encore ni d'init d'affichage. a la fin le '\n\n' est impératif

 

[edtdd]--Message édité par Barbarella--[/edtdd]

Reply

Marsh Posté le 30-09-2001 à 23:22:40    

ok, merci du conseil, j ai capté ou ca posait pb :)
 
merci pour ton astuce d appelle de cgi, il faudra que je mette ce genre de truc au propre!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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