area riservata asp

  • Creatore Discussione Creatore Discussione aumas
  • Data di inizio Data di inizio

aumas

Nuovo Utente
7 Nov 2008
11
0
0
Salve a tutti, sono nuovo del forum. Avrei una richiesta da fare:
-ho realizzato un sito con l'accesso con area riservata, vorrei però
che ogni utente iscritto nel database, entrasse in una pagina a lui dedicata!!Potete darmi una mano
Grazie a tutti!!!!
 
Quando crei il login immagino tu attivi una sessione, ad esempio:

Session("username")

Usa questa sessione (o anche altre, ad esempio con l'ID) per fare delle query.

Se sei sulla pagina profilo.asp, ad esempio, scriverei una query del tipo:

Recordset.Open "SELECT * FROM utenti WHERE username = '" & Session("username") & "'", Connessione, 1, 1

Cosa deve fare esattamente questa pagina dedicata?
 
Ciao Luke, queste pagine dedicate ad ogni utente, devono contenere solo dei dati personali, ad esempio delle tabelle con comunicazioni personali ecc..
 
Quel che sia.

Immagino che i dati dedicati agli utenti siano in una tabella e che ci sia, record per record, un riferimento all'utente a cui i dati sono dedicati: username o id.

Giusto?

Memorizzando in delle sessioni la username e/o l'id, usi la sessione come filtro di ricerca con una query tipo quella che ti ho mostrato nel precedente post.

Mi spiego?
 
Scusami, ma ti seguo poco, non sono molto pratico di linguaggio, ora ti posto il codice:
if (azione == "OK")
{
var username = new String(Request.Form("username"));
var password = new String(Request.Form("password"));
var username2 = username.replace(/'/g,"''");
var password2 = password.replace(/'/g,"''");
var Cn = new ActiveXObject("ADODB.Connection");
Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));
var Sql = "SELECT * FROM collemartino WHERE username = '" + username2 + "' AND password = '" + password2 + "'";
var EseguiLogin = Cn.Execute(Sql);
if (EseguiLogin.EOF)
{
Cn.Close();
Response.Write("ACCESSO NEGATO");
Response.End;
}
else
{
Cn.Close();
Session("username") = username;
with (Response)
{
Write("<p align='center'>");
Write("Benvenuto " + username + "!<br><br>");
Write("Clicca <a href='areaprivata.asp'>qui</a> per entrare!");
Write("</p>");

anche perchè ho un altro problema, se faccio puntare ad un altro database, cambiamo dunque il nome a Server.mapPath(...), tende sempre a farmi accedere con le password del database originale.
Non so se sono stato comprensibile
 
Ok, crei la sessione "username":

else
{
Cn.Close();
Session("username") = username;
with (Response)
...
...
...

NON devi puntare a nessun altro database.

Fammi capire una cosa: la pagina "personalizzata" che vuoi mostrare agli utenti, quali dati contiene? QUelli della collemartino a cui ti interfacci per il login?

var Sql = "SELECT * FROM collemartino WHERE username = '" + username2 + "' AND password = '" + password2 + "'";

Fammi sapere.
 
No, i dati da visualizzare li devo ancora inserire, sulla collemartino sono presenti password e username.
Io pensavo che ai 40 utenti circa presenti nel database, una volta fatto il login, si aprisse la loro pagina che indica degli avvisi, appuntamenti ecc..!Infatti mi chiedevo:devo fare una pagina per ogni utente giusto?!?!?

La sessione che mi hai indicato già e presente o sbaglio???Oppure ne devo inserire un'altra su ogni pagina personale??

Scusami ma sono un pò in difficoltà....grazie:)
 
Forse non mi spiego, o forse tu non riesci ad entrare in questa forma mentis e comprendere a pieno il problema e la struttura.

La sessione che ho indicato STA BENISSIMO dov'è, devi "solo" usarla per la query.

La tabella collemartino contine username e password, perfetto, facci il login e basta.

Adesso, vuoi creare degli annunci personalizzati utente per utente?

Ok; crea una tabella "annunci" con questi campi:

id (contatore)
username (testo)
titolo (testo)
annuncio (memo)

Inserendo l'annuncio, nel campo "username" andrai a scrivere l'username dell'utente che deve leggere l'annuncio, cosi, quando si logga, l'annuncio lo legge solo lui.

Nella pagina annunci.asp scriverai:

rs.Open "SELECT * FROM annunci WHERE username = '" & Session("username") & "'", cn, 1
If rs.EOF Then
Response.Write "Non ci sono annunci"
Else
While rs.EOF = False
Response.Write "<b>" & rs("titolo") & "</b><br>" & " & rs("") & "<br><br>"
rs.MoveNext
Wend
End If
rs.Close

Mi spiego adesso? :)
 
Scusa, con me ci vuole pazienza, sono un pò una capra
Credo di aver capito(almeno spero), ora ci provo.
Però così mi fa vedere i dati che inserisco nel database giusto??!!!
Se io invece volessi fargli aprire una pagina a parte che contenga(per ipotesi) delle immagini???
Grazie Luke:D
 
Stessa cosa, l'importante è che nel database imposti nella tabella da cui vuoi prendere i dati un campo dedicato all'username dell'utente che deve poter visualizzare i dati stessi.

Che questi dati siamo immagini, testi, anguille alla marmellata, non importa.

Prova e fammi sapere ;)
 
Luke prima di continuare il discorso, vorrei chiederti un grande favore, puoi controllarmi il codice???Perchè mi funziona a volte si e altre no, non capisco perchè. Mi dà errore interno del server quando non funziona.
Grazie:dipser:
<%@LANGUAGE = JScript%>
<%
var azione = new String(Request.QueryString("azione"));
%>


<html>
<head>
<title>Index</title>
<style type="text/css">
<!--
#Layer1 {
position:absolute;
width:780px;
height:166px;
z-index:1;
left: 99px;
top: -6px;
}
#Layer2 {
position:absolute;
width:780px;
height:42px;
z-index:2;
left: 99px;
top: 160px;
}
#Layer3 {
position:absolute;
width:780px;
height:388px;
z-index:1;
left: 0px;
top: 42px;
}
#Layer4 {
position:absolute;
width:780px;
height:40px;
z-index:3;
left: 99px;
top: 590px;
}
#Layer5 {
position:absolute;
width:538px;
height:386px;
z-index:1;
left: 239px;
top: 1px;
}
#Layer6 {
position:absolute;
width:225px;
height:74px;
z-index:2;
left: 108px;
top: 230px;
}
.Stile1 {
font-family: "Bodoni MT";
font-weight: bold;
color: #FFFFFF;
}
#Layer7 {
position:absolute;
width:110px;
height:27px;
z-index:4;
left: 246px;
top: -66px;
}
#Layer8 {
position:absolute;
width:109px;
height:26px;
z-index:4;
left: 367px;
top: -65px;
}
#Layer9 {
position:absolute;
width:106px;
height:25px;
z-index:1;
left: 267px;
top: -37px;
}
#Layer10 {
position:absolute;
width:110px;
height:25px;
z-index:2;
left: 398px;
top: -37px;
}
.Stile3 {font-family: "Copperplate Gothic Bold"; color: #FFFFFF; }
#Layer11 {
position:absolute;
width:102px;
height:24px;
z-index:4;
left: 248px;
top: -64px;
}
#Layer12 {
position:absolute;
width:397px;
height:26px;
z-index:1;
left: 371px;
top: 6px;
}
.Stile5 {
font-family: "Arial Black";
color: #FFFFFF;
}
.Stile6 {
font-family: "Arial Black";
color: #FF6633;
}
-->
</style>
</head>
<body>
<%
if (azione == "OK")
{
var username = new String(Request.Form("username"));
var password = new String(Request.Form("password"));
var username2 = username.replace(/'/g,"''");
var password2 = password.replace(/'/g,"''");
var Cn = new ActiveXObject("ADODB.Connection");
Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));
var Sql = "SELECT * FROM utenti WHERE username = '" + username2 + "' AND password = '" + password2 + "'";
var EseguiLogin = Cn.Execute(Sql);
if (EseguiLogin.EOF)
{
Cn.Close();
Response.Write("ACCESSO NEGATO");
Response.End;
}
else
{
Cn.Close();
Session("username") = username;
with (Response)
{
Write("<p align='center'>");
Write("Benvenuto " + username + "!<br><br>");
Write("Clicca <a href='areaprivata.asp'>qui</a> per entrare!");
Write("</p>");
}

}
}
else
{
%>


<%
}
%>

<div id="Layer1">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="780" height="166">
<param name="movie" value="2308/2308/With_FL/Html/36.swf">
<param name="quality" value="high">
<embed src="2308/2308/With_FL/Html/36.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="780" height="166"></embed>
</object>
</div>
<div id="Layer2"><img src="2308/Barramenu.gif" width="780" height="42">
<div id="Layer3"><img src="2308/sfondosito.gif" width="780" height="388">
<div id="Layer5"><img src="2308/sfondotot.gif" width="538" height="386">
<div id="Layer10">
<div align="center" class="Stile3">Foto</div>
</div>
<div id="Layer9">
<div align="center" class="Stile3">Contatti</div>
</div>
</div>
</div>
</div>
<div id="Layer6">
<form method="post" action="login.asp?azione=OK">
<span class="Stile1">Username</span>
<input type="text" name="username" border="2" style="border-bottom-color:#000000">
<div class="Stile3" id="Layer11">
<div align="center">Home</div>
</div>
<div class="Stile3" id="Layer8">
<div align="center"></div>
</div>
<span class="Stile1">Password</span>
<input type="password" name="password" border="2" style="border-bottom-color:#000000">
<input name="submit" type="submit" style="background-color:#FAA500" value="Login" class="Stile1">
</form>
</div>


<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="Layer4"><img src="2308/barrabasso.gif" width="780" height="40">
<div id="Layer12"><span class="Stile5"></span><span class="Stile6"></span> <span class="Stile1">Via Don Minzoni - </span></div>
</div>
<p>&nbsp;</p>

</body>
</html>
 
Ciao Luke,
ho provato a fare i passaggi che mi avevi detto, inserendo il codice che mi hai scritto,
ma mi da errore sulla riga della query.
PS: pensavo di averlo scritto all'inizio,invece no, di ASP nn capisco molto, quindi mi trovo un pò incasinato:crying:
Ciao e grazie
 
La riga è questa:


Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));

PS:io la inserisco nel tag <body> <%..........&><7body>
 
Ecco l'errore:

HTTP 500.100 - Errore interno del server - errore ASP
Internet Information Services

--------------------------------------------------------------------------------

Informazioni tecniche (per il personale del supporto tecnico)

Tipo di errore:
Errore di compilazione di Microsoft VBScript (0x800A0401)
Prevista fine istruzione
/annunci.asp, line 12, column 89
Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));
 
Si, anche perchè altri codici in js scriptme li fa vedere. Ho riprovato e ho notato che ora mi scrive questo errore:

Informazioni tecniche (per il personale del supporto tecnico)

Tipo di errore:
Errore di run-time di Microsoft VBScript (0x800A01A8)
Necessario oggetto: ''
/annunci.asp, line 13
 

Discussioni simili