NoTrace Security Forum

NoTrace Security Forum
Home | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Utenti | Download | cerca | faq | RSS | Security Chat
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 Off-Topic
 Altre Discussioni
 asp + acess 2007
 Forum Bloccato
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

ascolipiceno
New Member

Città: ascoli piceno


44 Messaggi


Inserito il - 08/02/2007 : 09:34:49  Mostra Profilo
Salve
Volevo fare una pagina web per il mio sito intitolata libro degli ospiti usando asp+access ma non ci sono riuscito.
Ho seguito quanto segue :


GUEST.MDB
Anche in questo caso utilizziamo un database di Ms Access (97 o 2000) che dovrà contenere una tabella (di nome ‘guest’) con i seguenti campi:
o id (ovvero il campo contatore)
o nome (campo ‘testo’ che conterrà il nome del visitatore)
o cognome (campo ‘testo’ in cui, se inserito nel modulo, verrà memorizzato il cognome)
o email (campo ‘testo’ che conterrà il suo indirizzo email)
o homepage (campo ‘testo’ che conterrà in cui, se se inserito nel modulo, verrà memorizzato l’indirizzo del sito del visitatore)
o commenti (campo ‘memo’ in cui saranno inseriti i commenti del visitatore)
FIRMA.HTM
Questo è il modulo che il visitatore compila per lasciare un commento nel guestbook. Lo possiamo creare normalmente con qualsiasi editor html, avendo cura di inserire un form che faccia riferimento alla pagina ‘registra.asp’ con il metodo ‘post’.
Tale modulo dovrà contenere i seguenti campi:
o campo testo che chiameremo ‘form_nome’
o campo testo che chiameremo ‘form_cognome’
o campo testo che chiameremo ‘form_email’
o campo testo che chiameremo ‘form_homepage’
o campo testo a scorrimento che chiameremo ‘form_commenti’
Di tutti questi campi gli unici due che consideriamo obbligatori sono il campo ‘form_nome’ e il campo ‘form_commenti’
Il codice html di questa pagina potrebbe essere il seguente:
<html>
<body>
<form method="POST" action="registra.asp">
<p>Nome<br>
<input type="text" name="form_nome" size="20"></p>
<p>Cognome<br>
<input type="text" name="form_cognome" size="20"></p>
<p>Email<br>
<input type="text" name="form_email" size="20"></p>
<p>Homepage<br>
<input type="text" name="form_homepage" size="20"></p>
<p>Commenti<br>
<textarea rows="2" name="form_commenti" cols="20"></textarea></p>
<p><input type="submit" value="Invia" name="B1"><input type="reset" value="Reimposta" name="B2"></p>
</form>
</body>
</html>

FIRMATO.HTM
Una volta compilato il modulo viene caricata una pagina di conferma, 'firmato.htm' appunto.
Si tratta di un semplice file html che ringrazia il visitatore per aver firmato il nostro guestbook.
<p align="center">Grazie per aver firmato il nostro libro degli ospiti.</p>
<p align="center">Arrivederci!</>

REGISTRA.ASP
Una volta compilato il modulo presente nella pagina appena create, viene caricata la pagina ‘registra.asp’ che, innanzitutto prende i dati dal modulo (mediante la funzione ‘request.form’ che già abbiamo visto) e li memorizza nella relative variabili
<%
dim nome1
dim cognome1
dim email1
dim homepage1
dim commenti1
nome1 = request.form("form_nome")
cognome1 = request.form("form_cognome")
email1 = request.form("form_email")
homepage1 = request.form("form_homepage")
commenti1 = request.form("form_commenti")
A questo punto verifichiamo che siano stati compilati i campi ‘form_nome’ e ‘form_commenti’ del modulo stesso. In caso contrario carichiamo la pagina ‘errore.asp’ passandole il parametro ‘error’ (per il codice della pagina ‘error.asp’ si veda più sotto).
if nome1 = "" then
response.redirect("error.asp?error=1")
end if
if commenti1 = "" then
response.redirect("error.asp?error=2")
end if
Nel caso in cui invece le variabili nome1 e commenti1 non siano vuote (quindi i relativi campi del modulo sono stati compilati), controlliamo le altre variabili. Infatti abbiamo detto che i due campi citati sono gli unici obbligatori del form: se vuole, l’utente può segnalare il proprio cognome, la propria email e l’indirizzo del proprio sito. Se però non compila questi campi, le relative variabili che abbiamo appena creato saranna vuote.
Dato che non è possibile aggiungere un record contenente campi vuoti, occorre sostituire a tali campi vuoti un qualsiasi carattere: per convenzione useremo il simbolo '+'
if cognome1 = "" then
cognome1 = "+"
end if
if email1 = "" then
email1 = "+"
end if
if homepage1 = "" then
homepage1 = "+"
end if
Sempre grazie alla funzione ‘if... then... end if’ controlliamo che tali variabili non siano vuote. Nel caso in cui lo siano, le variabili assumeranno come valore il carattere ‘+’.
Ora creiamo la solita connessione con il database ‘guest.mdb’ che abbiamo memorizzato nella sottocartella ‘database’ del nostro web
Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database/guest.mdb")
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
Come già fatto in precedenza, selezioniamo i valori presenti nella cartella ‘guest’
rs.Open "select * from guest", conn, 3, 3
A questo punto creiamo un nuovo record all’interno di tale tabella mediante il comando
rs.AddNew
Ora scriviamo i dati prelevati dal modulo (e memorizzati nelle variabili) all’interno del database
rs.Fields("nome")=nome1
rs.Fields("cognome")=cognome1
rs.Fields("email")=email1
rs.Fields("homepage")=homepage1
rs.Fields("commenti")=commenti1
In questo modo nel campo ‘nome’ verrà inserito il valore preso dalla variabile ‘nome1’ (che a sua volta ha preso i dati dal campo ‘form_nome’ del modulo); nel campo ‘cognome’ inseriremo il valore della variabile ‘cognome1’ e così via...
Una volta terminata l’aggiunta dei dati aggiorniamo il database.
rs.update
Come tutti i guestbook che si rispettano anche noi vogliamo che, ad ogni aggiunta di un commento di un visitatore, ci venga inviata un’email contenente i dati inseriti nel guestbook stesso. In questo modo sapremo in tempo reale quando il nostro ‘libro degli ospiti’ viene firmato.
Per l’invio dell’email utilizzeremo il cosidetto Cdonts: nel caso in cui il vostro server non lo supporti dovrete ignorare questa parte e passare direttamente alla chiusura del database.
In caso contrario ecco come si presenta il codice da inserire
Dim email
Set email = CreateObject("CDONTS.NewMail")
email.From = email1
email.To = "tuo_indirizzo[No-Spam]email"
email.Subject = "Nuova firma sul guestbook"
email.MailFormat = 0
email.Body = commenti1
email.Send
set email = Nothing
Vediamo come è composto:
o Dim email: creiamo una variabile che chiamiamo appunto email
o email.From = email1: in questo modo l’indirizzo email inserito risulta come mittente del messaggio
o email.To = tuo_indirizzo_email : qui va inserito l’indirizzo a cui inviare l’email di segnalazione
o email.Subject = "Nuova firma sul guestbook": questo è l’oggetto dell’email che vi giungerà. Come vedete il testo deve essere racchiuso dalle virgolette doppie.
o email.MailFormat = 0: qui specifichiamo il formato dell’email (0 = solo testo; 1 = formato html)
o email.Body = commenti: questo è il testo dell’email, ovvero il commento del visitatore
o email.Send: ora inviamo l’email
o set email = Nothing: svuotiamo la variabile utilizzata
Una volta inviata l’email chiudiamo recordset e connessione.
RS.Close
Set RS=Nothing
conn.Close
Set conn=Nothing
Come utlima cosa carichiamo la pagina di conferma
response.redirect("firmato.htm")
%>
ERROR.ASP
Questa pagina viene caricata nel caso in cui il visitatore non abbia inserito il proprio nome o i propri commenti all’interno del modulo.
Come già abbiamo visto nella sezione ‘verifica di un modulo’, anche qui preleviamo il valore del parametro ‘error’ contenuto nella stringa di collegamento utilizzata per caricare tale pagina e ci regoliamo di conseguenza
<%
dim error1
error1 = request.querystring("error")
if error1 = "1" then
response.write("<font face=‘Verdana’ size=‘2’> <b>Attenzione!</b> <br>Non hai compilato il campo NOME!</font>")
end if
if error1 = "2" then
response.write("<font face=‘Verdana’ size=‘2’> <b>Attenzione!</b> <br>Non hai compilato il campo COMMENTI!</font>")
end if
%>
Una volta pronte le pagine per la ‘firma del libro degli ospiti’ non rimane che creare la pagina per consultarlo. Tale pagina avrà nome
LEGGI.ASP
Per la visualizzazione dei record del database ‘guest.mdb’ useremo un file ASP con paginazione, con dieci risultati per pagina (in modo da non appesantirne troppo la consultazione).
Riprendiamo lo stesso codice utilizzato nella precedente sezione ‘Paginazione’ (per la spiegazione del codice e i relativi commenti vi rimando alle pagine precedenti)
<!-- #INCLUDE FILE="adovbs.inc" -->
<%
Dim conn
'La solita variabile di connessione
Dim iPageSize
'Numero di record da visualizzare per ogni pagina
Dim iPageCount
'Numero di pagine totali che otteniamo dalla query
Dim iPageCurrent
'Pagina corrente
Dim strOrderBy
'Parametro in base a cui definire l'ordinamento
Dim strSQL
'Comando da eseguire per effettuare la ricerca
Dim RS
'Il nostro solito recordSet
Dim iRecordsShown
'Variabile usata per definire i record mostrati
Dim nome1
'Variabile in cui memorizziano il nome del visitatore che prendiamo dal database
Dim cognome1
'Variabile in cui memorizziamo il suo cognome
Dim email1
'Variabile in cui memorizziamo la sua email
Dim homepage1
'Variabile in cui memorizziamo l’indirizzo del suo sito
Dim commenti1
'Variabile in cui memorizziamo i commenti che ha inserito nel database
iPageSize = 10
'NUMERO DI RECORD MOSTRATI PER PAGINA!
If Request.QueryString("page") = "" Then
iPageCurrent = 1
Else
iPageCurrent = CInt(Request.QueryString("page"))
End If
If Request.QueryString("order") = "" Then
strOrderBy = "id"
Else
strOrderBy = Request.QueryString("order")
End If
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database/guest.mdb")
Set RS = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM guest ORDER BY " & strOrderBy & " DESC;"
RS.Open sql, conn, adOpenKeyset
RS.PageSize = iPageSize
RS.CacheSize = iPageSize
iPageCount = RS.PageCount
If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
If iPageCurrent < 1 Then iPageCurrent = 1
If iPageCount = 0 Then
Response.Write("<p align center><font face=‘verdana’ size=‘2’>Nessuno ha ancora firmato il mio Libro degli Ospiti. <br>Che ne diresti di essere tu il primo?</font></p>")
Else
RS.AbsolutePage = iPageCurrent
iRecordsShown = 0
Do While iRecordsShown < iPageSize And Not RS.EOF
La parte mostrata da questo punto fino a ‘iRecordsShown = iRecordsShown + 1’ viene ripetuta per dieci volte (ovvero per ogni record visualizzato).
Cominciamo a memorizzare nelle variabili le informazioni prelevate dal database
nome1 = rs("nome")
cognome1 = rs("cognome")
email1= rs("email")
homepage1= rs("homepage")
commenti1= rs("commenti")
%>
A questo punto cominciamo a mostrare i dati prelevati dal database. Dato che li abbiamo selezionati con ‘id DESC’ (ovvero in base al campo contatore decrescente), i commenti più recenti saranno visualizzati per primi.
Creiamo quindi una tabella in cui nella colonna a sinistra scriveremo ‘nome’, ‘cognome’, ‘email’, ‘homepage’, ‘commenti’.
Ricordiamo però che gli unici campi obbligatori sono ‘nome’ e ‘commenti’. Gli altri campi potrebbero essere vuoti: quindi facciamo in modo che le righe della tabella siano visualizzate solo se necessario.
Pertanto avremo sicuramente due righe (‘nome’ e ‘commenti’) e, in base alle scelte del visitatore, potremo avere anche le righe ‘email’, ‘email’ e ‘homepage’.
Per far questo utilizziamo ancora una volta la funzione ‘if... then... end if’, unita a ‘response.write’.
Come già abbiamo accennato, quest’ultima funzione serve sia a mostrare il contenuto di una variabile, sia a mostrare un testo a nostra scelta. Con opportuni accorgimenti (ovvero sostituendo le virgolette doppie con l’apice o apostrofo) possiamo fare in modo di visualizzare, all’interno del codice ASP, normale codice html, tra cui, appunto, le righe della tabella in questione.
Cominciamo a creare la prima riga della tabella in cui, nella prima colonna, scriviamo ‘Nome’ mentre nella seconda colonna visualizziamo il contenuto della variabile ‘nome1’.
<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td><font face = "verdana" size = "2"> Nome</font></td>
<td><font face = "verdana" size = "2" ><% = nome1 %></font></td>
</tr>
A questo punto, mediante la funzione ‘if... then... end if’, controlliamo che cognome1’ sia diverso da ‘+’: infatti quando il campo ‘form_cognome’ e gli altri campi non obbligatori del modulo sono lasciati vuoti, tali ‘vuoti’ sono colmati dal carattere ‘+’. Quindi se il visitatore ha inserito il proprio cognome, tale campo sarà diverso dal carattere ‘+’.
Se il cognome1 è diverso da "+" (if cognome1 <> "+") allora creiamo una seconda riga in cui scrivere, nella prima colonna la parola ‘Cognome’ mentre nella seconda colonna mostriamo il valore preso dal database e memorizzato nella variabile ‘cognome1’.
Nel caso in cui cognome1 = "+" questa parte di codice viene saltata e la riga della tabella non è nemmeno mostrata.
<%
if cognome1 <>"+" then
response.write("<tr><td width='50%'><font face = 'verdana' size = '2' >Cognome</font></td><td width=‘50%’><font face = ‘verdana’ size = '2' > ")
response.write(cognome1)
response.write("</font></td></tr>")
end if
Allo stesso modo per ‘email1’, aggiungendo però il fatto che tale email deve essere ‘cliccabile’, quindi deve avere un link del tipo
<a href="mailto:indirizzo[No-Spam]email[.com]">indirizzo[No-Spam]email[.com]</a>
Naturalmente ‘indirizzo[No-Spam]email[.com]’ è l’indirzzo email prelevato dal nostro database e che abbiamo memorizzato nella variabile ‘email1’.
Pertanto se email1<>"+" (quindi il visitatore ha inserito il proprio indirizzo email) avremo un'ulteriore riga della tabella contenente appunto l'email del visitatore.
if email1<>"+" then
response.write "<tr><td width='50%'><font face = 'verdana' size = '2' >Email</font></td><td width='50%'><font face = 'verdana' size = '2' ><a href='mailto:"&email1&"'>"& email1 &"</a></font></td></tr>"
end if
Sicuramente avrete notato che per mostrare l'indirizzo email ho utilizzato il consueto response.write.
In questo caso però la struttura è leggermente diversa: infatti anzichè fare un response.write per ogni variabile e per ogni pezzo di codice ho raggruppato tutto in un unica stringa.
Infatti apro le virgolette e comincio ad inserire il codice html che desidero sia visualizzato. Al momento di visualizzare il contenuto di una variabile, chiudo le virgolette (altrimenti vedrei il nome della variabile e non il suo contenuto), aggiungo l' & (in modo da non interrompere la stringa) e inserisco il nome della variabile. Se dopo la variabile voglio visualizzare altro codice dovrò riscrivere l' & seguita dall virgolette, quindi il codice e finalmente chiudo tutto con le virgolette.
Schematizzando avremo
response.write "testo" & variabile & "testo"
Per quanto riguarda invece l’indirizzo del sito del visitatore, avremo che il relativo link sarà nella forma
<a href="htt*://[www].indirizzo[.com]"> htt*://[www].indirizzo[.com]</a>
dove, anche in questo caso, ‘htt*://[www].indirizzo[.com]’ è prelevato dal database e memorizzato in ‘homepage1’.
Quindi se homepage1<>"+" (ovvero il visitatore ha inserito l’indirizzo del proprio sito) creiamo un'altra riga. Altrimenti passiamo direttamente alla visualizzazione die 'commenti'
if homepage1<>"+" then
response.write("<tr><td width='50%'><font face = 'verdana' size = '2' >Homepage</font></td><td width='50%'><font face = 'verdana' size = '2' > <a href='"& homepage1 &"' target='_blank'>"& homepage1 &"</a> </font></td></tr>"
end if
%>
Come ultima cosa visualizziamo i commenti che il visitatore ha inserito nel modulo. Dato che si trattava di un campo obbligatorio, la variabile ‘commenti1’ sarà necessariamente diversa da ‘+’, quindi inutile verificarla mediante la funzione ‘if... then... end if’.
Quindi il codice da inserire diventa
<tr><td width="50%"><font face= "verdana" size="2">Commenti</font></td>
<td width="50%"> <font face="verdana" size="2"><% = commenti1 %>
</table></font>
<p > </p>
A questo punto non rimane che spostarci al record successivo del nostro database e ripetere la procedura riportata. Fatto questo si chiude la connessione e si svuota il RecordSet
<%
iRecordsShown = iRecordsShown + 1
RS.MoveNext
Loop
End If
RS.Close
Set RS = Nothing
Conn.Close
%>
Creiamo ora i link per andare Avanti e Indietro
<%
If iPageCurrent <> 1 Then
%>
<a href="leggi.asp?page=<%= iPageCurrent - 1 %>&order=<%= Server.URLEncode(strOrderBy) %>"> Indietro</a>
<%
End If
%><br>
<%
If iPageCurrent < iPageCount Then
%>
<a href="leggi.asp?page=<%= iPageCurrent + 1 %>&order=<%= Server.URLEncode(strOrderBy) %>">Avanti</a>
<%
End If
%>
A questo punto il nostro ‘Libro degli ospiti’ è pronto

usando tutte le variabili del caso mi appare solo una maschera se voglio salvare la pagina asp

La pagina asp la creo con front page e access è 2007

Che cos'è sbagliato?


Grazie

Admin
Nazzareno Schettino Administrator


Città: Napoli


3195 Messaggi

Inserito il - 08/02/2007 : 11:06:27  Mostra Profilo
ha sbagliato a postare questo post OT ti sposto nella sezione OFF TOPIC

riguardo al problema hai caricato le pagine su un web server che supporti asp come iis?

ti chiede di scaricare la pagina .asp perché non sa interpretarla

ciao
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  

 Forum Bloccato
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
NoTrace Security Forum
© Nazzareno Schettino
RSS NEWS
Torna all'inizio della Pagina
Pagina generata in 0,25 secondi. TargatoNA | SuperDeeJay | Snitz Forums 2000