[php/asp] sessionvars uitwisselen

Pagina: 1
Acties:

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 22:17

Pelle

🚴‍♂️

Topicstarter
Voor een schoolproject moeten we met een projectgroep een reeds bestaand basisontwerp uitwerken tot een detailontwerp en een werkend prototype. Methode: SDM / Yourdon. Het betreft (o.a.) een klantenregistratiesysteem voor een garage, allemaal niet zo heel erg boeiend, maar (in tegenstelling tot de voltijdopleiding) mogen wij als deeltijders zelf bepalen hoe wij de realisatie van dit geheel gaan aanpakken.

Er zijn een aantal alternatieven:
* al je vrije tijd die je nog over hebt, op school doorbrengen en met 3 of 4 man een brakke applicatie schrijven in Openroad op een Solarisbak. Geen optie: te tijdrovend aangezien niemand er ooit echt een grote applicatie mee heeft gebouwd, en daarnaast heeft ook niemand zin om z'n vrije avonden ook nog es op school te gaan doorbrengen.
* het werk op 1 iemand afschuiven die het thuis kan doen in VB. Ook geen optie; het is een 4-mans project en niet te doen om dit (de bouw vh prototype) alleen te realiseren.
* het werk verdelen over 2 of 3 man die in een taal die ze zelf goed beheersen de applicatie schrijven. De docent had zelf al aangegeven dat een webbased systeem nog nooit gedaan was en dat hij dat wel graag een keer wilde zien. Mooi, dat is dus een bijna zeker bonuspunt :)
In ieder geval, het enige probleem is dat 2 mensen (1 zeer goed, 1 matig) thuis zijn in ASP, en 1 goed in PHP. De korte tijd die er staat voor de realisatie van het project maakt het niet mogelijk voor een van de beide partijen om zich een andere taal eigen te maken; nu zal het niet wereldschokkend zijn om van de ene naar de andere scriptingtaal over te stappen, maar als dit allemaal moet gebeuren in je 'vrije' tijd, naast je werk en je andere schoolse bezigheden, is dat ook geen optie.
En dus is besloten dat er zowel ASP (vbscript) als PHP gebruikt gaan worden, onder een IIS-webserver. Dit is geen probleem, mits er vooraf goed wordt afgebakend wie zich waarmee bezig gaat houden.

Ok, genoeg achtergrond informatie, het komt er dus op neer dat er een applicatie geschreven gaat worden in 2 verschillende scriptingtalen. Er zullen echter een aantal zaken (zoals rechten en userid enzo) over en weer gestuurd moeten worden. En daar hadden we zelf wel een aantal ideeen over, maar wellicht dat er mensen zijn die er al ervaring mee hebben of misschien in kunnen zien wat een werkbare oplossing is en wat niet.

Dit is redelijk aannemelijk en niet zo heel erg moeilijk te doen:
* logingegevens in een cookie zetten, en die zowel met ASP als met PHP uitlezen.
* een tabel met sessions aanmaken en door met de querystring een sessionid mee te geven deze steeds uit de database op te vragen en daarvandaan weer de rechten te bepalen

Maar, het kan nog makkelijker, vooropgesteld dat het technisch haalbaar is. Daarom deze vragen:
* zijn sessionvars gewoon uitwisselbaar indien de sessions gewoon op dezelfde server worden bijgehouden (dus zonder sessionid mee te geven in de querystring)?
* is er een andere manier waarop we dit kunnen bereiken (ik kan me voorstellen dat IIS andere mogelijkheden tot user-authenticatie biedt, die zowel door PHP als ASP zijn uit te lezen).

Hmm, sorry voor het enigszins vage verhaal, maar ik hoop dat iemand er iets nuttigs over kan brullen :)

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Heel kort:

sessie slaan hun variablen op de server en geven de client alleen een sessie_id, die ie via het cookie oid teruggeeft.

Kun je dit mechanisme niet een beetje 'namaken' dmv van XMLbestanden? Dat moet zowel ASP als PHP begrijpen :)

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

(afgezien van het feit dat een applicatie bestaande uit 2 programmeertalen verre van ideaal is (op deze manier dan), toch maar een inhoudelijke reactie ;) )

Waarom verdeel je de taken op deze manier? Het is volgens mij makkelijker wanneer je bijvoorbeeld in ASP je bezig houdt met alle zaken die te maken hebben met sessie's etc, en dat je in PHP de zaken doet die geen aanspraak hoeven te maken op de sessies (of andersom). Als dit technisch mogelijk is uiteraard.

Wat ook een mogelijkheid is, misschien nog wel de mooiste, is dat je je eigen sessionhandler schrijft (voor php _en_ asp) waarbij je je sessies in de database vastlegd. Je kan er op deze manier makkelijker bij lijkt me, dan wanneer je je filesystem dit laat regelen (want volgens mij handelen PHP en ASP hun sessies anders af)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • gotcha
  • Registratie: Oktober 1999
  • Laatst online: 29-07 18:20
sessies tussen PHP- en ASP gebaseerde sites kunnen niet gedeeld worden. zelfde geldt voor ASP en ASP.NET; de sessie-gegevens worden op de server in de geheugenruimte van het ASP, ASP.NET, PHP proces bewaard en er is dus geen mogelijkheid om deze gegevens op te vragen vanuit een ander proces.
in de meeste gevallen kun je wel cookies delen tussen verschillende omgevingen (zolang alles maar binnen hetzelfde domein blijft), echter cookies lijken me niet de beste oplossing voor opslag van meer data als een paar ID's ofzo.
ik zou in dit geval kiezen voor identificatie van de gebruiker via cookie, overige sessie-gegevens opslaan in een sessie tabel in je database en verdere informatie via querystring of form doorgeven

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 02 april 2002 22:22 schreef gotcha het volgende:
ik zou in dit geval kiezen voor identificatie van de gebruiker via cookie, overige sessie-gegevens opslaan in een sessie tabel in je database en verdere informatie via querystring of form doorgeven
Waarmee je dus een sessie-handler voor php en asp hebt ;)
Een sessie-systeem is niet perse datgene wat je pakketje aanbiedt natuurlijk.
* zijn sessionvars gewoon uitwisselbaar indien de sessions gewoon op dezelfde server worden bijgehouden (dus zonder sessionid mee te geven in de querystring)?
Met een eigen "sessie systeem" kan alles :)
Data in de DB dumpen en/of op de harddisk en uitlezen met asp en php.
* is er een andere manier waarop we dit kunnen bereiken (ik kan me voorstellen dat IIS andere mogelijkheden tot user-authenticatie biedt, die zowel door PHP als ASP zijn uit te lezen).
Het voldoet in alle gevallen nog steeds aan de HTTP-specs, maar als je een eigen sessie systeem hebt hoef je alleen de cookies in je beide omgevingen uit te lezen.
Nadeel is dat je op deze manier al veel tijd kwijt bent met dat schrijven van die sessie-zaken :{

Als je echt weinig tijd hebt kan je wellicht die 2 asp-ers hun asp werk laten doen en de andere mensen andere punten laten oppakken (optimalisatie van de DB etc)


Eventueel kan je nog wat anders doen, de backend kan je natuurlijk in de ene taal maken en de frontend in de andere.
Als dat soort zaken niet relevant zijn kan je nog kijken of je wat met de tip kan die al genoemd wordt om alle "niet sessie pages" in de ene en de rest in de andere taal te maken.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 22:17

Pelle

🚴‍♂️

Topicstarter
Het is inderdaad niet echt een optimale situatie, maar van alle alternatieven wel degene met het minste nadelen :)

In een van beide talen zal dus een login-systeem gemaakt moeten worden, waarna er een cookie geset wordt met daarin de userid (of nog mooier maar wel omslachtiger: sessionid). Vervolgens zal er per pagina informatie uit de database gehaald moeten worden.

Er zullen geen zaken zijn die buiten sessionzaken zullen vallen, aangezien het gaat om een administratief systeem dat per scherm moet bepalen of de ingelogde user een overzicht mag genereren of gegevens mag muteren. Onderverdelen in sessionhandling / nonsessionhandling heeft dus geen zin.

Als ik het goed begrijp zijn cookies dus wel gewoon uitwisselbaar? Zo ja, dan zullen we het daar maar mee moeten doen en per taal een rechten-handler moeten schrijven.

/edit
Andere / betere suggesties blijven natuurlijk welkom :)

  • Belgar
  • Registratie: Januari 2002
  • Laatst online: 17-08 22:31

Belgar

Archmaster ranzige code..

betere oplossing heb ik niet.. wel een aantal alternatieven.

Indien cookies aanstaan op be browser kan de ASP sessionID uitgelezen worden via het cookiefield. Hiermee kan je in principe niets in PHP, maar deze waarde kan je wel uitlezen /vergelijken uit een database. Scheeld weer het volledig nieuw schrijven van een sessionhandler.

Tweede iets waar ik wel eens gebruik van heb gemaakt is filteren op de webserver zelf. als je al je PHP content alleen 'include' in ASP, zou je alle directe aanroepen naar PHP kunnen blocken via een filter en zodoende je security alleen via ASP laten lopen.. (andersom kan natuurlijk ook). In mijn situatie was het voor de combinatie CGI/ASP, maar ook wel toepasbaar voor ASP / PHP, denk ik.

...Als het maar werkt


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Je kan ook eventueel een webservice bouwen in ASP die alle authenticatie regelt en de mutaties doorvoert, vervolgens ga je de webservice vanuit de php omgeving aanspreken.

Voordeel is dat je onafhankelijk van elkaar kan ontwikkelen omdat het gescheiden systemen zijn.
Pagina: 1