OBLog
Bienvenue dans OBLog, Visiteur
Lire les blogs auxquels vous êtes abonné(e) :
Excel | titres | 4 messages |
HTML pour débutants | titres | 14 messages |
Linux | titres | 2 messages |
Mode d'emploi de OBLog | titres | 4 messages |
Programmation en ASP | titres | 15 messages |
- Si vous êtes membre de la communauté EPFL, vous pouvez contribuer à ces blogs en vous authentifiant
- Les membres de l'IBETON peuvent créer leurs propres blogs et y inviter des membres de l'EPFL.
Contenu du blog Programmation en ASP
|
||||
|
O | |||
|
||||
|
||||
|
O | |||
Rédaction en cours L'ASP (Active Server Pages) est une technologie Microsoft, assez ancienne, pour créer des pages web à contenu dynamique. Elle a été en partie supplantée par ASPX (ou ASP.NET), qui est plus puissant mais moins facile d'accès. Avant d'utiliser ASP je programmais des pages web à contenu dynamique en Perl, un langage très puissant et très ecclectique mais qui m'obligeait à écrire l'intégralité des pages dans ce langage de programmation, alors même que ce que je désirais n'était peut-être que d'indiquer la date de dernière mise à jour d'un fichier sinon essentiellement statique. L'avantage de l'ASP, et des langages qui l'ont suivi, comme les nouvelles versions de Perl, ou PHP, ou encore le JSP de Sun, c'est de permettre de n'écrire dans un langage de programmation que la partie dynamique de chaque page, en laissant la partie statique en simple HTML, plus facile à créer et à modifier. C'est ainsi que la grande majorité des pages du site IBETON ont un contenu statique, rédigé en utilisant un éditeur HTML simple comme FrontPage, alors que le code ASP est responsable de créer la mise en page (colonnes multiples, charte graphique, mise en page pour impression) et les fonctionnalités avancées (date de mise à jour, coordonnées de l'auteur, tracking, etc.) |
||||
|
||||
|
O | |||
Il y a deux langages de programmation possibles pour ASP : VB Script et JScript. Je ne connais et n'utilise que VB Script. En fait, ce n'est pas un Basic très visuel, car il n'est pas doté d'un environnement de développement ( il y a des solutions à cela), mais il partage la même syntaxe que ce langage de Microsoft. Voici la réféfence des fonctionnalités disponibles dans cet environnement. Sans être complètement orienté-objet comme vb.net, c'est un langage puissant qui permet de manipuler toutes sortes d'objets :
|
||||
|
||||
|
O | |||
Gratuit... enfin presque. Il est très facile de programmer de l'ASP dans l'éditeur d'Excel. La seule chose qui ne soit pas disponible (et encore, je n'ai pas fouillé), c'est l'objet Response. En pratique, il suffit de remplacer la fonction Response.Write par une fonction ad hoc (je l'appelle Ecrire, ce qui est plus court à taper de toutes façons) et de l'utiliser pour afficher les résultats. Selon les cas, j'affiche une écriture à la fois, ou je la stocke dans une variable pour l'afficher en fin de processus ou encore j'écris le tout dans un fichier. Si on a besoin d'accéder à d'autres fonctions de l'environnement Web, ce n'est pas vraiment possible, mais cela concerne typiquement une petit partie du code, qui doit, elle être développée et testée directement sur un serveur Web. Ce qui est super, c'est de pouvoir regarder ses variables (surout les tableaux) en ligne, et d'explorer les divers objets. On gagne un temps fou si on développe des choses compliquées. Pour les choses simples, je fais le tout à la main dans FrontPage ou Notepad, c'est plus rapide et je combats les bugs en programment de manière très incrémentelle et en testant à chaque étape avant de passer plus loin. |
||||
|
||||
|
O | |||
C'est probablement l'objet le plus utile à long terme, car il permet l'accès à des bases de données, non seulement pour les lire mais également pour y écrire et même pour les créer et les modifier plus profondément (création de nouvelles tables par exemple). L'association PHP-MySQL a fait énormément pour populariser le langage PHP pour la création de pages web dynamiques incluant des données dynamiques, mais l'association ASP-ADO est plus ancienne, très stable et permet d'accéder à toutes sortes de bases de données, puis que c'est seulement par le connecteur ODBC qu'elles diffèrent. Ce site très utile explique comment créer une connexion ODBC en direction de toutes sortes de bases de données : du simple fichier texte à une base SQL Server ou Oracle, en passant par des fichiers Excel. |
||||
|
||||
|
O | |||
Cet objet permet d'accéder à l'intégralité du système de fichiers sur le serveur. Il est à noter qu'il n'est pas possible d'accéder à des disques réseaux sur d'autres machines (il y a des moyens d'y parvenir, cependant). Il est très utile de pouvoir lire et créer des fichiers depuis une page web, par exemple pour noter les accès ou pour créer depuis de web des fichiers de configuration. Il n'est souvent pas nécessaire de recourir à une base de données pour des opérations très simples, comme par exemple lire une liste des utilisateurs autorisés à faire une opération. Un simple fichier texte placé dans un répertoire connu (par exmple là même où se trouve le fichier ASP) permet de gérer très simplement la sécurité. | ||||
|
||||
|
O | |||
Voici un petit morceau de code qui permet de simplement copier un fichier sur un autre. Sub copyFile(fromFile,toFile) Dim fso, MyFile Set fso = CreateObject("Scripting.FileSystemObject") Set MyFile = fso.GetFile(fromFile) MyFile.Copy (toFile) End Sub |
||||
|
||||
|
O | |||
... à compléter | ||||
|
||||
|
O | |||
C'est tout simple : il suffit de créer dans la fonction la matrice en question.
Si vous voulez retourner p. ex. la moyenne et les valeurs min et max d'une plage de cellulles reçues comme paramètre, voici le code correspondant :
|
||||
|
||||
|
O | |||
Cela faisait longtemps que je charchais comment faire cela, maintenant j'ai trouvé plusieurs solutions, toutes gratuites et fonctionnant de manière simple en ASP sans installation de contrôles supplémentaires. Voici celles que j'ai trouvées efficaces:
|
||||
|
||||
|
O | |||
(Ce texte a été repris depuis le site www.aspsmart.com)IIS6.0 prevents the upload of large files (+200Ko)For IIS6.0 users, the AspMaxRequestEntityAllowed property specifies the maximum number of bytes allowed in the entity body of an ASP request. If a Content-Length header is present and specifies an amount of data greater than the value of AspMaxRequestEntityAllowed, IIS returns a 403 error response. This property is related in function to MaxRequestEntityAllowed, but is specific to ASP request. Whereas you might set the MaxRequestEntityAllowed property to 1 MB at the general World Wide Web Publishing Service (WWW Service) level, you may choose to set AspMaxRequestEntityAllowed to a lower value, if you know that your specific ASP applications handle a smaller amount of data. Open your MetaBase.XML which is located in c:\Windows\System32\Inetsrv find the line AspMaxRequestEntityAllowed and change its valule from 204800 to 1073741824. This change does not require stopping IIS, but to make the Metabase.xml file write-able, you need to go to the IIS control panel, right click the server, select properties, and check the box that says "allow changes to MetaBase configuration while IIS is running". Note : the original page says to check off the option, which is incorrect. The default value is on, which means that there is no need to change anything there. Cette opération peut constituer un problème si on n'a pas accès à la métabase du serveur (chez un hébergeur). Il faut également noter que c'est un réglage global, valable pour tous les sites hébergés par un serveur... Sous IIS 7, c'est plus simple, comme le montre cet article. |
||||
|
||||
|
O | |||
Le problème est très similaire au précédent : on m'a signalé à plusieurs reprises qu'il n'était pas possible de télécharger de grands fichiers depuis l'extérieur de l'EPFL. A l'intérieur, on ne constate pas ce problème, probablement à cause de la façon dont IIS voit le monde. Toujours est-il que par défaut le plus grand fichier qui peut être téléchargé depuis le serveur web fait envoron 4 MB, ce qui de nos jours n'est pas grand chose... Voici comment remédier à ce problème en changeant une valeurs dans la base de registre. Ouvrir la métabase selon les indications de l'article ci-dessus, puis chercher la valeur AspBufferingLimit qui a pour valeur par défaut 4194304. Changer cette valeur pour quelque chose de plus grand, comme par exemple 41943040, environ 40 MB ce qui n'est pas si mal à l'heure actuelle. En fait, si on veut pouvoir télécharger des fichiers de taille indéterminée sans (trop) solliciter le serveur, il vaut mieux écrire les données par petites portions, en utilisant la méthode Read de l'objet Stream. C'est ce que j'ai fait dans la page Upload du site i-concrete. |
||||
|
||||
|
O | |||
Bien souvent, on désire mettre un document à disposition de l'utilisateur, mais, si le type de document est connu du navigateur (fichier texte, PDF, plusieurs types d'images, mais aussi selon les cas fichier Excel ou Word), le navigateur ouvrira directement le document. C'est bien, mais cela peut nécessiter des opérations que la plupart des utilisateurs ne savent pas (bien) faire. J'ai trouvé une référence qui permet de montrer une liste de fichiers, de l'afficher et de la faire télécharger par l'utilisateur (merci à ASP101. C'est vraiment pas mal, je vais voir comment implémenter cela dans le cadre des sites web de l'IS-BETON. |
||||
|
||||
|
O | |||
Si on désire faire cette opération, ce n'est pas directement possible en ASP, mais c'est possible en utilisant une fonction JavaScript tournant sur le serveur. Inutile de dire que je n'ai pas trouvé cela tout seul! Mais ça marche bien, sans effets secondaires apparents.
<script language=JavaScript RUNAT=SERVER> // This function decodes the any string // that's been encoded using URL encoding technique function URLDecode(psEncodeString) { return unescape(psEncodeString); } </script>Si on veut en plus supprimer les "+" qui sont ajoutés par URLEncode, on peut utiliser cette fonction similaire : <script language=JavaScript RUNAT=SERVER> // This function decodes the any string // that's been encoded using URL encoding technique function URLDecode(psEncodeString) { // Create a regular expression to search all +s in the string var lsRegExp = /\+/g; // Return the decoded string return unescape(String(psEncodeString).replace(lsRegExp, " ")); } </script>Source de cette information : Manohar Kamath |
||||
|
||||
|
O | |||
La redirection est utile notamment en cas de changement de nom d'un serveur web (par suite du changement de nom de l'unité, p. ex. !) Evidemment, la première solution à considérer est de simplement ajouter le nouveau site à la liste de adresses (host headers) reconnus par le serveur, et le tour est joué en un clin d'oeil. Mais cette approche a ses limites. Notamment parce que les deux sites continuent à exister simultanément. Un utilisateur qui a un lien vers l'ancien site pourra continuer à l'utiliser ad infinitum, et créera lui-même des raccourcis sur l'ancien-site qui fonctionneront aussi. Conséquence: l'ancien site aura tendance à ne jamais disparaître. La solution pour pousser à la disparition de l'ancien site est de créer des redirections vers le nouveau site: chaque fois que le serveur reçoit une demande pour une page de l'ancien site, il la redirige automatiquement sur la page coprrespondante du nouveau. Cela de manière transparente et instantanée (pas de page disant si vous n'êtes pas redirigé automatiquement dans 5 secondes, veuillez suivre le lien suivant...). Pour cela, il faut procéder de la manière suivante :
|