Newsgroup: it.comp.lang.delphi
Titolo: passaggio di un valore - D2600

Sto rivedendo un sito web sviluppato con D2006.
Avrei bisogno di consultare della documentazione sui passaggi di parametri
da una pagina ad un'altra...nel mio caso specifico, anche se un ripasso
generale non mi dispiacerebbe, dovrei inviare un dato (numerico, l'ID
dell'utente "pescato" dal database in seguito alla verifica di user e passw,
e quindi non presente fisicamente nel form) ad un'altra pagina web per
consentire la visualizzazione dei dati personali (allo scopo usavo una
variabile globale ma ora dovrei correggere questa leggerezza).
Conoscete link utili?
Forse ho cercato male ma su Borland, Delphi.About e Google non sono riuscito
a trovare nulla.
Grazie
Ciao
Valter

 da una pagina ad un'altra... [...]
E' sufficiente accodarli nell'indirizzo della pagina Web quando questa 
viene richiamata:
 
http://yourpage.aspx?par1=value1&par2=value2&par3=value3
Potrai leggerne i valori usando la proprietà /Request/ di tipo 
*HttpRequest* dell'oggetto /Page/ nel "code behind" della pagina.
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)
Inviato da X-Privat.Org - Registrazione gratuita 
http://www.x-privat.org/join.php

 *HttpRequest* dell'oggetto /Page/ nel "code behind" della pagina.
intanto ti chiedo se:
Request.Item['par1'] (che mi legge il valore corretto) potrebbe essere la
strada esatta...
ma mi resta un dubbio sulla protezione delle pagine...
se nella barra degli indirizzi sostituisco il valore di *par1* posso
visitare tranquillamente le pagine degli altri utenti
in realtą usando Server.Transfer sulla barra degli indirizzi non compare la
specifica della pagina sulla quale si viene reindirizzati ma a livello di
test, scrivendo
http://mypageweb/pagepersonal.aspx?par1=*IDrichiesto*
e cambiando *IDrichiesto* accedo a tutte le pagine...questo implicherebbe
che un utente smaliziato, se rileva *par1* o qualunque altra come variabile
di invio valore potrebbe visionare e modificare ogni pagina...
qualche suggerimento?
Ciao
Valter

 ma mi resta un dubbio sulla protezione delle pagine... [...]
E' ovvio che per questa esigenza devi inserire tu un controllo 
personalizzato. Se la pagina modifica i dati dell'utente che ha eseguito 
il login, ad esempio, ti basta memorizzarne l'ID per la sessione 
corrente (nell'oggetto /Session/) e usare quel valore quando è 
necessario ricavare dati dal DB e visualizzarli, senza fare uso di 
parametri nella pagina. Nel caso in cui i parametri siano necessari, 
ogni controllo per la visibilità che non rientri nei meccanismi di 
protezione incorporati in 
ASP.NET
, devi scrivere il codice di controllo 
appropriato.


 parametri nella pagina. [...]
In sostanza la pagina utente č la medesima per tutti ma cambiano i dati
visualizzati per ognuno di loro (dati che ricavo dal db all'accesso della
pagina stessa mediante l'ID che "mi porto dietro" dal momento del login).
L'oggetto Session mi incuriosisce e d'altra parte č questo il metodo che ho
utilizzato a suo tempo con Dreamweaver...se piů sessioni sono sovraponibili
(immagino) potrebbe essere il meglio...
mi puoi indicare dove trovare documentazione o nuovi appigli?
Grazie davvero
Ciao
Valter

 mi puoi indicare dove trovare documentazione o nuovi appigli?
Non ho ben chiaro a cosa ti riferisci con "sessioni sovrapponibili", ma 
l'oggetto *HttpSessionState* è quello che mantiene le informazioni di 
sessione.
Consulta la "Microsoft .NET SDK Documentation" per informazioni a riguardo.


 Non ho ben chiaro a cosa ti riferisci con "sessioni sovrapponibili [...]
una cosa presumibilmente scontata, dunque inutile...se piů utenti potevano
accedere contemporaneamente alla loro pagina personale  :-)
Ciao e grazie per le indicazioni.
Ora vedo
Valter

 Consulta la "Microsoft .NET SDK Documentation" per informazioni a
riguardo.
fatto e parrebbe funzionare...ma avrei bisogno di una precisazione:
io mi sono limitato a queste istruzioni:
subito dopo aver verificato il login recupero l'ID corrispondente dal db, lo
memorizzo nella Session e trasferisco l'utente alla pagina personale
findID := dsAdapt.Tables[0].Rows[i].Item[0].ToString;
Session.Item['mySession'] := findID.ToString;
Server.Transfer('pagePersonal.aspx');
al caricamento della pagina personale:
idSS := Session.Item['mySession'].ToString;
quindi recupero i dati dell'utente usando idSS e tutto pare corretto anche
con accessi multipli da piů macchine
Ma non occorre inizializzare in nessun modo Session? Quando faccio
riferimento a
Session.Item['mySession'] l'oggetto viene creato automaticamente?
Grazie
Ciao
Valter

 Session.Item['mySession'] l'oggetto viene creato automaticamente?
E' il framework che si occupa di tutto. Quando il client si collega, 
viene creata una sessione e ne viene memorizzato l'ID in un cookie 
restituito al browser stesso; navigando tra le pagine, l'invio del 
cookie con l'identificativo della sessione consente al server di 
recuperare le informazioni relative.
In 
ASP.NET
 esistono altre forme per indicare al sito l'ID della 
sessione, con diverse possibilità di integrazione, ma ci si potrebbe 
scrivere un libro a riguardo.
