Toon posts:

[ASP] globale variabelen regel?!

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe ga je om met globale variabelen. Ik heb bijvoorbeeld een website waar een globale variabele wordt gebruikt voor het pad naar de database. Deze moet ook globaal gedeclareerd worden want als de website naar een andere server gaat moet dat met het wijzigen van één 'config' file.

Nu lijkt het bijna ondoenlijk om iedere globale variabele die je in een functie gebruikt mee te sturen naar deze functie als parameter.

Ik denk eraan om het gebruik van globale variabelen in een functie toe te staan.

Is er een andere wel nette oplossing voor dit probleem?

Verwijderd

De enige juiste oplossing om 'globale' variabelen te gebruiken in een website is het gebruik van 'Application-' en Session'-variabelen.

Application("ConnectionString") onthoudt SERVERSITE bijvoorbeeld een connectiestring naar een database en wordt op zo'n manier dus globaal gebruikt.

Session("ConnectionString") zou je ook kunnen gebruiken, maar deze wordt per bezoeker aangemaakt. Handiger is dus om dit te gebruiken om bijvoorbeeld een gebruiker continue op je site te identificeren; bijv. Session("UserName").

Veel succes!
:7

Verwijderd

Topicstarter
DAt weet ik. Wij gebruiken een andere method, dat is het gebruiken van een include file met alle globale variabelen. Alleen zodra je je globale variabele gebruikt in een functie, is je functie niet meer portabel naar bijvoorbeeld een applicatie die deze globale variabele niet heeft.

Hoe los je dat op. Stuur je altijd alle globale variabelen mee als parameter of wat??

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Je kan misschien voor dit soort zaken beter 1 globale include maken met daarin constanten, dit is tenminste de manier die wij gebruiken, we delen de include file op in 2 delen, 1 deel server onafhankelijk 1 deel server afhankelijk.

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 12:17

Basszje

Reisvaap!]

Global Vars moet je mee uitkijken . Nooit geen objecten en niet meer dan een paar (1,2 weinig in elk geval ) .

En bedenken :
Global.asa bestaan exploits voor om de source uit te lezen , dus uitkijken met wachtwoorden .

Ze vreten lekker veel memory

Application vars uiteraard nooit gebruiken voor client specifieke info :)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Op vrijdag 23 november 2001 11:26 schreef -NW het volgende:
DAt weet ik. Wij gebruiken een andere method, dat is het gebruiken van een include file met alle globale variabelen. Alleen zodra je je globale variabele gebruikt in een functie, is je functie niet meer portabel naar bijvoorbeeld een applicatie die deze globale variabele niet heeft.

Hoe los je dat op. Stuur je altijd alle globale variabelen mee als parameter of wat??
Op zo'n manier zijn het geen globale variableen meer, omdat je op elke nieuwe pagina-aanroep je variabelen declareert. Waarom gebruik je dan geen Application en Session-variabelen??? :?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08:12

Crazy D

I think we should take a look.

Ik heb voor dat soort dingen altijd een include filetje, waarin ook de connectie naar de db geopend wordt. Hoef ik altijd maar 1 file aan te passen. En omdat het mij in de rest van de code niet boeit waar die db staat (ik heb immers m'n OpenConnectie functie om de connectie te openen) hoef ik dat ook helemaal niet te weten.
(en is het dus ook geen globale variabele meer :)
En anders zou ik ze in een application variabele stoppen, maar ja, dat ding moet ergens gevuld worden, en je moet checken dat ie gevuld is en als ie leeg is weer vullen (server kan gereset zijn), al dat controlleren levert meer code op dan 1 include file waarin die gegevens gewoon staan.
Op vrijdag 23 november 2001 11:43 schreef typhon het volgende:
Op zo'n manier zijn het geen globale variableen meer, omdat je op elke nieuwe pagina-aanroep je variabelen declareert. Waarom gebruik je dan geen Application en Session-variabelen??? :?
Zie boven, en omdat (te veel) App en Session vars weer meer geheugen vreten (hoewel ik dat persoonlijk niet zo'n probleem vind, tenzij je complete objecten, of lappen tekst van weet ik het hoeveel karakters gaat opslaan).

Exact expert nodig?


Verwijderd

Op vrijdag 23 november 2001 11:49 schreef CrazyD_at_work het volgende:
Ik heb voor dat soort dingen altijd een include filetje, waarin ook de connectie naar de db geopend wordt. Hoef ik altijd maar 1 file aan te passen.
En anders zou ik ze in een application variabele stoppen, maar ja, dat ding moet ergens gevuld worden, en je moet checken dat ie gevuld is en als ie leeg is weer vullen (server kan gereset zijn), al dat controlleren levert meer code op dan 1 include file waarin die gegevens gewoon staan.

...en omdat (te veel) App en Session vars weer meer geheugen vreten (hoewel ik dat persoonlijk niet zo'n probleem vind, tenzij je complete objecten, of lappen tekst van weet ik het hoeveel karakters gaat opslaan).
Helemaal mee eens en ook ik heb wéér wat geleerd! :)

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 11-09 09:22
nee nee nee,

in je global.asa heb je een application object... een on_start en on_end methode. Hier declareer je je globale vars. Dit zijn dus omgevingsvars die voor alle toepassingen gelden. Als je bv

guestbook/
mail/

stel de global staat in de root dan... worden de var hierin gedefinieert altijd meegenomen op toepassingsniveau. Je kunt eenvoudig threaded programmeren door de lock en unlock methodes te gebruiken indien een toepasssing wijzigingen aan een global doet.


quite basic ASP

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08:12

Crazy D

I think we should take a look.

Op vrijdag 23 november 2001 13:42 schreef paulgielens het volgende:
nee nee nee,
Waar zei je nou precies nee tegen? :P
in je global.asa heb je een application object... een on_start en on_end methode. Hier declareer je je globale vars. Dit zijn dus omgevingsvars die voor alle toepassingen gelden. Als je bv
Kan, maar hoeft niet.
stel de global staat in de root dan... worden de var hierin gedefinieert altijd meegenomen op toepassingsniveau. Je kunt eenvoudig threaded programmeren door de lock en unlock methodes te gebruiken indien een toepasssing wijzigingen aan een global doet.
Klopt, maar die gelden dan dus voor alle sites die je hebt draaien, en dat wil je lang niet altijd (ik iig niet).
En daarnaast heb je de genoemde exploits waarmee je de global.asa kan lezen (die is wel makkelijk te voorkomen, maar moet je wel zelf de IIS kunnen configgen).
En daarnaast laat ik iemand liever alleen 1 include file met alleen gegevens voor zijn site wijzigen, dan de global asa waarin ook andere gegevens kunnen staan (ok bij wijze van dan, ik verander de boel liever gewoon zelf).
En er waren nog wat redenen om de global.asa niet te gebruiken maar die ben ik weer vergeten omdat ik het altijd standaart met een includeje doe (vergeet niet je includes wel .asp te noemen anders zijn ze gewoon te openen, tenzij je read rechten uitzet op je includes dir).

Maar op zich heb je wel gelijk, in je application_onstart event in de global.asa zou je idd anders de application variabele zetten.

Exact expert nodig?

Pagina: 1