Ho inserito un guestbook nel mio sito, visto che nn sono pratico di asp volevo chiedervi un aiuto:
Ho capito leggendo varie discussioni che il codice mi da errore (too many task) perchè non uccido o chiudo le connessioni (nothing), mi potete scrivere dove devo ucciderle e con che sintassi? vi scrivo il codice grazie sareste molto gentili :
codice:
<%@LANGUAGE = JScript%>
<%
/*
Autore: Luca Ruggiero - http://www.lukeonweb.net
Fonte: freeAsp.it - http://freeasp.html.it
*/
// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
// QUESTA E' LA PASSWORD DI AMMINISTRATORE PER ELIMINARE MESSAGGI INDESIDERATI... CAMBIALAAAAAAAAAAAAAAA :-)
var admin_password = "mattorock78";
// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
/*
ASPETTI DELLA CONFIGURAZIONE DELL'APPLICAZIONE NON CONTEMPLATI NEI SINGOLI PASSAGGI DI CODICE
Pur trattandosi di un semplice Guestbook, questo singolo file consente di effettare
tutte le operazioni possibili. A tal proposito è necessario puntualizzare alcune cose:
1. E' importante, qualora dovessi decidere di rinominare questo file,
modificare tutti i punti in cui si fa riferimento al file guestbook.asp
sostituendo col nome del file che hai utilizzato per la rinomina.
2. La grafica è personalizzabile in tutti i minimi particolari,
ma è importante non confondere alcuna condizione del codice Asp
evitando che generino errori.
Gli altri punti cardine dell'applicazione sono contemplati seguendo i vari passi del codice.
*/
// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Response.Buffer = true;
// APRO LA CONNESSIONE VERSO IL DATABASE
// SE SUL TUO SERVER HAI NECESSITA' DI SPOSTARE IL DATABASE IN UNA CARTELLA DI SISTEMA DEDICATA
// DEVI MODIFICARE IL PERCORSO NELLA PORZIONE DI CODICE Server.MapPath("percorso/guestbook.mdb")
var connessione = new ActiveXObject("ADODB.Connection");
var stringa = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guestbook.mdb");
connessione.Open(stringa);
// UTILIZZEREMO UN SOLO FILE PER ESEGUIRE TUTTE LE OPERAZIONI POSSIBILI
// INSERIMENTO DEI MESSAGGI, VISUALIZZAZIONE DEI MESSAGGI, CANCELLAZIONE DI MESSAGGI DA PARTE DELL'AMMINISTRATORE, ECC...
// QUINDI DICHIARO UNA VARIABILE QUERYSTRING PER OTTENERE RISULTATI DIVERSI A SECONDA DEL LORO VALORE
var azione = new String(Request.QueryString("azione"));
// CONTO I MESSAGGI PREDENTI SUL DATABASE
var conta = connessione.Execute("SELECT COUNT(*) AS id FROM messaggi");
// EFFETTUO LA PAGINAZIONE PER MOSTRARE SOLO UN CERTO NUMERO DI MESSAGGI A VIDEO
// IN QUESTO CASO 10
var quanti = 10;
var Mostra = new ActiveXObject("ADODB.Recordset");
Mostra.Open("SELECT * FROM messaggi ORDER BY id DESC",connessione,1);
var pagina = parseInt(Request.QueryString("pagina"));
if (isNaN(pagina) || pagina < 1) pagina = 1;
if (!Mostra.EOF)
{
Mostra.PageSize = quanti;
Mostra.AbsolutePage = pagina;
}
var i = 0;
// IMPOSTO IL COLORE DI SFONDO DELLE CELLE CHE CONTENGONO I MESSAGGI
var colore = 0;
%>
<html>
<head>
<title>Guestbook</title>
<link rel="stylesheet" type="text/css" href="guestbook.css">
</head>
<body scroll=yes>
<h2><font face="sans-serif">Guestbook</font></h2>
<table class="MODULO" width="500" align="center" cellpadding="3" cellspacing="0">
<form name="guestbook" method="post" action="guestbook.asp?azione=Inserisci">
<tr>
<td width="150">Nome</td>
<td width="350"><input type="text" name="nome" maxlength="50" style="width: 100%;"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email" maxlength="50" style="width: 100%;"></td>
</tr>
<tr>
<td>Homepage (opzionale)</td>
<td><input type="text" name="homepage" maxlength="50" style="width: 100%;" value="http://"></td>
</tr>
<tr>
<td>Titolo</td>
<td><input type="text" name="titolo" maxlength="70" style="width: 100%;"></td>
</tr>
<tr>
<td colspan="2">Messaggio</td>
</tr>
<tr>
<td colspan="2"><textarea name="messaggio" style="width: 100%; height: 100px;"></textarea></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" value=" Firma il Guestbook "></td>
</tr>
</form>
</table>
<p align="center">Ci sono <%=conta("id")%> messaggi</p>
<%
if (azione == "undefined")
{
%>
<table width="500" align="center" cellpadding="3" cellspacing="0">
<%
// MOSTRO I MESSAGGI A VIDEO
if (Mostra.EOF)
{
Response.Write("
Non ci sono messaggi...</p>");
}
else while (!Mostra.EOF && i<quanti)
{
%>
<tr>
<td bgcolor="#<%colore%2 == 0 ? Response.Write("FFFFFF") : Response.Write("EEEEEE")%>" style="border-bottom: Dashed 1px #CCCCCC;">
<font color="#800000"><%=Mostra("titolo")%></font><%Session("amministratore") == "OK" ? Response.Write(" (<a href=\"guestbook.asp?azione=Cancella&id=" + Mostra("id") + "\">cancella</a>)") : Response.Write("")%>
Autore: "><%=Mostra("nome")%>
Data: <%=Mostra("data")%> ore <%=Mostra("ora")%>
<%=Mostra("messaggio")%>
<%Mostra("homepage") == "http://" || Mostra("homepage") == "" || Mostra("homepage") == "undefined" ? Response.Write("") : Response.Write("
<a href=\"" + Mostra("homepage") + "\" target=\"_blank\">" + Mostra("homepage") + "</a>")%>
</td>
</tr>
<%
i++;
colore++;
Mostra.MoveNext();
}
%>
</table>
<%
}
else if (azione == "Inserisci")
{
// RECUPERO I DATI DAL MODULO PER EFFETTUARE LA REGISTRAZIONE
var nome = new String(Request.Form("nome"));
var email = new String(Request.Form("email"));
var homepage = new String(Request.Form("homepage"));
var titolo = new String(Request.Form("titolo"));
var messaggio = new String(Request.Form("messaggio"));
// ESPRESSIONE REGOLARE PER LA VERIFICA DELL'INDIRIZZO EMAIL
var verifica = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
// CREO LA DATA
var oggi = new Date();
var data = oggi.getDate() + "/" + (oggi.getMonth() + 1) + "/" + oggi.getFullYear();
var ora = oggi.getHours() + ":" + oggi.getMinutes();
// VALIDAZIONE DEI DATI INSERITI DALL'UTENTE
var errore = "guestbook.asp?azione=errore&codice=";
if (nome == "" || nome == "undefined" || nome.charAt(0) == " ")
{
Response.Redirect(errore + "1");
}
else if (!verifica.test(email))
{
Response.Redirect(errore + "2");
}
else if (titolo == "" || titolo == "undefined" || titolo.charAt(0) == " ")
{
Response.Redirect(errore + "3");
}
else if (messaggio == "" || messaggio == "undefined" || messaggio.charAt(0) == " ")
{
Response.Redirect(errore + "4");
}
else
{
var r_messaggio = messaggio.replace(/</g, "<");
var rr_messaggio = r_messaggio.replace(/>/g, ">");
var rrr_messaggio = rr_messaggio.replace(/&/g, "&");
var rrrr_messaggio = rrr_messaggio.replace(/\n/g, "
");
// CASO IN CUI TUTTE LE CONDIZIONI SONO STATE SODDISFATTE
// QUINDI PROCEDO CON LA REGISTRAZIONE DEL MESSAGGIO
var recordset = new ActiveXObject("ADODB.Recordset");
recordset.Open("messaggi",connessione,3,3);
recordset.AddNew();
recordset("nome") = nome;
recordset("email") = email;
recordset("homepage") = homepage;
recordset("titolo") = titolo;
recordset("messaggio") = rrrr_messaggio;
recordset("data") = data;
recordset("ora") = ora;
recordset.Update();
recordset.Close();
recordset = nothing;
Response.Redirect("guestbook.asp");
}
}
else if (azione == "errore")
{
// GESTIONE DEI MESSAGGI DI ERRORE
var codice = parseInt(Request.QueryString("codice"));
var correggi = "<p align=\"center\"><input type=\"button\" value=\"Correggi\" onClick=\"window.history.back()\">";
if (codice == "1")
{
Response.Write("<p class=\"ERRORE\">Inserisci il tuo nome per favore</p>" + correggi);
}
else if (codice == "2")
{
Response.Write("<p class=\"ERRORE\">Inserisci la tua email per favore</p>" + correggi);
}
else if (codice == "2")
{
Response.Write("<p class=\"ERRORE\">Inserisci la tua email per favore</p>" + correggi);
}
else if (codice == "3")
{
Response.Write("<p class=\"ERRORE\">Inserisci il titolo del messaggio favore</p>" + correggi);
}
else if (codice == "4")
{
Response.Write("<p class=\"ERRORE\">Inserisci il corpo del messaggio favore</p>" + correggi);
}
else
{
Response.Redirect("guestbook.asp");
}
}
else if (azione == "Login")
{
// LOGIN PER L'AMMINISTRATORE
var password = new String(Request.Form("password"));
if (password == admin_password)
{
Session("amministratore") = "OK";
}
Response.Redirect("guestbook.asp");
}
else if (azione == "Logout")
{
// LOGOUT PER L'AMMINISTRATORE
Session.Abandon();
Response.Redirect("guestbook.asp");
}
else if (azione == "Cancella")
{
// EFFETTUO LA CANCELLAZIONE DEL MESSAGGIO (SOLO SE AUTENTICATO)
if (Session("amministratore") != null)
{
var id = parseInt(Request.QueryString("id"));
connessione.Execute("DELETE * FROM messaggi WHERE id LIKE '" + id + "'");
}
Response.Redirect("guestbook.asp");
}
else
{
Response.Redirect("guestbook.asp");
}
%>
<p align="center">
<%
// CREO LA BARRA DI NAVIGAZIONE PER VISITARE "TUTTE LE PAGINE" CONTENENTI I VECCHI MESSAGGI
for (var x=0; x<Mostra.PageCount; x++)
{
if (pagina == (x + 1))
{
Response.Write("[" + (x + 1) + "] ");
}
else
{
Response.Write("[<a href=\"guestbook.asp?pagina=" + (x + 1) + "\">" + (x + 1) + "</a>] ");
}
}
%>
</p>
<div align="center">
<a href="rientro.swf" target="_self"><font face="sans-serif">Torna alla
Home Page</font></a>
</div>
<p align="center">
<form name="login" method="post" action="guestbook.asp?azione=<%Session("amministratore") == null ? Response.Write("Login") : Response.Write("Logout")%>">
<%if (Session("amministratore") == null) {%>
<input type="password" name="password">
<%}%>
<input type="submit" value="<%Session("amministratore") == null ? Response.Write("Login") : Response.Write("Logout")%>">
</form>
</p>
</body>
</html>
<%connessione.Close()%>