5177 sujets

Le Bar du forum

Bonjour,

je poste ce sujet pour vous faire part d'un programme que j'ai créé au départ pour moi mais qui peut servir à tous ceux qui ont un site web sans php ni d'autres langages serveur.
Il sert a inclure un grand nombre de fichiers textes dans un autre pour créér des pages html.

Vous pouvez le télécharger à cette adresse.

J'attend vos critiques...

PS : le site n'a rien a voir avec le programme.
Modifié par the_penguin (07 Aug 2005 - 18:57)
Salut,

Merci, mais tu sais, avant de telecharger un ".exe", je voudrais en savoir plus... même sans être parano... pas de lien sur un site qui décrit un peu plus ce programme?


a+
ben en fait c'est un programme qui sert a remplacer le "include" du php.

par exemple on a un fichier design.htm :

<html>
<head>
<title>exemple</title>
<style>...</style>
</head>
<body>
<div id="main">
    <div id="menu">
        <a href="#">lien</a>
        <a href="#">lien</a>
        <a href="#">lien</a>
    </div>
    <div id="content">
        <!-- d'habitude ici on a un truc du genre <?php include("fichier1.ini.php"); ?> -->
    </div>
</div>
</body>
</html>

eh bien à la place de l'include php le programme il va inclure tous les fichier txt d'un dossier et il va creer un page html "normale" avec que du html.

j'espère avoir été assez précis cette fois. (re le lien)

PS : pour les paranos voila le code source en c++ :


#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>

using namespace std;

int main()
{
    cout << "Bienvenue dans le logiciel HTML include." << endl << endl;
    getch();
    
    bool file_exists = false;
    while(!file_exists)
    {
        cout << "Entrez l'adresse du fichier r" << "\x82" << "f" << "\x82" << "rence. (exemple : c:\\fichier.txt)" << endl;
        char reference[_MAX_PATH];
        scanf("%s", &reference);
        
        FILE *pReference = fopen(reference,"r");
        if(pReference)
        {
            file_exists = true;
            cout << "\nVoici le contenu du fichier " << reference << " : " << endl << endl;
            while(!feof(pReference))
            {
                printf("%c",getc(pReference));
            }
            fseek(pReference, 0, SEEK_SET); // on replace le curseur au début
            int include_position;
            int i;
            bool ok = false;
            
            while(!ok)
            {
                cout << "\n\nEn quelle position voulez-vous inclure les fichiers ? ";
                scanf("%d",&include_position);
                cout << endl << endl;
                i = 0;
                while(!feof(pReference))
                {
                    i++;
                    if(i == include_position)
                    {
                         cout << "\n\n(+)\n\n";
                    }
                    
                    printf("%c", getc(pReference));
                }
                fseek(pReference, 0, SEEK_SET); // on replace le curseur au début
                
                cout << "\n\nVoulez-vous vraiment inclure les fichiers " << "\x85" << " l'endroit du symbole (+) ?" << endl;
                cout << "    1. oui" << endl;
                cout << "    2. non" << endl;
                
                if(getch() == '1') // le code ascii 49 correspond au caractère 1
                    ok = true;
            }
            char debut[include_position];
            char fin[i-include_position+1];
            
            fgets(debut, include_position, pReference);
            fgets(fin, i-include_position+1, pReference);
            
            fclose(pReference);
            
            cout << "\n\nEntrez le dossier contenant les fichiers .txt " << "\x85" << " inclure. (exemple : c:\\dossier)" << endl;
            char include_dir[_MAX_DIR]; // chemin vers le dossier + \*.txt
            char include_dir_txt[_MAX_DIR+6];
            scanf("%s", &include_dir);
            strcpy(include_dir_txt, include_dir);
            strcat(include_dir_txt, "\\*.txt"); // concaténation
            
            cout << "\n\nEntrez le dossier o" << "\x97" << " les fichiers html seront cr" << "\x82" << "\x82" << "s. (exemple : c:\\dossier)" << endl;
            char html_dir[_MAX_DIR];
            scanf("%s", &html_dir);
            
            cout << "\nInclusion en cours..." << endl << endl;
            
            HANDLE hFind;
            WIN32_FIND_DATA wData;
            int nb_include = 0;

            hFind = FindFirstFile(include_dir_txt, &wData);
            if(hFind != INVALID_HANDLE_VALUE)
            {
                if(wData.cFileName[0] != '.')
                {
                    while(FindNextFile(hFind, &wData))
                    {
                        nb_include++;
                    }
                }
            }
            char *include_name[nb_include];
            int counter = 0;
            
            hFind = FindFirstFile(include_dir_txt, &wData);
            if(hFind != INVALID_HANDLE_VALUE)
            {
                if(wData.cFileName[0] != '.')
                {
                    do
                    {
                        include_name[counter] = new char[strlen(wData.cFileName)+1];
                        strcpy(include_name[counter], wData.cFileName);
                        counter++;
                    }while(FindNextFile(hFind, &wData));
                }
            }
            FILE *pInclude;
            FILE *pHtml;
            char *html_path;
            char *include_path;
            for(int i=0;i<=nb_include;i++)
            {
                include_path = new char[_MAX_PATH];
                strcpy(include_path, include_dir);
                strcat(include_path, "\\");
                strcat(include_path, include_name[i]);
                html_path = new char[_MAX_PATH]; // la longueur du nom d fichier html est la meme que celle du fichier txt (extension .htm)
                strcpy(html_path, html_dir); // copie du chemin du fichier .htm
                strcat(html_path, "\\");
                strcat(html_path, include_name[i]); // ajout du nom du fichier txt (concaténation)
                html_path[strlen(html_path)-3] = 'h'; //
                html_path[strlen(html_path)-2] = 't'; // changement de l'extension.
                html_path[strlen(html_path)-1] = 'm'; //
                
                pHtml = fopen(html_path,"w");
                fprintf(pHtml, "%s", debut);
                pInclude = fopen(include_path,"r");
                bool exit = false;
                char transfert;
                while(!exit)
                {
                    transfert = fgetc(pInclude);
                    if(feof(pInclude))
                        exit = true;
                    else
                        fputc(transfert, pHtml);
                }
                fclose(pInclude);
                fprintf(pHtml, "%s", fin);
                fclose(pHtml);
                delete[] html_path;
                delete[] include_path;
            }
            cout << "Inclusion termin" << "\x82" << "e." << endl << endl;
        }
        else
        {
            cout << "\nLe fichier " << reference << " n'a pas " << "\x82" << "t" << "\x82" << " trouvé." << endl << endl;
        }
    }
    getch();
    return 0;
}
[/i][/i]
Ben oui c'est mieux, lol, mais pas la peine d'afficher le code source, tu sais, une capture d'ecran montrant comment fonctionne le programme aurait suffit pour rassurer Smiley cligne , c'est un peu ça qui manquait: comment marche le programme...

ex: un menu.htm, et 100 fichiers.php contenant la fonction include pour charger le fichier htm. J'ai envie de retoucher au menu... je le retouche et ma retouche je la retrouverai sur les 100 fichiers sans y avoir touchés

Mais avec ce programme fort utile pour ceux dont l'hébergeur ne permet pas le php ou le fait payer si on veut s'en servir, comment cela se passe dans un tel cas?

j'y connais rien en C++ moi...

Smiley cligne

a+
Vajra a écrit :
ex: un menu.htm, et 100 fichiers.php contenant la fonction include pour charger le fichier htm. J'ai envie de retoucher au menu... je le retouche et ma retouche je la retrouverai sur les 100 fichiers sans y avoir touchés


pour ca, je suis désolé mais vu mon niveau en c++ ce ne sera pas faisable avant assez longtemps Smiley sweatdrop
T'as pas à être désolé, je crois que c'est pas faisable autrement qu'avec la fonction php...

Alors pour ceux qui ne peuvent utiliser php, comme tu le précisais, ton programme peut etre fort utile... t'inquiete...

a+
<troll> Pourrais-tu mettre un DocType à ton exemple ? Ainsi que dans le programme ? Cela me chagrine</troll>

Smiley langue
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html  xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>exemple</title>
<style>...</style>
</head>
<body>
<div id="main">
<div id="menu">
<a href="#">lien</a>
<a href="#">lien</a>
<a href="#">lien</a>
</div>
<div id="content">
<!-- d'habitude ici on a un truc du genre <?php include("fichier1.ini.php"); ?> -->
</div>
</div>
</body>
</html>

Smiley jap
Modifié par the_penguin (09 Aug 2005 - 08:28)
the_penguin a écrit :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


Dans un autre domaine, ça ira beaucoup mieux en n'inventant pas une DTD XHTML 1.1 Strict... qui n'a jamais existée Smiley cligne

Voir Les DTD HTML4.01 et XHTML1.0 : comment choisir ? pour une DTD XHTML1.0 stricte.

(XHTML1.1 existe, mais n'a pas de déclinaison stricte. Et ne serait pas appropriée ici)
Modifié par Laurent Denis (09 Aug 2005 - 08:41)
Bah t'inquiète l'erreur est humaine ...

Tu seras juste : fusillé pendu emasculé écartelé jusqu'a ce que mort s'en suive ... Smiley ravi
mauriz a écrit :
Euh, ce serait pas plus simple de faire un truc en PHP en ligne de commande ?

c'est surement beaucoup plus simple mais pour ceux qui n'ont pas accès au php... Smiley confus